Thread Skalar innerhalb eines Ausdrucks ergänzen
(5 answers)
Opened by HP-User at 2012-04-18 21:44
Nun, du hast zwar recht, dass der Punkt als Operator Zeichenketten aneinanderhängt, aber innerhalb einer Zeichenkette ist ein Punkt einfach ein Punkt, deswegen steht da einer zuviel.
Formaler ausgedrückt: Code (perl): (dl
)
"<data/unterdata/$dropdown..csv"
ist äquivalent zu Code (perl): (dl
)
'<data/unterdata/' . $dropdown . '..csv' Abgesehen davon steht das die in Deinem Code an völlig unsinniger Stelle. Auch ist der Zusammenbau von Dateipfaden so wie Du es tust problematisch, wenn man auf Portabilität achten will. Schließlich sind globale Dateihandles und die Zwei-Argumente-Form von open historischer Ballast, den man besser nicht verwenden sollte. Also am besten solltest Du schreiben Code (perl): (dl
)
1 2 3 use File::Spec; [...] open my $leser, '<', File::Spec->catfile('data', 'unterdata', "$dropdown.csv") or die "Fehler in open: $!"; Dann wird der Pfad auch auf Windoof oder anderen komischen Systemen richtig zusammengebaut, open treibt weniger magischen Unsinn mit dem Dateinamensargument, die Fehlerbehandlung ist korrekt, und das Dateihandle ist eine lexikalische Variable. Außerdem solltest hier natürlich noch vorsichtig sein, was in $dropdown drinstehen kann damit nicht ungeprüft irgendwelche Benutzereingaben in das Argument von open interpoliert werden, sonst öffnest Du ein Sicherheitsloch. When C++ is your hammer, every problem looks like your thumb.
|