Modifying a Perl script, i got this:
$var =~ s,/$,,;
it seems to be a regex pattern, but i was expecting to found "/" (or "|") instead of "," as separator.
So the question is: when and why one should use in a regex pattern "/" or "|" or ","?
Modifying a Perl script, i got this:
$var =~ s,/$,,;
it seems to be a regex pattern, but i was expecting to found "/" (or "|") instead of "," as separator.
So the question is: when and why one should use in a regex pattern "/" or "|" or ","?
In Perl, in the substitution operator, as well as many other operators, you can substitute the delimiter for almost any punctuation character, such as
s#/$##
s=/$==
s!/$!!
Which one to use when is a matter of what you need at the time. Preferably you choose a delimiter that does not conflict with the characters in your regex, and one that is readable.
In your case, a different delimiter from /
was used because one wanted to include a slash in the regex, to remove a trailing slash. With the default delimiters, it would have been:
s/\/$//
Which is not as easy to read.
Like I mentioned above, you can do this with a great many operators and functions:
m#...#
qw/.../
qw#...#
tr;...;;
qq?...?
In Perl, the default regular expression delimiter is /
.
However, other characters may be used instead of /
. Typically, you would use alternate delimiters when the regular expression itself includes a /
. Using alternate delimiters avoids excessive escaping of the delimiter:
s/foo\/bar\//baz/;
vs.
s|foo/bar/|baz|;
This is particularly useful for matching path names that contain "/", to avoid LTS (leaning toothpick syndrome).