Leser: 1
8 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
my @{dieses} = qw (aaaa bbbbbb cccccc ddddddddddddd);
my $xyz="dieses";
# Das Geht
foreach my $wert (@{dieses}) {
print "$wert\n";
}
# Das nicht "Can't use string ("dieses") as an ARRAY ref while "strict refs" in use at x.pl line 12."
foreach my $wert (@{$xyz}) {
print "$wert\n";
}
renee+2008-04-21 13:41:26--Sag uns Deinen Anwendungfall und wir sagen Dir, wie Du das strict-konform umsetzen kannst...
Linuxer hat völlig recht! Auf symbolische Referenzen solltest Du verzichten. Es gibt auch andere Lösungen - und die sind besser...
foreach my $zeile (@log{1}) { mach_was }
foreach my $zeile (@log{$variable}) {mach_was}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use Data::Dumper; # nur um sich dann mal die Datenstruktur anzuschauen my @logfiles; for (1..3){ my $file = 'logfile' . $_ . '.log'; open my $fh, '<', $file or die $!; my @lines = <$fh>; # Referenz auf die Zeilen in einem Array speichern $logfiles[$_] = \@lines; close $fh; } # im zweiten Element (weil Arrays mit Index 0 anfangen) ist jetzt eine # Referenz auf ein Array mit den Zeilen von logfile1.log, im dritten Element # eine Referenz auf ein Array mit den Zeilen von logfile2.log,... # einfach mal die Datenstruktur ausgeben print Dumper( \@logfiles ),"\n"; # irgendwas anderes # gebe alles von logfile2.log aus: my $logfile_nr = 2; my @logfile_lines = @{$logfiles[$logfil_nr]}; print $_ for @logfile_lines;
8 Einträge, 1 Seite |