From d0f6c9a0aa400d4294831d47df3683f933679830 Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Fri, 16 Sep 2011 15:26:17 +0200 Subject: [PATCH] parallel: { and } were not quoted correctly so this would fail: echo a b | parallel --pipe -q awk '{print $2, $1}' --- doc/FUTURE_IDEAS | 9 ++ doc/release_new_version | 44 ++----- src/parallel | 73 ++++++++--- src/parallel.pod | 2 +- testsuite/tests-to-run/test05.sh | 8 +- testsuite/wanted-results/test04 | Bin 370 -> 370 bytes testsuite/wanted-results/test05 | 6 +- testsuite/wanted-results/test15 | 200 +++++++++++++++---------------- testsuite/wanted-results/test61 | 2 +- 9 files changed, 180 insertions(+), 164 deletions(-) diff --git a/doc/FUTURE_IDEAS b/doc/FUTURE_IDEAS index 5453844b..cb897c16 100644 --- a/doc/FUTURE_IDEAS +++ b/doc/FUTURE_IDEAS @@ -1,3 +1,12 @@ +Fejler: + +parallel -qv echo {#} {1} {1.} {} {.} {/} {//} ::: a.b/c.d +parallel -Xqv echo {#} a{1}{1.} {} ::: a.b/c.d +parallel -Xqv echo {#}a{1}{1.} {} ::: a.b/c.d +seq 2 | parallel -v echo {2} ::: c :::: - +parallel echo {2} ::: a ::: b + + niceload seeks last column: iostat -x 1 2 diff --git a/doc/release_new_version b/doc/release_new_version index 22fe1f29..314089ce 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -179,47 +179,21 @@ cc:Peter Simons , Sandro Cazzaniga , Ryoichiro Suzuki , Jesse Alama -Subject: GNU Parallel 20110822 ('Utøya') released +Subject: GNU Parallel 20110922 ('Thorning-Schmidt') released -GNU Parallel 20110822 ('Utøya') has been released. It is +GNU Parallel 20110922 ('Thorning-Schmidt') has been released. It is available for download at: http://ftp.gnu.org/gnu/parallel/ -Debian and Ubuntu people have complained GNU Parallel is not in their -official distributions. - -Ubuntu people: Log into LaunchPad and on -https://bugs.launchpad.net/ubuntu/+bug/740630 click 'This bug affect -me too'. (The link will only appear when you are logged in) - -Debian people: This is the (2 years old) bug to push: -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=518696 - -Several have suggested splitting moreutils into moreutils and -moreutils-parallel just like FreeBSD and RawHide have already done: -http://www.freshports.org/sysutils/moreutils-parallel/ -http://rpm.pbone.net/index.php3/stat/4/idpl/15740186/dir/rawhide/com/moreutils-parallel-0.44-1.fc16.x86_64.rpm.html - -To me that sounds like a good solution: Most people will never have -any problems and the few that install both GNU Parallel and packages -that depend on moreutils-parallel will be aware of it. - - New in this release: -* --timeout implemented so that slow commands can be killed +* --shellquote does not run the command but quotes it using \'s. + Useful for making quoted composed commands. -* CPU detection improved for Mac OSX. Thanks to Wayne E. Seguin. +* Blog post on recompression FLAC audio. + http://blog.oxplot.com/2011/08/reflac-flac-cleanser.html -* Example of a parallel webcrawler in the man page. - -* Backup up PostgreSQL with GNU Parallel. Thanks to Stephane Wirtel. - http://wirtel.be/2011/07/15/rsync_parallel/ - -* Blog post in Japanese. - http://dminor11th.blogspot.com/2011/08/gnu-parallel.html - -* Blog post about optimizing JPEGs. Thanks to Thomas Jost. - http://schnouki.net/2011/07/22/optimizing-jpeg-pictures/ +* The most complex use of ::: I a seen so far. + http://agentzlerich.blogspot.com/2011/09/following-up-on-previous-failures-ive.html * Bug fixes and man page updates. @@ -245,7 +219,7 @@ you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs. You can find more about GNU Parallel at: -http://www.gnu.org/software/parallel/ +http://www.gnu.org/s/parallel/ Watch the intro video on http://www.youtube.com/watch?v=OpaiGYxkSuQ or at http://tinyogg.com/watch/TORaR/ and http://tinyogg.com/watch/hfxKj/ diff --git a/src/parallel b/src/parallel index d8b40fee..14388253 100755 --- a/src/parallel +++ b/src/parallel @@ -63,8 +63,6 @@ my $command; if(@ARGV) { if($Global::quoting) { $command = shell_quote(@ARGV); - # {#} is a replacement string and should not be quoted - $command =~ s/{\\#}/{#}/g; } else { $command = join(" ", @ARGV); } @@ -644,6 +642,9 @@ sub parse_options { $Global::ContextReplace = 1; } + for (keys %Global::replace) { + $Global::replace{$_} = ::maybe_quote($Global::replace{$_}); + } %Global::replace_rev = reverse %Global::replace; if(grep /^$Global::arg_sep$|^$Global::arg_file_sep$/o, @ARGV) { @@ -858,6 +859,32 @@ sub shell_quote_scalar { return $a; } +sub maybe_quote { + # If $Global::quoting then quote the string so shell will not expand any special chars + # Else do not quote + # Returns: + # if $Global::quoting string quoted with \ as needed by the shell + # else string unaltered + if($Global::quoting) { + return shell_quote_scalar(@_); + } else { + return "@_"; + } +} + +sub maybe_unquote { + # If $Global::quoting then unquote the string as shell would + # Else do not unquote + # Returns: + # if $Global::quoting string unquoted as done by the shell + # else string unaltered + if($Global::quoting) { + return shell_unquote(@_); + } else { + return "@_"; + } +} + sub shell_unquote { # Unquote strings from shell_quote # Returns: @@ -870,7 +897,7 @@ sub shell_unquote { } $arg =~ s/'\n'/\n/g; # filenames with '\n' is quoted using \' $arg =~ s/\\([\002-\011\013-\032])/$1/g; - $arg =~ s/\\([\#\?\`\(\)\*\>\<\~\|\; \"\!\$\&\'])/$1/g; + $arg =~ s/\\([\#\?\`\(\)\{\}\*\>\<\~\|\; \"\!\$\&\'])/$1/g; $arg =~ s/\\\\/\\/g; } return wantarray ? @strings : "@strings"; @@ -3516,12 +3543,11 @@ sub new { my %multi_replace; for my $used (keys %replacecount) { if($used =~ /^{(\d+)(\D*)}$/) { - $positional_replace{$1} = '{'.$2.'}'; + $positional_replace{$1} = '\{'.$2.'\}'; } else { $multi_replace{$used} = $used; } } - return bless { 'command' => $command, 'seq' => $seq, @@ -3615,6 +3641,7 @@ sub push { $arg_no++; if(defined $arg) { if($self->{'positional_replace'}{$arg_no}) { + # TODO probably bug here if both {1.} and {1} are used for my $used (keys %{$self->{'replacecount'}}) { # {} {/} {//} {.} or {/.} my $replacementfunction = @@ -3736,22 +3763,22 @@ sub number_of_replacements { my $cmd = $command; my $multi_regexp = multi_regexp(); my $replacement_regexp = - "(?:". - '\{\d+(?:|\.|/\.|/|//)?\}'. # {n} {n.} {n/.} {n/} {n//} + "(?:". ::maybe_quote('\{') . + '\d+(?:|\.|/\.|/|//)?' . # {n} {n.} {n/.} {n/} {n//} + ::maybe_quote('\}') . '|'. join("|",map {$a=$_;$a=~s/(\W)/\\$1/g; $a} values %Global::replace). ")"; my %c = (); - $cmd =~ s/($replacement_regexp)/$c{$1}++;""/ogex; + $cmd =~ s/($replacement_regexp)/$c{$1}++;"\0"/ogex; for my $k (keys %c) { if(defined $Global::replace_rev{$k}) { $count{$Global::replace_rev{$k}} = $c{$k}; } else { - $count{$k} = $c{$k}; + $count{::maybe_unquote($k)} = $c{$k}; } $sum += $c{$k}; } - my $number_of_context_groups = 0; my $no_args; my $context; @@ -3858,14 +3885,16 @@ sub context_replace_placeholders { # Regexp for inner replacement functions my $rep_inner_regexp = "(?:". join('|', map { $_=~s/(\W)/\\$1/g; $_} @rep_inner) . ")"; # Seq replace string: {#} - my $rep_seq_regexp = '(?:\{\#\})'; + my $rep_seq_regexp = '(?:'.::maybe_quote('\{\#\}').")"; # Normal replace strings my $rep_str_regexp = multi_regexp(); + # Positional replace strings + my $rep_str_pos_regexp = ::maybe_quote('\{').'\d+'.$rep_inner_regexp.::maybe_quote('\}'); # Fish out the words that have replacement strings in them my $tt = $target; my %word; - while($tt =~ s/(\S*(?:$rep_str_regexp|\{\d+$rep_inner_regexp\}|$rep_seq_regexp)\S*)/\0/o) { + while($tt =~ s/(\S*(?:$rep_str_regexp|$rep_str_pos_regexp|$rep_seq_regexp)\S*)/\0/o) { $word{$1}++; } # For each word: Generate the replacement string for that word. @@ -3876,8 +3905,8 @@ sub context_replace_placeholders { my $word = $origword; # Make a local modifyable copy # replace {#} if it exists - $word =~ s/\{\#\}/$self->seq()/geo; - if($word =~ m:\{\d+$rep_inner_regexp\}:o) { + $word =~ s/$rep_seq_regexp/$self->seq()/geo; + if($word =~ /$rep_str_pos_regexp/o) { # There are positional replacement strings my @argset; if($#{$self->{'arg_list'}->[0]} == 0) { @@ -3888,18 +3917,21 @@ sub context_replace_placeholders { } # Match 1..n where n = max args in a argset my $pos_regexp = "(?:".join("|", 1 .. $#{$argset[0]}+1).")"; + my $pos_inner_regexp = ::maybe_quote('\{') . + "($pos_regexp)($rep_inner_regexp)" . + ::maybe_quote('\}'); for my $argset (@argset) { # Replace all positional arguments - e.g. {7/.} # with the replacement function - e.g. {/.} # of that argument if(defined $self->{'max_number_of_args'}) { # Fill up if we have a half completed line, so {n} will be empty - while($#$argset < $self->{'max_number_of_args'}-1) { + while($#$argset < $self->{'max_number_of_args'}) { CORE::push @$argset, Arg->new(""); } } $w = $word; - $w =~ s/\{($pos_regexp)($rep_inner_regexp)\}/$argset->[$1-1]->replace('{'.$2.'}')/geo; + $w =~ s/$pos_inner_regexp/$argset->[$1-1]->replace('{'.$2.'}')/geo; CORE::push @pos_replacements, $w; } } @@ -3958,13 +3990,17 @@ sub simple_replace_placeholders { # {n} {n/} {n//} {n.} {n/.} my $positional = $1; # number if any my $replacementfunction = "{".::undef_as_empty($2)."}"; # {} {/} {//} {.} or {/.} + # If -q then the replacementstrings will be quoted, too + # {1.} -> \{1.\} + $Global::replace{$used} ||= ::maybe_quote($used); if(defined $args[$positional-1]) { # we have a matching argument for {n} - $replace{$used} = $args[$positional-1]->replace($replacementfunction); + $replace{$Global::replace{$used}} = + $args[$positional-1]->replace($replacementfunction); } else { if($positional <= $self->{'max_number_of_args'}) { # Fill up if we have a half completed line - $replace{$used} = ""; + $replace{$Global::replace{$used}} = ""; } } } elsif($used eq "{#}") { @@ -3974,7 +4010,6 @@ sub simple_replace_placeholders { ::die_bug('simple_replace_placeholders_20110530'); } } - # Substitute the replace strings with the replacement values my $regexp = join('|', map { $_=~s/(\W)/\\$1/g; $_} keys %replace); if($regexp) { diff --git a/src/parallel.pod b/src/parallel.pod index 0112a94f..02a8489d 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -1040,7 +1040,7 @@ job sequence number. =item B<--shellquote> -Quote input as would be needed by the shell. Useful for making quoting +Does not run the command but quotes it. Useful for making quoted composed commands for GNU B. diff --git a/testsuite/tests-to-run/test05.sh b/testsuite/tests-to-run/test05.sh index 498aa6e8..1939b5c9 100755 --- a/testsuite/tests-to-run/test05.sh +++ b/testsuite/tests-to-run/test05.sh @@ -1,7 +1,5 @@ #!/bin/bash -PAR=parallel - rm -rf tmp 2>/dev/null cd input-files tar xjf random_dirs_with_newline.tar.bz2 @@ -10,7 +8,7 @@ cp -a input-files/random_dirs_with_newline tmp cd tmp # tests if special dir names causes problems -find . -type d -print0 | perl -0 -pe 's:^./::' | $PAR -0 -v touch -- {}/abc-{}-{} 2>&1 \ +find . -type d -print0 | perl -0 -pe 's:^./::' | parallel -0 -v touch -- {}/abc-{}-{} 2>&1 \ | perl -e 'print sort (<>)' | md5sum echo -n 'There are ' find . -type d -print0 | perl -0 -ne '$a++;END{print $a}' @@ -18,7 +16,7 @@ echo -n ' dirs with ' find . -type f -print0 | perl -0 -ne '$a++;END{print $a}' echo ' files' echo 'Removing files' -find . -type d -print0 | perl -0 -pe 's:^./::' | $PAR -0 -v rm -- {}/abc-{}-{} 2>&1 \ +find . -type d -print0 | perl -0 -pe 's:^./::' | parallel -0 -v rm -- {}/abc-{}-{} 2>&1 \ | perl -e 'print sort (<>)' | md5sum echo -n 'There are ' find . -type d -print0 | perl -0 -ne '$a++;END{print $a}' @@ -26,7 +24,7 @@ echo -n ' dirs with ' find . -type f -print0 | perl -0 -ne '$a++;END{print $a}' echo ' files' echo 'Removing dirs' -find . -type d -print0 | perl -0 -pe 's:^./::' | $PAR -0 -v rmdir -- {} 2>&1 \ +find . -type d -print0 | perl -0 -pe 's:^./::' | parallel -0 -v rmdir -- {} 2>&1 \ | perl -e 'print sort (<>)' | md5sum echo -n 'There are ' find . -type d -print0 | perl -0 -ne '$a++;END{print $a}' diff --git a/testsuite/wanted-results/test04 b/testsuite/wanted-results/test04 index 01f714ae94f90b800496453664ecf1a07f40d6dd..c21993577a5ef36b529c06382bd6deec40d0ccc6 100644 GIT binary patch delta 117 zcmWN}!41PO2mnASJLK1gHzd#2a;{Nc}fAz}?%uUGE|@as*@-6gIX{ z844Jc328)KCznv_kI76;K%8xIWRhAR4xa0Lt?yp4qRu>;v_pXbQ}k)rAydiC*6;HN D6w)Ie delta 117 zcmV~$K@Gz&35R6o=l(uQhGkY;=>t$=NM%uLK D59=fG diff --git a/testsuite/wanted-results/test05 b/testsuite/wanted-results/test05 index 62ecb2bf..39ac577e 100644 --- a/testsuite/wanted-results/test05 +++ b/testsuite/wanted-results/test05 @@ -1,8 +1,8 @@ -071eca55ffd15717546273235adeb775 - +497efe2559ec1b70289bcdeb1bf9d049 - There are 6246 dirs with 6246 files Removing files -4e2ffc66811f839854f2f0071c1e0541 - +0b265d2499d13ed6adc8cd20813c963a - There are 6246 dirs with files Removing dirs -1c91bf0327094531133e6ad95d2e23f5 - +05b6f40267e8a40977c1bf1a17cac3b6 - There are 1 dirs with files diff --git a/testsuite/wanted-results/test15 b/testsuite/wanted-results/test15 index 9eabf027..4d1ba0b4 100644 --- a/testsuite/wanted-results/test15 +++ b/testsuite/wanted-results/test15 @@ -530,106 +530,106 @@ h i 97 98 99 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 1 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 10 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 100 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 11 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 12 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 13 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 14 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 15 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 16 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 17 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 18 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 19 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 2 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 20 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 21 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 22 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 23 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 24 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 25 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 26 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 27 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 28 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 29 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 3 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 30 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 31 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 32 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 33 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 34 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 35 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 36 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 37 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 38 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 39 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 4 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 40 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 41 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 42 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 43 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 44 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 45 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 46 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 47 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 48 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 49 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 5 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 50 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 51 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 52 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 53 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 54 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 55 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 56 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 57 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 58 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 59 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 6 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 60 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 61 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 62 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 63 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 64 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 65 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 66 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 67 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 68 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 69 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 7 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 70 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 71 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 72 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 73 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 74 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 75 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 76 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 77 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 78 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 79 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 8 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 80 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 81 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 82 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 83 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 84 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 85 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 86 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 87 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 88 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 89 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 9 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 90 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 91 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 92 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 93 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 94 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 95 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 96 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 97 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 98 -perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 99 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 1 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 10 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 100 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 11 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 12 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 13 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 14 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 15 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 16 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 17 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 18 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 19 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 2 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 20 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 21 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 22 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 23 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 24 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 25 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 26 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 27 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 28 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 29 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 3 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 30 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 31 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 32 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 33 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 34 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 35 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 36 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 37 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 38 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 39 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 4 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 40 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 41 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 42 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 43 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 44 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 45 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 46 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 47 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 48 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 49 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 5 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 50 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 51 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 52 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 53 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 54 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 55 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 56 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 57 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 58 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 59 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 6 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 60 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 61 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 62 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 63 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 64 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 65 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 66 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 67 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 68 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 69 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 7 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 70 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 71 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 72 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 73 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 74 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 75 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 76 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 77 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 78 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 79 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 8 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 80 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 81 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 82 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 83 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 84 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 85 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 86 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 87 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 88 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 89 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 9 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 90 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 91 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 92 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 93 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 94 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 95 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 96 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 97 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 98 +perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 99 ### Test 0-arguments n0 n0 diff --git a/testsuite/wanted-results/test61 b/testsuite/wanted-results/test61 index 6367be23..22ab1ea1 100644 --- a/testsuite/wanted-results/test61 +++ b/testsuite/wanted-results/test61 @@ -1,5 +1,5 @@ ### Test --return of weirdly named file -ssh parallel-server3 'eval `echo $SHELL | grep -E "/(t)?csh" > /dev/null && echo setenv PARALLEL_SEQ '$PARALLEL_SEQ'\; setenv PARALLEL_PID '$PARALLEL_PID' || echo PARALLEL_SEQ='$PARALLEL_SEQ'\;export PARALLEL_SEQ\;PARALLEL_PID='$PARALLEL_PID'\;export PARALLEL_PID` ;' echo\ \>aa\\\<\\\${\\\#}\\\"\\\ b;_EXIT_status=$?; rsync -rlDzR -essh parallel-server3:././aa\\\<\\\${\\\#}\\\"\\\ b ./; exit $_EXIT_status; +ssh parallel-server3 'eval `echo $SHELL | grep -E "/(t)?csh" > /dev/null && echo setenv PARALLEL_SEQ '$PARALLEL_SEQ'\; setenv PARALLEL_PID '$PARALLEL_PID' || echo PARALLEL_SEQ='$PARALLEL_SEQ'\;export PARALLEL_SEQ\;PARALLEL_PID='$PARALLEL_PID'\;export PARALLEL_PID` ;' echo\ \>aa\\\<\\\$\\\{\\\#\\\}\\\"\\\ b;_EXIT_status=$?; rsync -rlDzR -essh parallel-server3:././aa\\\<\\\$\\\{\\\#\\\}\\\"\\\ b ./; exit $_EXIT_status; ### Test if remote login shell is csh ssh csh@localhost 'eval `echo $SHELL | grep -E "/(t)?csh" > /dev/null && echo setenv PARALLEL_SEQ '$PARALLEL_SEQ'\; setenv PARALLEL_PID '$PARALLEL_PID' || echo PARALLEL_SEQ='$PARALLEL_SEQ'\;export PARALLEL_SEQ\;PARALLEL_PID='$PARALLEL_PID'\;export PARALLEL_PID` ;' echo\ \$PARALLEL_PID\ \$PARALLEL_SEQ\ a\|\ wc\ -w; 3