mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-26 07:57:58 +00:00
parallel: map rewritten as per http://perlmonks.org/index.pl?node_id=743445
This commit is contained in:
parent
456529e046
commit
a50adb5080
21
src/parallel
21
src/parallel
|
@ -4232,10 +4232,11 @@ sub args_as_filename {
|
||||||
for my $n (0 .. $#$rec_ref) {
|
for my $n (0 .. $#$rec_ref) {
|
||||||
CORE::push(@res,
|
CORE::push(@res,
|
||||||
$Global::input_source_header{$n+1},
|
$Global::input_source_header{$n+1},
|
||||||
map { s/\\/\\\\/g;
|
map { my $s = $_;
|
||||||
s/\t/\\t/g;
|
$s =~ s/\\/\\\\/g;
|
||||||
s/\0/\\0/g;
|
$s =~ s/\t/\\t/g;
|
||||||
s:/:\\_:g; $_ }
|
$s =~ s/\0/\\0/g;
|
||||||
|
$s =~ s:/:\\_:g; $s; }
|
||||||
$rec_ref->[$n]->orig());
|
$rec_ref->[$n]->orig());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4294,7 +4295,7 @@ sub multi_regexp {
|
||||||
if(not $CommandLine::multi_regexp) {
|
if(not $CommandLine::multi_regexp) {
|
||||||
$CommandLine::multi_regexp =
|
$CommandLine::multi_regexp =
|
||||||
"(?:".
|
"(?:".
|
||||||
join("|",map {my $a=$_; $a =~ s/(\W)/\\$1/g; $a}
|
join("|",map {my ($a = $_) =~ s/(\W)/\\$1/g; $a }
|
||||||
($Global::replace{"{}"},
|
($Global::replace{"{}"},
|
||||||
$Global::replace{"{.}"},
|
$Global::replace{"{.}"},
|
||||||
$Global::replace{"{/}"},
|
$Global::replace{"{/}"},
|
||||||
|
@ -4320,7 +4321,7 @@ sub number_of_replacements {
|
||||||
'\d+(?:|\.|/\.|/|//)?' . # {n} {n.} {n/.} {n/} {n//}
|
'\d+(?:|\.|/\.|/|//)?' . # {n} {n.} {n/.} {n/} {n//}
|
||||||
::maybe_quote('\}') .
|
::maybe_quote('\}') .
|
||||||
'|'.
|
'|'.
|
||||||
join("|",map {$a=$_;$a=~s/(\W)/\\$1/g; $a} values %Global::replace).
|
join("|",map { my ($a = $_) =~ s/(\W)/\\$1/g; $a } values %Global::replace).
|
||||||
")";
|
")";
|
||||||
my %c = ();
|
my %c = ();
|
||||||
$cmd =~ s/($replacement_regexp)/$c{$1}++;"\0"/ogex;
|
$cmd =~ s/($replacement_regexp)/$c{$1}++;"\0"/ogex;
|
||||||
|
@ -4449,9 +4450,9 @@ sub context_replace_placeholders {
|
||||||
# Inner part of replacement functions
|
# Inner part of replacement functions
|
||||||
my @rep_inner = ('', '/', '//', '.', '/.');
|
my @rep_inner = ('', '/', '//', '.', '/.');
|
||||||
# Regexp for replacement functions
|
# Regexp for replacement functions
|
||||||
my $rep_regexp = "(?:". join('|', map { $_=~s/(\W)/\\$1/g; $_} @rep) . ")";
|
my $rep_regexp = "(?:". join('|', map { my ($s = $_) =~ s/(\W)/\\$1/g; $s } @rep) . ")";
|
||||||
# Regexp for inner replacement functions
|
# Regexp for inner replacement functions
|
||||||
my $rep_inner_regexp = "(?:". join('|', map { $_=~s/(\W)/\\$1/g; $_} @rep_inner) . ")";
|
my $rep_inner_regexp = "(?:". join('|', map { my ($s = $_) =~ s/(\W)/\\$1/g; $s } @rep_inner) . ")";
|
||||||
# Seq replace string: {#}
|
# Seq replace string: {#}
|
||||||
my $rep_seq_regexp = '(?:'.::maybe_quote('\{\#\}').")";
|
my $rep_seq_regexp = '(?:'.::maybe_quote('\{\#\}').")";
|
||||||
# Normal replace strings
|
# Normal replace strings
|
||||||
|
@ -4525,7 +4526,7 @@ sub context_replace_placeholders {
|
||||||
}
|
}
|
||||||
# Substitute the replace strings with the replacement values
|
# Substitute the replace strings with the replacement values
|
||||||
# Must be sorted by length if a short word is a substring of a long word
|
# Must be sorted by length if a short word is a substring of a long word
|
||||||
my $regexp = join('|', map { $_=~s/(\W)/\\$1/g; $_}
|
my $regexp = join('|', map { my ($s = $_) =~ s/(\W)/\\$1/g; $s }
|
||||||
sort { length $b <=> length $a } keys %word);
|
sort { length $b <=> length $a } keys %word);
|
||||||
$target =~ s/($regexp)/join(" ",@{$replace{$1}})/ge;
|
$target =~ s/($regexp)/join(" ",@{$replace{$1}})/ge;
|
||||||
return $target;
|
return $target;
|
||||||
|
@ -4579,7 +4580,7 @@ sub simple_replace_placeholders {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Substitute the replace strings with the replacement values
|
# Substitute the replace strings with the replacement values
|
||||||
my $regexp = join('|', map { $_=~s/(\W)/\\$1/g; $_} keys %replace);
|
my $regexp = join('|', map { my ($s = $_) =~ s/(\W)/\\$1/g; $s } keys %replace);
|
||||||
if($regexp) {
|
if($regexp) {
|
||||||
if($quoteall) {
|
if($quoteall) {
|
||||||
# This is for --return: The whole expression must be
|
# This is for --return: The whole expression must be
|
||||||
|
|
Loading…
Reference in a new issue