🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
6 messages
6 total messages Started by Krzysztof Osiecki Thu, 25 Sep 1997 09:52
odpowiednik tablicy struktur
#558
Author: Krzysztof Osiecki
Date: Thu, 25 Sep 1997 09:52
15 lines
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
#559
Author: Mariusz Krukowski
Date: Thu, 25 Sep 1997 10:34
29 lines
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
#560
Author: Piotr Auksztulewicz
Date: Thu, 25 Sep 1997 10:39
7 lines
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
#562
Author: Piotr Piatkowski
Date: Thu, 25 Sep 1997 10:50
46 lines
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
#561
Author: Mariusz Krukowski
Date: Thu, 25 Sep 1997 11:22
11 lines
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
#563
Author: Krzysztof Osiecki
Date: Fri, 26 Sep 1997 13:54
3 lines
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