Schrift
[thread]8484[/thread]

Zugriff auf best. Elemente in Arrayreferenz: Arrayreferenz

Leser: 1


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
Duff
 2006-11-08 16:50
#71553 #71553
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich habe mal eine grundlegende Frage zu Arrayreferenzen.

Wie kann ich auf bestimmte Werte im zweiten Element der Arrayreferenz zugreifen?

Also, auf das Element $array->[1], wenn ich mir dieses z.B. durch eine foreach-Schleife ausgeben lasse (foreach $array (@{$arrayref}))?

Danke.
D'OH
Daniel
Taulmarill
 2006-11-08 16:55
#71554 #71554
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
entweder verstehe ich deine frage nicht, oder du hast sie selbst beantwortet. wenn ich eine referenz auf ein array $arrayref habe, greife ich auf das zweite element des referenzieren arrays über $arrayref->[1] zu. alternativ funktioniert z.b. auch die schreibweise ${$arrayref}[0]
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
nepos
 2006-11-08 17:40
#71555 #71555
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich glaube duff mein, wie er an bestimmte Werte innerhalb des ueber $arrayref->[1] angesprochenen Eintrages kommen kann.
styx-cc
 2006-11-08 17:51
#71556 #71556
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl -w
use strict;

my @array_of_arrays = ([1,2],[3,4],[5,6]);
my $array_ref = \@array_of_arrays;
print $array_ref->[0][1];

Ausgabe: 2


Meintest du das?

MfG

Edit:
Wie Taulmarill schon sagte, geht auch:
print ${$array_ref}[0][1];\n\n

<!--EDIT|styx-cc|1163001495-->
Pörl.
Linuxer
 2006-11-08 17:58
#71557 #71557
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
übersichtlicher finde ich:

Code: (dl )
print $arrayref->[0]->[1];
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
renee
 2006-11-08 20:48
#71558 #71558
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Lesenswert:perlreftut
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2006-11-09 09:45
#71559 #71559
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke für die vielen und schnellen Antworten.

Konnte das ganze nun so lösen:
Code: (dl )
1
2
3
4
5
6
7
foreach my $array ( @{$arrayRef} )
{
while ($array->[1] =~ /<irgendeinmatch/igm) {
$array2=$1;
}
print $array->[0], $array2"\n";
}


Das alles funktioniert eigentlich auch wunderbar, bis auf den Fall, dass ein Match mehrmals zutrifft. Dann wird nämlich nur der zuletzt gefundene match in die Variable $array2 gespeichert.

Ich möchte aber alle gefundenen matches speichern. Nur wie?
In einem einfachen array, in das ich über push die Elmente einfüge, funktioniert ja auch nicht, da das array dann ohne ende lang wird.
D'OH
Daniel
styx-cc
 2006-11-09 09:55
#71560 #71560
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Mhh, wenn du alle gefundenen Matches speichern magst kommt es doch darauf an was du im nachinein damit vor hast, du koenttest z.B. alle Matches in eine Datei schreiben, das wuerde den Arbeitspeicher schonen..

MfG
Pörl.
renee
 2006-11-09 10:02
#71561 #71561
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Na klar, Du überschreibst ja $array2 immer wieder (übrigens ein schlechter Name für ein Skalar).
Code: (dl )
1
2
3
4
5
foreach my $array ( @{$arrayRef} )
{
@matches = $array->[1] =~ /<irgendeinmatch/igm;
print $array->[0], "@matches\n";
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2006-11-09 11:01
#71562 #71562
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke @renee, dass funktioniert.

Aber ich würde die gesamte Ausgabe noch gerne etwas "schöner" haben.
In dem Match speichere ich bestimmte Vorkommen, die ich dann ungefähr so in dem Array als einzelne Strings speichern möchte: "$2 --> $1 $2 --> $1".

Habe es in der oben von mir geposteten while-Schleife mit einem push probiert, allerdings wollte das ganze nich so, wie ich :-).
D'OH
Daniel
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-11-08 16:50.