Ich versuche zZ leider von wenig Erfolg gegrönt eine Array in einer Array zu platzieren in Perl.
Dabei wird eine Datei ausgelesen und jede Zeile ergibt eine Array (Zeileninhalt wird durch Tabs separiert).
Diese Arrays landen per push in einer großen Array bzw sie sollten dort landen.
Tun sie aber nicht. Die Arrays die reinwandern haben nur das erste Element.
Das heist aus
@foobar=("a","b","c");
wird
@foobar=("a")
in der Array in der ich die Zeiler Array reinpushe.
Mein Script habe ich mal gleich mit drangehängt. Es ist ziehmlich verkürzt.
Code:
use strict;
use CGI::Safe qw/ taint /;
use CGI::Carp 'fatalsToBrowser';
my $cgi = CGI::Safe->new;
$CGI::DISABLE_UPLOADS = 1;
$CGI::POST_MAX = 512 * 1024;
my @zeilen;
my $temp5;
my @temp6;
@zeilen=();
$temp5="";
my @temp7;
open(LLIST,"<C:/liste.txt") or die "Can not open list: $!\n";
while(<LLIST>) {
$temp5=$_;
$temp5 =~ s/\n//;
@temp6=split(/\t/,$temp5); # Ja, ich hab es ueberprueft! Es liefert eine Array mit 3 Elementen zurueck
push(@zeilen,@temp6);
}
close(LLIST);
my $temp8=0;
@temp7=@zeilen[$temp8]; # tja, das ist von einem Experiment uebrig. Ich wuerde aber gern die Array komplett direkt ansprechen ala $zeilen[0][2]
print "Content-type: image/jpeg\n\n";
binmode STDOUT;
if (-e $temp7[2] && $temp7[2] ne '0') {
open(IMAGE,"<".$temp7[2]);
# Hier wird für open der dritte Wert aus der Zeile benutzt. Funktioniert nicht weil $temp7 und @zeilen[0] nur ein Wert statt dreien haben.
} elsif($temp7[2] eq '0') {
open(IMAGE,"<".$temp7[0]);
# Hier wird für open der erste Wert aus der Zeile benutzt. Funktioniert!
} else {
# Hier sollte Perl eigentlich nie hinkomen...
}
binmode IMAGE;
while (<IMAGE>) {
print $_;
}
close(IMAGE);
exit;
Lesezeichen