in reply to Regex and PID issue

... I am always missing the last digit of the process id ...
qr|$owner\s+(\d*)\w+...|
qr|$owner\s+(\w+)\w+...|

If your  $line is like the examples given by hippo and stevieb, the  \w+ immediately following the capturing  (\d*) (or following the  (\w+) in your Method 2) requires that the captured decimal sequence give back one digit in order to achieve an overall match. (Remember that  \w includes the  \d character class.)

c:\@Work\Perl\monks>perl -wMstrict -le "my $line = 'ubuntu 9377 0.0 0.1 23668 1600 pts/2 S+ 18:23 + 0:00 top'; my $owner = 'ubuntu'; ;; $line =~ m{ $owner \s+ (\d*) (\w+) }xms; print qq{captured: (\\d*) ($1) (\\w+) ($2)}; " captured: (\d*) (937) (\w+) (7)
The regex engine always does whatever is necessary to achieve an overall match.

Update: Oops... Didn't carefully read stevieb's post above, wherein all this is explained — and a bit better!


Give a man a fish:  <%-{-{-{-<