Schrift
[thread]6285[/thread]

push



<< >> 3 Einträge, 1 Seite
Gast Gast
 2004-05-24 11:06
#82654 #82654
Hallo,

ich versuche ein Element hinzuzufügen, aber der gute Befehl push klappt leider nicht wirklich. Was mache ich falsch?

Hier meine Zuweisung:
push @dateiinhalt, [@tmp_zeile];

Hierbei lese ich eine Datei aus und erhalte mit z.B. $dateiinhalt[0]->[0] Zugriff auf meine Elemente.

Hat jemand eine Idee, wie ich ein weiteres Element an die "Zeile" anhängen kann? Das z.B. $dateiinhalt[0]->[??]
?? war vorher als höchstes Element 10 und jetzt soll ein push gemacht werden und das 11 Elemente vorhanden sein.

Schon mal Danke, wenn mir jemand helfen kann!
kabel
 2004-05-24 11:19
#82655 #82655
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
also, @dateiinhalt ist ein AoA (Array of Arrays). dann hat das statement
Code (perl): (dl )
push @{ dateiinhalt[0] }, $whatever;

die bedeutung, dem ertsen Array in @dateiinhalt $whatever hinzuzufügen, und zwar an das ende.

dein beispielstatement macht auch etwas: es macht ein shallow-copy von @tmp_zeile und fügt diese neue referenz ans ende von @dateiinhalt.

Quote
kabel@kabel:~$ perl -MData::Dumper;
@AoA = ([1..4], [5..8]);
print Dumper (\@AoA);
push @AoA, [9];
print Dumper (\@AoA);
push @{ $AoA[0] }, [10];
print Dumper (\@AoA);

$VAR1 = [
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ]
];
$VAR1 = [
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9 ]
];
$VAR1 = [
[ 1, 2, 3, 4, [10]],
[ 5, 6, 7, 8 ],
[ 9 ]
];
kabel@kabel:~$
-- stefan
Crian
 2004-05-24 17:42
#82656 #82656
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=kabel,24.05.2004, 09:19]also, @dateiinhalt ist ein AoA (Array of Arrays). dann hat das statement
Code (perl): (dl )
push @{ dateiinhalt[0] }, $whatever;

die bedeutung, dem ertsen Array in @dateiinhalt $whatever hinzuzufügen, und zwar an das ende.[/quote]
da fehlt wohl noch ein ex-Klammeraffe:

push @{ $dateiinhalt[0] }, $whatever;


Edit: Jupp...

Code: (dl )
1
2
3
4
5
6
my @dateiinhalt = [[],[],[]];
my $whatever = 17.5;

push @{ dateiinhalt[0] }, $whatever;

#push @{ $dateiinhalt[0] }, $whatever;


liefert

Code: (dl )
1
2
Scalar value @{ dateiinhalt[0] better written as ${ dateiinhalt[0] at C:\Daten\perl\forum\aoa.pl line 4.
Type of arg 1 to push must be array (not array slice) at C:\Daten\perl\forum\aoa.pl line 4, near "$whatever;"


Die andere (auskommentierte) Zeile tuts.

Edit2: Steht in Deinem Beispielprogramm aber auch richtig.\n\n

<!--EDIT|Crian|1085406567-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 3 Einträge, 1 Seite



View all threads created 2004-05-24 11:06.