in reply to split question
Here's one way to check the success of the match. Of course, you can change the structure, but the basic idea is to only access $1 et al. if the match succeeds.
my $inLine = "RPC, rpc #001b, (1987)"; my $year; if ($inLine =~ /\((\d+)\)/) { $year = $1; } else { die "No year found in '$inLine'.\n"; } print "Found year '$year' in '$inLine'.\n";
Here's a demonstration of a bug caused by not checking the success of the match.
This produces the following output.my $inLine = "RPC, rpc #001b, 1987"; $inLine =~ /(#\d+[a-z])/; my $rpcNum = $1; print "Found rpc num '$rpcNum' in '$inLine'.\n"; $inLine =~ /\((\d+)\)/; my $year = $1; print "Found year '$year' in '$inLine'.\n";
Found rpc num #001b in RPC, rpc #001b, 1987. Found year #001b in RPC, rpc #001b, 1987.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: split question
by Anonymous Monk on Sep 09, 2001 at 03:12 UTC | |
|
Re: Re: split question
by dragonchild (Archbishop) on Sep 10, 2001 at 16:30 UTC |