Thread Kommaseparierte Listen bereichsweise ausgeben.
(28 answers)
Opened by Gast at 2006-04-14 16:54 Quote Kannst du doch. Bei diesem Verfahren wird in jeder Schleife eine neue Zeile eingelesen. Diese Zeile steht dann in $_. Quote Wenn du so etwas machst, dann wird die ganze Datei vorher in das Array eingelesen. Wenn du direkt das Filehandle in einer while Schleife machst, dann ist dies nicht der Fall. Dann wird immer nur Zeile für zeile eingelesen. Vor allem bei größeren Dateien empfiehlt sich die while Schleife. Zum anderen empfiehlt es sich, wenn du alles einmal in einem Array eingelesen hast, das Filehandle sofort wieder zu schließen, wenn du es nicht mehr benötigst. Also das close ruhig vor der while schelife setzen. Am besten direkt hinter deiner zuweisung. Quote EDIT: Kleine verbesserung. Diese Fehlermeldung kommt, wenn du deinem Skript nicht jedes benötigte Argument übergibst. Es wird nämlich "$key" in deiner Regex interpoliert. Wenn du nicht alle Argumente übergibst, dann gibt es auch kein $key, daher solltest du bei sowas auch am anfang überprüfen, ob überhaupt genug Elemente übergeben worden sind. Die Anmerkung unten mit $1 stimmt aber immer noch sofern, als das du die Überprüfung mit $1 erst im if Block machen solltest. /EDIT: Das hast du deswegen, weil in deiner if bedingung auch gleichzeitig $1 vorkommt. Das $1 existiert aber nur dann, wenn deine Regex auch wirklich auf den String gematcht hat, und es einen Wert mit "()" auslesen konnte. Wenn deine Regex nicht matcht. Dann gibt es kein $1, und dann kommt natürlich auch die Fehlermeldung das er eine uninitialiserte Variable benutzt. Besser wäre es also, die Überprüfung ob $1 im richtigen bereich ist, nochmal innerhalb des if Blockes zu machen. Zum anderen musst du aufpassen. Wenn noch andere Daten in der Datei stehen als du angegeben hast, dann kann es auch sein das die regex falsche sachen erkennt, die du nicht möchtest... --------- liste.txt Code: (dl
)
1 Hier steht irgendwas listen.pl Code: (dl
)
1 #!/usr/bin/perl -w Kleine Anmerkung, der Regex sollte man die Option /o hinzufügen. Ist etwas Performanter.\n\n <!--EDIT|sid burn|1145063250--> Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|