Thread Reg.Ex suchen+ersetzen
(17 answers)
Opened by geloescht at 2012-08-05 01:39
$fh Übereinkunft für ein generisches Filehandle
$! Bei Dateiaktionen steht hier die Fehlermeldung drin. Wichtig das zu wissen! Beispiel: Code (perl): (dl
)
open(my $fh, '<', $file) or die("Error open $file. Message: $!\n"); -> zugriff auf eine Referenz. Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 my @array1=(1,2,3,4,5); my @array2=(6,7,8,9,10); my @array3=(11,12,13,14,15); my $referenz_auf_array1=\@array1; my $referenz_auf_array2=\@array2; my $kopie_von_array3_in_anonymes_array=[@array3]; print $referenz_auf_array1->[0]."\n" # gibt aus 1 wie es in array1 steht $referenz_auf_array1->[0]=111; print $array1[0]."\n" # gibt 111 aus da Refenz und Array zusammenhängen print $kopie_von_array3_in_anonymes_array->[0]."\n" # gibt 11 aus $kopie_von_array3_in_anonymes_array->[0]=1; print $array1[0]."\n" # gibt 11 aus da Refenz und Array nicht zusammen hängen. my @alle_arrays=($referenz_auf_array1,$referenz_auf_array2,kopie_von_array3_in_anonymes_array); print $alle_arrays[0]->[0]."\n" # gibt 111 aus wie es in $referenz_auf_array1 und @array1 steht # der Pfeil ist hier optional. Perl versteht es auch ohne diesen. print $alle_arrays[0][0]."\n" # gibt 111 aus wie es in $referenz_auf_array1 und @array1 steht $_ Ein spezielle Variable, die benutzt wird wenn eine Variable gebraucht aber nicht angegeben ist: Code (perl): (dl
)
while(<$fh>){ print } Perl macht daraus: Code (perl): (dl
)
while($_=<$fh>){ print $_ } 2012-08-05T11:19:41 ? Nunja das ist manchmal schon die ausführliche Schreibweise. ;-) 2012-08-05T11:19:41 ? Ja. Wenn du den ganzen Tag Programmierst dann weißt du es zu schätzen einen Problem mit 400 Zeichen zu lösen und nicht mit 10000. 2012-08-05T11:19:41 ? Nimm das Element 3 aus der Arrayrefenz $row und suche darin nach "pattern" wenn das nicht gefunden wurde führe next aus. Das ist normales Perl. da ist nichts gekürzt oder verschleiert. So kann es in Perl schreiben. oder auch so: Code (perl): (dl
)
next if($row->[2] !~ m/pattern/); Code (perl): (dl
)
next unless($row->[2] =~ m/pattern/); Code (perl): (dl
)
next if(index($row->[2],'pattern') == -1); Code (perl): (dl
)
unless($row->[2] =~ m/pattern/){next} noch viele weitere Variationen die ich nicht alle aufschreiben will. Wenn du eine Geschwätzige Sprache nutzen willst beschäftige dich mit Java. Da gibt es nur einen richtigen Weg und alle Begriffe sind mindestens 10 Zeichen lang. 2012-08-05T11:19:41 ? Programmiersprachen sind Logisch, das müssen sie ein damit Computer sie verstehen. Wenn du nur einen Teil der Regeln kennst hast du natürlich Problem alles zu verstehen. Das ist aber keine Fehler der Programmiersprache oder der Programmierer. 2012-08-05T11:19:41 ? Du hast zwei Möglichkeiten. Du erfindest alle Räder neu, vom Holzrad bis zum Rad eines Rennwagens. Mit allen Fehlern, die andere auch schon gemacht haben. Oder du vertraust darauf, dass andere die Fehler schon gemacht und behoben haben. Wahrscheinlich haben sie schon Fehler gemacht und behoben, von denen du gar nicht weißt das sie existieren. Es ist schön dass du alles verstehen willst, doch manchmal muss man darauf vertrauen, das andere auch etwas richtig machen. Du Programmierst ja auch nicht Perl, oder den Webserver, oder das Betriebssystem neu. Du vertraust darauf das andere keine Fehler machen. Wo ist da der unterschied zu Perl-Modulen? Wenn Fehler auftauchen können sie korrigiert werden. Damit du dich nicht darum kümmern brauchst gibt es Distributionen, die das für dich erledigen. Schau einfach mal auf dem Webserver ob Text::CSV schon installiert ist. Wenn ja dann achten die Betreiber darauf das die Module Fehlerfrei sind, schon aus eigenem Interesse. Das ist Arbeit, die du dir sparen kannst. Das selbe gilt für CGI, oder andre Module, die sehr nützliche sind. Last edited: 2012-08-05 14:28:56 +0200 (CEST) |