regulärer ausdruck
kraft hannes
- perl
0 Bio0 n.d. parker0 Bio
0 Cheatah
hallo leute !
trotzdem ich eigentlich schon lange mit perl rummache habe ich die regulären audrücke sträflich vernachlässigt . . .
. . . und kann jetzt einen ebensolchen leider nicht auseinanderdefinieren da mein wissen hier leider nicht vorhanden ist.
vielleicht kann einer der geschätzten forumsteilnehmer mir hier einen kleinen tip geben :)
zum problem:
in jedem perl script verwende ich seit undenklichen zeiten drei
zeilen die ich nie verstanden habe:
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.\n)*-->//g;
. . . ganz am anfang wenn ich die daten die so daherkommen abfrage wandle ich hier die ganze sache in eine lesbares format um . . .
leider kann ich aus den ganzen perl büchern die hier bei mir herumlieren nicht rauslesen was denn die dritte zeile genau tut - ungefähr kann ich schon was raten aber das ist zu wenig
mich würde also brennend interessieren was hier geschieht
vielen dank für die hilfe
servus
hannes
Sup!
»» $value =~ s/<!--(.\n)*-->//g;
IMHO ersetzt dieser reguläre Ausdruck alle Kommentare durch gar nichts, d.h. löscht sie.
Warum das irgendwelche Strings ab einer gewissen Länge zerlegen sollte, die keine Kommentare enthalten, weiss ich indes nicht.
Gruesse,
<img src="http://outpost.purespace.de/webdesign.jpg" alt="">
Bio
hi ho
»» $value =~ s/<!--(.\n)*-->//g;
IMHO ersetzt dieser reguläre Ausdruck alle Kommentare durch gar nichts, d.h. löscht sie.
eigentlich ist dieser ausdruck, den ich allerdings in diesem zusammenhang auch als unsinnig empfinde, wenn er auf html-daten angewandt wird
also, wenn ueberhaupt, dann:
$value =~ s/<!--(.\n)*?-->//g;
^
(nicht gierig machen des sterns)
oder halt
$value =~ s/<!--.*?-->//gs;
(durch /s faellt in den punkt auch \n rein)
cua
n.d.p.
Sup!
Stimmt ja - Perl ist ja normalerweise immer "greedy" - gar nicht dran gedacht...
Gruesse,
Bio
Hi,
in jedem perl script verwende ich seit undenklichen zeiten drei
zeilen die ich nie verstanden habe:
Du solltest sie nicht weiterverwenden, da sie fehlerhaft sind. Ein Problem hast Du schon bemerkt, Bio hat es Dir erklärt, die Zeile ist schlicht und einfach Blödsinn - andere Probleme fallen Dir erst später auf, und dann sitzt Du da und debuggst Dich zu Tode. Benutze:
#!/usr/bin/perl -w
use strict;
use CGI ':standard';
und greife anschließend auf param('name') zu, um den Wert von <input name="name"> zu erhalten. Den _gesamten_ Klumpatsch mit read(STDIN) usw. kannst Du komplett in die Tonne treten. Vergleiche auch
perldoc CGI
- bis heute hats tadellos funktioniert -
Das ist der Kernsatz. Beim nächsten <select multiple> funktioniert's schon nicht mehr.
leider kann ich aus den ganzen perl büchern die hier bei mir herumlieren nicht rauslesen was denn die dritte zeile genau tut - ungefähr kann ich schon was raten aber das ist zu wenig
Das steht alles in
perldoc perlre
Cheatah
vielen dank !!
für eure hilfe . . .
vorerst halte ich mich an Cheatah *danke* und werde die
nächste zeit wohl mit dem use CGI ':standard'; weitermachen . . .
in diesen perldoc CGI und perldoc perlre stehen ja die tollsten
sachen drin (leider in englisch *g*) aber es wird schon
nochmals danke
. . . wenn ich mal irgendwie helfen kann lasst es mich wissen
servus
hannes