Test of bug #43376: {%} and {#} with --pipe.

This commit is contained in:
Ole Tange 2014-10-14 22:56:03 +02:00
parent f7b2b1513c
commit 1aa965256c
5 changed files with 50 additions and 21 deletions

View file

@ -248,10 +248,14 @@ New in this release:
* GNU Parallel was cited in: Application of Machine Learning to Algorithm Selection for TSP http://www.dbai.tuwien.ac.at/staff/musliu/art_ictai_cam.pdf
* GNU Parallel was cited in: Performance Models for LTE-Advanced Random Access http://repository.asu.edu/attachments/137242/content/Tyagi_asu_0010E_14116.pdf
* GNU Parallel was used (unfortunately without citation) in: De Novo Insertions and Deletions of Predominantly Paternal Origin Are Associated with Autism Spectrum Disorder http://www.cell.com/cms/attachment/2019079667/2039310868/mmc1.pdf
* GNU Parallel is demonstrated in: Data Science at the Command Line: Facing the Future with Time-Tested Tools
* GNU Parallel was covered in a talk at Sydney Perl Mongers group http://www.openfusion.net/talks/pwp/#24
* GNU Parallel and how to get started with it http://www.jduck.net/blog/2014/09/30/gnu-paralell/
* Comparing Golang, Scala, Elixir and Ruby for ETL http://www.dimroc.com/2014/09/29/etl-language-showdown/

View file

@ -3137,6 +3137,7 @@ sub which {
(
'aix' => $sysv,
'cygwin' => $sysv,
'msys' => $sysv,
'dec_osf' => $sysv,
'darwin' => $bsd,
'dragonfly' => $bsd,
@ -3172,6 +3173,8 @@ sub which {
sub reap_usleep {
# Reap dead children.
# If no dead children: Sleep specified amount with exponential backoff
# Input:
# $ms = milliseconds to sleep
# Returns:
# $ms/2+0.001 if children reaped
# $ms*1.1 if no children reaped
@ -3198,14 +3201,19 @@ sub reap_usleep {
sub usleep {
# Sleep this many milliseconds.
my $secs = shift;
::debug(int($secs),"ms ");
select(undef, undef, undef, $secs/1000);
# Input:
# $ms = milliseconds to sleep
my $ms = shift;
::debug(int($ms),"ms ");
select(undef, undef, undef, $ms/1000);
}
sub now {
# Returns time since epoch as in seconds with 3 decimals
# Uses:
# @Global::use
# Returns:
# $time = time now with millisecond accuracy
if(not $Global::use{"Time::HiRes"}) {
if(eval "use Time::HiRes qw ( time );") {
eval "sub TimeHiRestime { return Time::HiRes::time };";
@ -3225,6 +3233,10 @@ sub multiply_binary_prefix {
# K =2^10, M =2^20, G =2^30, T =2^40, P =2^50, E =2^70, Z =2^80, Y =2^80
# k =10^3, m =10^6, g =10^9, t=10^12, p=10^15, e=10^18, z=10^21, y=10^24
# 13G = 13*1024*1024*1024 = 13958643712
# Input:
# $s = string with prefixes
# Returns:
# $value = int with prefixes multiplied
my $s = shift;
$s =~ s/ki/*1024/gi;
$s =~ s/mi/*1024*1024/gi;
@ -3262,11 +3274,18 @@ sub multiply_binary_prefix {
}
sub tmpfile {
# Create tempfile as $TMPDIR/parXXXXX
# Returns:
# $filename = file name created
return ::tempfile(DIR=>$ENV{'TMPDIR'}, TEMPLATE => 'parXXXXX', @_);
}
sub __DEBUGGING__ {}
sub debug {
# Uses:
# $Global::debug
# %Global::fd
# Returns: N/A
$Global::debug or return;
@_ = grep { defined $_ ? $_ : "" } @_;
@ -3306,7 +3325,7 @@ sub my_memory_usage {
sub my_size {
# Returns:
# size of object if Devel::Size is installed
# $size = size of object if Devel::Size is installed
# -1 otherwise
my @size_this = (@_);
eval "use Devel::Size qw(size total_size)";
@ -6710,20 +6729,6 @@ sub replace_placeholders {
CORE::push(@{$replace{$ww}}, $val);
}
}
if(not @arg) {
die;
# No args: We can still have {%} or {#} as replacement string.
my $val = $w;
for my $perlexpr (keys %{$self->{'replacecount'}}) {
# Replace {= perl expr =} with value for each arg
$val =~ s/\257<\Q$perlexpr\E\257>/$_="";eval("$perlexpr");$_/eg;
}
my $ww = $word;
if($quote) {
$val = ::shell_quote_scalar($val);
}
CORE::push(@{$replace{$ww}}, $val);
}
}
if($quote) {

View file

@ -588,7 +588,7 @@ cannot be exported:
parallel --env my_importer \
'my_importer; echo "{}" "${indexed[{}]}" "${assoc[${indexed[{}]}]}"' ::: "${!indexed[@]}"
To copy the full environment use this function:
To copy the full environment use this function (e.g. by putting it in .bashrc):
env_parallel() {
export parallel_bash_environment='() {
@ -2748,7 +2748,7 @@ The following will start one B<rsync> per big file in I<src-dir> to
I<dest-dir> on the server I<fooserver>:
B<cd src-dir; find . -type f -size +100000 | parallel -v ssh fooserver
mkdir -p /dest-dir/{//}\;rsync -Havessh {} fooserver:/dest-dir/{}>
mkdir -p /dest-dir/{//}\;rsync -s -Havessh {} fooserver:/dest-dir/{}>
The dirs created may end up with wrong permissions and smaller files
are not being transferred. To fix those run B<rsync> a final time:

View file

@ -22,4 +22,12 @@ echo '### Test bug #43284: {%} and {#} with --xapply';
echo '**'
echo '### Test bug #43376: {%} and {#} with --pipe'
echo foo | parallel -q --pipe -k echo {#}
echo foo | parallel --pipe -k echo {%}
echo foo | parallel -q --pipe -k echo {%}
echo foo | parallel --pipe -k echo {#}
echo '**'
EOF

View file

@ -14,3 +14,15 @@ a 1 1 b
1
echo '**'
**
echo '### Test bug #43376: {%} and {#} with --pipe'
### Test bug #43376: {%} and {#} with --pipe
echo foo | parallel -q --pipe -k echo {#}
1
echo foo | parallel --pipe -k echo {%}
1
echo foo | parallel -q --pipe -k echo {%}
1
echo foo | parallel --pipe -k echo {#}
1
echo '**'
**