"R (Chandra) Chandrasekhar" schreef:
> --------
> foreach my $element (@cddb_artist)
> {
> $element =~ s/^.*?([0-9,a-f]{8}):.*$/$1/;
> }
> foreach my $element (@cddb_track)
> {
> $element =~ s/^.*?([0-9,a-f]{8}):.*$/$1/;
> }
> --------
You can write all that as this single line:
s/^.*?([0-9,a-f]{8}):.*$/$1/ for @cddb_artist, @cddb_track;
Do you really want the comma inside the character class?
> 1. Can this particular regular expression, involving as it does,
> matched sub-pattern variables like $1, be used as a subroutine
> argument, and if so, how?
Only the first part of the substitution is a regular expression.
my $re_hex8 = qr/[[:xdigit:]]{8}/;
s/^.*?($re_hex8):.*$/$1/ for @cddb_artist, @cddb_track;
Alternative:
perl -wle'
my @cddb_artist = ("xyz 12345678: abc");
my @cddb_track = ("abc fedcba09: xyz");
my $re_hex8 = qr/[[:xdigit:]]{8}/;
($_) = m/($re_hex8)(?=:)/ for @cddb_artist, @cddb_track;
print for @cddb_artist, @cddb_track;
'
12345678
fedcba09
> 2. Can arbitrary regular expressions, including /PATTERN/REPLACEMENT/
> versions
> for substitutions, be used as subroutine arguments, and if so, how?
Store the parts in variables.
--
Affijn, Ruud
"Gewoon is een tijger."
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/