Anfängerfragen
Peter Langbein
- perl
Hallo zusammen,
ich bin bei einem Codeschnippsel auf etwas gestoßen, das ich nicht verstehe.
if ( $userpassword and $userpassword =~ /([a-f0-9]{32})/ )
Was bedeutet hier das Gleichheitszeichen mit der Tilde? Ich interpretiere diesen Ausruck so, dass geprüft wird, ob das eingegebene Passwort dem regulären Ausdruck '/([a-f0-9]{32})/' entspricht. Was mich noch wundert ist, dass der reguläre Ausdruck nicht in Anführungszeichen steht. Darf man die da einfach so weglassen, bzw unter welchen Umständen darf man sie weglassen?
Wäre schön, wenn mir das jemand mal erklären könnte.
Viele Grüße
Peter
Hallo Peter,
eine RegEx wird immer zwischen die slashes gestellt. Du darfst sogar keine Anführungszeichen verwenden, da es sonst wieder ein normaler String ist.
Wie Du vermutet hast, wird hier mit der RegEx hinter dem =~ geprüft. Es gibt auch weiter Möglichkeiten, um bspw. einen String zu ersetzen
text =~ s/.../.../g;
wobei die ... hier für eine RegEx stehen.
ciao Akela
Hallo Akela!
eine RegEx wird immer zwischen die slashes gestellt.
Nein, nicht immer zwischen slashes. Du kannst auch andere Zeichen als Delimiter nehmen, was sogar bei Pfadmanipulationen vom Vorteil ist:
s!/usr/bin/perl!/usr/bin/perl -w!;
Das sähe mit slashes hässlich und unübersichtlich aus:
s//usr/bin/perl//usr/bin/perl -w/;
Zu bedenken ist lediglich, dass bei einer einfachen Prüfung, ob ein RegExp matcht:
if /RegExp/;
das »m« nicht fehlen darf:
if m!RegExp!;
Viele Grüße aus Frankfurt/Main,
Patrick
Hi,
Was bedeutet hier das Gleichheitszeichen mit der Tilde?
Was mich noch wundert ist, dass der reguläre Ausdruck nicht in Anführungszeichen steht.
Was mich wundert ist, dass es bei (z.B.) PHP notwendig ist, Regular Expressions in Anführungszeichen zu setzen. Viel ältere Sprachen wie Perl oder JavaScript "schaffen" es seit jeher ohne.
Darf man die da einfach so weglassen,
Meine Perl-Zeit ist ein bisschen her, aber wenn ich mich recht entsinne, kann von "dürfen" nicht die Rede sein. Man _muss_ sie weglassen, denn sie haben dort nichts verloren.
bzw unter welchen Umständen darf man sie weglassen?
Wenn man eine Sprache verwendet, in der Regular Expressions ein integraler Bestandteil sind.
Cheatah