in reply to Perl Regular Exp
Please tell me how is the matching done?
The m#/([^/]+)$# matches a string of one or more non-slash characters at the end of a single-line string. (1) One or more is implied by +. (2) non-slash is implied by [^/]. (3) at the end of the string is implied by $. So when you feed the regex with $dir = "/exp/01jehandel/userinput/runwhennewfile", it matches runwhennewfile as you said.
Also what difference does putting brackets '()' for $thisj in its assignment statement makes?
The '()' capture the enclosed regex piece into the first group, $1. As a list assignment is being done, in ($thisj) = $dir =~ ..., that means the matching groups are returned to the left side value. But there's only one group here and $thisj will get its contents.
what is '#' doing here?
As the regex uses literal slashes (/), another delimiter was chosen (in the case, #). That what means m# ... #. Otherwise, it should have been written as /\/([^\/]+)$/ (which is hard to read).
You may learn more at perlretut and perlre.
|
|---|