in reply to Regex help needed

I wouldn't bother with a regexp. I'd use split (technically, that uses a regexp as well):
my ($first, $last, $id) = split '%'; print "$last $first\n" if substr($id, 0, 1) eq 'A';

Replies are listed 'Best First'.
Re^2: Regex help needed
by BillKSmith (Monsignor) on Apr 23, 2012 at 15:51 UTC
    "Technically" split requires a regular expression as its first argument. String patterns appear to be an undocumented extension.
      Huh, what are you talking about? Using strings as patterns is fine. Remember, this is Perl. If Perl expects a pattern somewhere, whatever you put there is a pattern. What you call an "undocumented" extension is nothing different from:
      $foo = "3"; $bar = 4 + $foo;
      or even:
      my $pattern = "foo|bar"; say "Match" if $str =~ $pattern;
      In my snippet, '%' is pattern by virtue of it being the first argument of split, not because of some "undocumented extension".

      Note also this snippet from the split documentation:

      As a special case, specifying a PATTERN of space (' ') will
      split on white space just as "split" with no arguments does.
      
      Note how the documentation talks about a pattern, while using quotes to delimit said pattern.
        But be careful, / / and ' ' are not the same thing for split:
        use feature 'say'; my $x = "a\tb\tc"; say for split ' ', $x; say for split / /, $x;
        your example
        my $pattern = "foo|bar"; say "Match" if $str =~ $pattern;
        is very convincing. - Sorry about that.
Re^2: Regex help needed
by ansh batra (Friar) on Apr 23, 2012 at 11:12 UTC