[Perl] array in een array

Pagina: 1
Acties:

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Hoe kan je in Perl een array in een array stoppen? Kan dat uberhaubt wel?
Want:
Perl:
1
@arr = ("a", "b", ("c", "d", "e"))

levert hetzelfde op als
Perl:
1
@arr = ("a", "b", "c", "d", "e")

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02:26
Je zou een array reference kunnen gebruiken:

Perl:
1
2
@x = (4, 5);
@arr = (1, 2, 3, \@x);


Geen idee of dit de standaard manier is om dit op te lossen, though.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02:26
Volgens de Perl handleiding kan een array (net als een hash) uitsluitend scalars bevatten. Je kunt dus niet 'gewoon' een array in stoppen (want dat is geen scalar maar een array), maar wel een reference naar een array (want alle references zijn scalars).

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Snik snik... nee dat werkt niet...
Perl:
1
2
@x = (4, 5); @arr = (1, 2, 3, \@x);
print $arr[3];


Output:
ARRAY(0x1775638)

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02:26
Nee, maar dit werkt wel uitstekend:
Perl:
1
2
3
4
@arry = (1, 2, [3, 4, 5] );
  print $arr[2][1]; // print '4'
  $ref = $arr2;
  print @$ref; // print '345'


Zie ook perldoc perlref.

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Dankje, dit werkt inderdaad netjes. Nou heb ik nog een vraag.
Perl:
1
2
@arr = (1, 2, 3, [4, 5]);
print length($arr[3]);


Output: 16
whohoo! D'r staan maar 2 items in... hoe kan ik dit *wel* goed doen? :D

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 24-08 21:59

TrailBlazer

Karnemelk FTW

wat zegt $#arr[3] krijg je de laatste index

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Phja, $#... die was ik vergeten

Perl:
1
2
@arr = (1, 2, 3, [4, 5]);
print $#arr[3];


OUTPUT: syntax error at D:\data\Proggen\perl\Noname1.pl line 4, near "$#arr["

AAH! Nou om ook wat eigen inzet te tonen, ik heb geprobeerd om met \$#arr[3] te doen, @#arr[3] (hoewel dat nooit kan, maar ach), \@#arr[3]... werkt allemaal niet.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02:26
$arr[3] is sowieso een reference, dus daarop length aanroepen gaat niet werken. Om je vraag te beantwoorden zou ik de genoemde manual page door moeten lezen. Als je dat nou zelf doet, dan kom je er dus ook wel achter.

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Hehe, keej ga ik doen... Bedankt zover!

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
www.perlmonks.com staan erg veel voorbeelden met betrekking tot dit soort vragen, ik ben zelf niet zo iemand die graag boeken leest, en zo een beetje alles wat ik in perl moet doen trek ik van die site af :)
Pagina: 1