Karle: RegExp Gruppierung

Hallo,

ich hät da gern mal ein Problem:

if ($line =~ /^(f\d+\/\d+)|(b\d+)\s+([\w:]+)/)  
{  
     my $tmp1=$1;  
     my $tmp2=$2;  
}

Ich möchte nun das in
$1 entweder (f\d+/\d+) oder (b\d+)
$2 = ([\w:]+)

drin steht, und nicht

$1 = (f\d+/\d+)
$2 = (b\d+)
$3 = ([\w:]+)

Da bei meinem Pattern nicht beides vorkommen kann, möchte ich mir die Abfrage ersparen, ob $1 oder $2 nun gefüllt ist. Wie kann man das umsetzen?

Gruss
Karle

  1. Capure statt dessen Alternativen

    statt ()|() verwende (|)

    und studiere bitte die Perldoc. Das sind Basics.
    http://perldoc.perl.org/perlre.html

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o