Regex und ?:

08/02/2011 - 00:40 von Helmut Schneider | Report spam
Hi,

#!/usr/bin/perl

use warnings;
use strict;

my $ipRegex = '(?:\d+\.){3}\d+|(?:[a-z0-9]{1,4}::?){1,7}[a-z0-9]{1,4}';
my $hostRegex = '(?:[-a-z0-9]+\.)+[a-z]{2,}";

foreach my $line (<STDIN>) {
if ($line =~ /(?:unknown\[($ipRegex)\]|($hostRegex)\[.*\])/i) {
print "\$1: $1";
print "\$2: $2";
}
}

[helmut@BSDHelmut ~]$ echo "unknown[192.168.0.1]" | perl ./test.pl
$1: 192.168.0.1
Use of uninitialized value $2 in concatenation (.) or string at
./test.pl line 12, <STDIN> line 1.
$2:
[helmut@BSDHelmut ~]$ echo "mein.test.host.local[192.168.0.1]" | perl
./test.pl
Use of uninitialized value $1 in concatenation (.) or string at
./test.pl line 11, <STDIN> line 1.
$1:
$2: mein.test.host.local
[helmut@BSDHelmut ~]$

Wie erreiche ich denn, dass das Ergebnis immer in $1 steht?

Danke und Gruß, Helmut
 

Lesen sie die antworten

#1 Florian Weimer
08/02/2011 - 08:42 | Warnen spam
* Helmut Schneider:

Wie erreiche ich denn, dass das Ergebnis immer in $1 steht?



Das geht im allgemeinen nicht.

Ähnliche fragen