Thread View: pl.comp.lang.perl
6 messages
6 total messages
Started by Krzysztof Osiecki
Thu, 25 Sep 1997 09:52
odpowiednik tablicy struktur
Author: Krzysztof Osiecki
Date: Thu, 25 Sep 1997 09:52
Date: Thu, 25 Sep 1997 09:52
15 lines
978 bytes
978 bytes
cześć mam taki kłopocik (bo na problem to za proste) chciałbym mieć coś na kształt rekordu powiedzmy takiego: ( nazwa => "jakiś string" wersja => "1.00a" ok => "y" ) i mieć tablicę takich rekordów, oraz możliwość dokładania do tej tablicy nowych. możliwość sortowania mile widziana. czytam dokumentację i czytam, ale nadal nie za bardzo mam wyobrażenie jak to zrobić, więc proszę o poradę. Krzysztof.
Re: odpowiednik tablicy struktur
Author: Mariusz Krukowski
Date: Thu, 25 Sep 1997 10:34
Date: Thu, 25 Sep 1997 10:34
29 lines
1376 bytes
1376 bytes
Krzysztof Osiecki wrote:
>
> cześć
>
> mam taki kłopocik (bo na problem to za proste)
>
> chciałbym mieć coś na kształt rekordu powiedzmy takiego:
>
> ( nazwa => "jakiś string"
> wersja => "1.00a"
> ok => "y" )
>
> i mieć tablicę takich rekordów, oraz możliwość dokładania do tej tablicy
> nowych. możliwość sortowania mile widziana. czytam dokumentację i czytam, ale
> nadal nie za bardzo mam wyobrażenie jak to zrobić, więc proszę o poradę.
>
> Krzysztof.
Tworzysz tablice rekordow @rekordy i dodajesz do niej referencje do
poszczegolnych rekordow:
$rekordref = { "nazwa" => "jakis string", "wersja" => "1.00a", "ok" =>
"y" };
push @rekordy, $rekordref;
....
foreach $rekordref (@rekordy)
{
print "Nazwa: ", $rekordref->"nazwa", "\n";
}
Re: odpowiednik tablicy struktur
Author: Piotr Auksztulewicz
Date: Thu, 25 Sep 1997 10:39
Date: Thu, 25 Sep 1997 10:39
7 lines
857 bytes
857 bytes
Mariusz Krukowski (kruk@it.pl) wrote:
: foreach $rekordref (@rekordy)
: {
: print "Nazwa: ", $rekordref->"nazwa", "\n";
: }
Tu jest maly blad. Powinno byc: $rekordref->{"nazwa"} ew. $rekordref->{nazwa}
Re: odpowiednik tablicy struktur
Author: Piotr Piatkowski
Date: Thu, 25 Sep 1997 10:50
Date: Thu, 25 Sep 1997 10:50
46 lines
2097 bytes
2097 bytes
Krzysztof Osiecki <krzycho@amba.matrix.com.pl> wrote:
: chciałbym mieć coś na kształt rekordu powiedzmy takiego:
: ( nazwa => "jakiś string"
: wersja => "1.00a"
: ok => "y" )
: i mieć tablicę takich rekordów, oraz możliwość dokładania do tej tablicy
: nowych. możliwość sortowania mile widziana. czytam dokumentację i czytam, ale
: nadal nie za bardzo mam wyobrażenie jak to zrobić, więc proszę o poradę.
Poczytaj sobie man perldsc:
perldsc - Perl Data Structures Cookbook
There are separate sections on each of the following:
o arrays of arrays
o hashes of arrays
o arrays of hashes
o hashes of hashes
o more elaborate constructs
A ogólnie, to czego potrzebujesz będzie wyglądać mniej więcej tak:
$dane = [ { nazwa => "zzz", wersja => "1.00", ok => "y" },
{ nazwa => "yyy", wersja => "1.01", ok => "y" },
{ nazwa => "xxx", wersja => "0.99", ok => "n" } ];
push @$dane, { nazwa => "aaa", wersja => "2.01", ok => "y" };
print $dane->[1]{nazwa};
print $dane->[0]{wersja};
# Sortowanie po nazwie:
foreach $rekord ( sort { $a->{nazwa} cmp $b->{nazwa} } @$dane ) {
print join( " - ", ( $rekord->{nazwa}, $rekord->{wersja}, $rekord->{ok} ) );
print "\n";
}
P.S. Jeżeli nie wiesz nic na temat referencji, to najpierw radzę
poczytać man perlref
--
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: odpowiednik tablicy struktur
Author: Mariusz Krukowski
Date: Thu, 25 Sep 1997 11:22
Date: Thu, 25 Sep 1997 11:22
11 lines
897 bytes
897 bytes
Piotr Auksztulewicz wrote:
>
> Mariusz Krukowski (kruk@it.pl) wrote:
> : foreach $rekordref (@rekordy)
> : {
> : print "Nazwa: ", $rekordref->"nazwa", "\n";
> : }
>
> Tu jest maly blad. Powinno byc: $rekordref->{"nazwa"} ew. $rekordref->{nazwa}
Racja, Sorry.
Re: odpowiednik tablicy struktur
Author: Krzysztof Osiecki
Date: Fri, 26 Sep 1997 13:54
Date: Fri, 26 Sep 1997 13:54
3 lines
646 bytes
646 bytes
dzięki :) Krzysztof.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads