in reply to regex extracting text
Often instead of using the non-greedy ? to modify .*, use a negated character class:
sub name { my ($str) = @_; return $str =~ m/\@([^.]+)/ ? $1 : ''; }
which makes the nature of the match clearer ("I want everything except '.'") and generally leads to fewer surprise matches.
Note too that you should always use strictures (use strict; use warnings;) and (almost) never use prototypes. Assigning parameters to explicitly named variables helps make their use clearer, the nature of the parameters and use of the sub clearer, and avoids accidentally altering the variables passed into the sub (the elements in @_ are aliases to the parameters passed in).
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: regex extracting text
by JavaFan (Canon) on Apr 29, 2012 at 10:34 UTC | |
by sweepy838 (Acolyte) on Apr 29, 2012 at 12:48 UTC |