* [PATCH] Convert open("-|") to qx{} calls
@ 2006-02-23 14:33 Johannes Schindelin
2006-02-23 15:38 ` Alex Riesen
0 siblings, 1 reply; 13+ messages in thread
From: Johannes Schindelin @ 2006-02-23 14:33 UTC (permalink / raw
To: git, junkio
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
Since of these 4, I only use cvsimport myself, I could only test
that. Could someone who uses the others give them a hard beating?
git-cvsimport.perl | 64 +++++++++++++++++++--------------------------------
git-rerere.perl | 9 ++-----
git-send-email.perl | 9 ++-----
git-svnimport.perl | 62 ++++++++++++++-----------------------------------
4 files changed, 46 insertions(+), 98 deletions(-)
b37d21c223fdc0ef7fc6af889432f6b51ac82992
diff --git a/git-cvsimport.perl b/git-cvsimport.perl
index b46469a..da009f2 100755
--- a/git-cvsimport.perl
+++ b/git-cvsimport.perl
@@ -478,9 +478,9 @@ unless(-d $git_dir) {
"Either use the correct '-o branch' option,\n".
"or import to a new repository.\n";
- open(F, "git-symbolic-ref HEAD |") or
- die "Cannot run git-symbolic-ref: $!\n";
- chomp ($last_branch = <F>);
+ $last_branch = qx{git-symbolic-ref HEAD};
+ !$? or exit $?;
+ chomp ($last_branch);
$last_branch = basename($last_branch);
close(F);
unless($last_branch) {
@@ -516,13 +516,12 @@ EOM
or die "Bad head branch: $head: $!\n";
chomp(my $ftag = <F>);
close(F);
- open(F,"git-cat-file commit $ftag |");
- while(<F>) {
+ foreach (qx{git-cat-file commit $ftag}) {
next unless /^author\s.*\s(\d+)\s[-+]\d{4}$/;
$branch_date{$head} = $1;
last;
}
- close(F);
+ !$? or exit $?;
}
closedir(D);
}
@@ -538,24 +537,21 @@ if ($opt_A) {
write_author_info("$git_dir/cvs-authors");
}
-my $pid = open(CVS,"-|");
-die "Cannot fork: $!\n" unless defined $pid;
-unless($pid) {
- my @opt;
- @opt = split(/,/,$opt_p) if defined $opt_p;
- unshift @opt, '-z', $opt_z if defined $opt_z;
- unshift @opt, '-q' unless defined $opt_v;
- unless (defined($opt_p) && $opt_p =~ m/--no-cvs-direct/) {
- push @opt, '--cvs-direct';
- }
- if ($opt_P) {
- exec("cat", $opt_P);
- } else {
- exec("cvsps","--norc",@opt,"-u","-A",'--root',$opt_d,$cvs_tree);
- die "Could not start cvsps: $!\n";
- }
+my @opt;
+@opt = split(/,/,$opt_p) if defined $opt_p;
+unshift @opt, '-z', $opt_z if defined $opt_z;
+unshift @opt, '-q' unless defined $opt_v;
+unless (defined($opt_p) && $opt_p =~ m/--no-cvs-direct/) {
+ push @opt, '--cvs-direct';
}
+my @input;
+if ($opt_P) {
+ @input = qx{cat $opt_P};
+} else {
+ @input = qx{cvsps --norc opt -u -A --root $opt_d $cvs_tree};
+ !$? or exit $?;
+}
## cvsps output:
#---------------------
@@ -603,17 +599,11 @@ my $commit = sub {
die "Cannot add files: $?\n" if $?;
}
- $pid = open(C,"-|");
- die "Cannot fork: $!" unless defined $pid;
- unless($pid) {
- exec("git-write-tree");
- die "Cannot exec git-write-tree: $!\n";
- }
- chomp(my $tree = <C>);
+ my $tree = qx{git-write-tree};
+ !$? or exit $?;
+ chomp($tree);
length($tree) == 40
or die "Cannot get tree id ($tree): $!\n";
- close(C)
- or die "Error running git-write-tree: $?\n";
print "Tree ID $tree\n" if $opt_v;
my $parent = "";
@@ -734,7 +724,7 @@ my $commit = sub {
}
};
-while(<CVS>) {
+foreach (@input) {
chomp;
if($state == 0 and /^-+$/) {
$state = 1;
@@ -846,15 +836,9 @@ while(<CVS>) {
print "Drop $fn\n" if $opt_v;
} else {
print "".($init ? "New" : "Update")." $fn: $size bytes\n" if $opt_v;
- my $pid = open(my $F, '-|');
- die $! unless defined $pid;
- if (!$pid) {
- exec("git-hash-object", "-w", $tmpname)
- or die "Cannot create object: $!\n";
- }
- my $sha = <$F>;
+ my $sha = qx{git-hash-object -w $tmpname};
+ !$? or exit $?;
chomp $sha;
- close $F;
my $mode = pmode($cvs->{'mode'});
push(@new,[$mode, $sha, $fn]); # may be resurrected!
}
diff --git a/git-rerere.perl b/git-rerere.perl
index d3664ff..0dd04c5 100755
--- a/git-rerere.perl
+++ b/git-rerere.perl
@@ -131,20 +131,15 @@ sub record_preimage {
sub find_conflict {
my $in;
local $/ = "\0";
- my $pid = open($in, '-|');
- die "$!" unless defined $pid;
- if (!$pid) {
- exec(qw(git ls-files -z -u)) or die "$!: ls-files";
- }
my %path = ();
my @path = ();
- while (<$in>) {
+ foreach (qx{git-ls-files -z -u}) {
chomp;
my ($mode, $sha1, $stage, $path) =
/^([0-7]+) ([0-9a-f]{40}) ([123])\t(.*)$/s;
$path{$path} |= (1 << $stage);
}
- close $in;
+ !$? or exit $?;
while (my ($path, $status) = each %path) {
if ($status == 14) { push @path, $path; }
}
diff --git a/git-send-email.perl b/git-send-email.perl
index b0d095b..bd8fae6 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -62,13 +62,8 @@ my $rc = GetOptions("from=s" => \$from,
sub gitvar {
my ($var) = @_;
my $fh;
- my $pid = open($fh, '-|');
- die "$!" unless defined $pid;
- if (!$pid) {
- exec('git-var', $var) or die "$!";
- }
- my ($val) = <$fh>;
- close $fh or die "$!";
+ my ($val) = qx{git-var $var};
+ !$? or exit $?;
chomp($val);
return $val;
}
diff --git a/git-svnimport.perl b/git-svnimport.perl
index ee2940f..6094a11 100755
--- a/git-svnimport.perl
+++ b/git-svnimport.perl
@@ -218,11 +218,10 @@ unless(-d $git_dir) {
-f "$git_dir/svn2git"
or die "'$git_dir/svn2git' does not exist.\n".
"You need that file for incremental imports.\n";
- open(F, "git-symbolic-ref HEAD |") or
- die "Cannot run git-symbolic-ref: $!\n";
- chomp ($last_branch = <F>);
+ $last_brach = qx{git-symbolic-ref HEAD};
+ !$? or exit $?;
+ chomp $last_branch;
$last_branch = basename($last_branch);
- close(F);
unless($last_branch) {
warn "Cannot read the last branch name: $! -- assuming 'master'\n";
$last_branch = "master";
@@ -321,15 +320,9 @@ sub get_file($$$) {
return undef unless defined $name;
}
- my $pid = open(my $F, '-|');
- die $! unless defined $pid;
- if (!$pid) {
- exec("git-hash-object", "-w", $name)
- or die "Cannot create object: $!\n";
- }
- my $sha = <$F>;
+ my $sha = qx{git-hash-object -w $name};
+ !$? or exit $?;
chomp $sha;
- close $F;
unlink $name;
my $mode = "0644"; # SV does not seem to store any file modes
return [$mode, $sha, $path];
@@ -401,14 +394,8 @@ sub copy_path($$$$$$$$) {
$srcpath =~ s#/*$#/#;
}
- my $pid = open my $f,'-|';
- die $! unless defined $pid;
- if (!$pid) {
- exec("git-ls-tree","-r","-z",$gitrev,$srcpath)
- or die $!;
- }
local $/ = "\0";
- while(<$f>) {
+ foreach (qx{git-ls-tree -r -z $gitrev $srcpath}) {
chomp;
my($m,$p) = split(/\t/,$_,2);
my($mode,$type,$sha1) = split(/ /,$m);
@@ -420,8 +407,7 @@ sub copy_path($$$$$$$$) {
}
push(@$new,[$mode,$sha1,$p]);
}
- close($f) or
- print STDERR "$newrev:$newbranch: could not list files in $oldpath \@ $rev\n";
+ !$? or exit $?;
}
sub commit {
@@ -472,9 +458,8 @@ sub commit {
my $rev;
if($revision > $opt_s and defined $parent) {
- open(H,"git-rev-parse --verify $parent |");
- $rev = <H>;
- close(H) or do {
+ $rev = qx{git-rev-parse --verify $parent};
+ !$? or do {
print STDERR "$revision: cannot find commit '$parent'!\n";
return;
};
@@ -555,25 +540,20 @@ sub commit {
}
while(@old) {
- my @o1;
+ my @o2;
if(@old > 55) {
- @o1 = splice(@old,0,50);
+ @o2 = splice(@old,0,50);
} else {
- @o1 = @old;
+ @o2 = @old;
@old = ();
}
- my $pid = open my $F, "-|";
- die "$!" unless defined $pid;
- if (!$pid) {
- exec("git-ls-files", "-z", @o1) or die $!;
- }
- @o1 = ();
+ my @o1 = ();
local $/ = "\0";
- while(<$F>) {
+ foreach (qx{git-ls-files -z @o1}) {
chomp;
push(@o1,$_);
}
- close($F);
+ !$? or exit $?;
while(@o1) {
my @o2;
@@ -600,17 +580,11 @@ sub commit {
die "Cannot add files: $?\n" if $?;
}
- my $pid = open(C,"-|");
- die "Cannot fork: $!" unless defined $pid;
- unless($pid) {
- exec("git-write-tree");
- die "Cannot exec git-write-tree: $!\n";
- }
- chomp(my $tree = <C>);
+ my $tree = qx{git-write-tree};
+ !$? or exit $?;
+ chomp($tree);
length($tree) == 40
or die "Cannot get tree id ($tree): $!\n";
- close(C)
- or die "Error running git-write-tree: $?\n";
print "Tree ID $tree\n" if $opt_v;
my $pr = IO::Pipe->new() or die "Cannot open pipe: $!\n";
--
1.2.3.gb37d
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 14:33 [PATCH] Convert open("-|") to qx{} calls Johannes Schindelin
@ 2006-02-23 15:38 ` Alex Riesen
2006-02-23 16:07 ` Randal L. Schwartz
0 siblings, 1 reply; 13+ messages in thread
From: Alex Riesen @ 2006-02-23 15:38 UTC (permalink / raw
To: Johannes Schindelin; +Cc: git, junkio
On 2/23/06, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> Since of these 4, I only use cvsimport myself, I could only test
> that. Could someone who uses the others give them a hard beating?
I can't really test them (no svn and cvs, and locked down network), but I took
a look at the patches. Hope it helps.
git-cvsimport:
> - open(F,"git-cat-file commit $ftag |");
> - while(<F>) {
> + foreach (qx{git-cat-file commit $ftag}) {
> next unless /^author\s.*\s(\d+)\s[-+]\d{4}$/;
Are you sure you don't need quoting/safe pipe here?
Or is it a CVS tag?
> +} else {
> + @input = qx{cvsps --norc opt -u -A --root $opt_d $cvs_tree};
> + !$? or exit $?;
Same here. $cvs_tree can contain any filesystem-allowed character.
git-svnimport:
> - my $sha = <$F>;
> + my $sha = qx{git-hash-object -w $tmpname};
> + !$? or exit $?;
Is $tmpname safe?
> - my $sha = <$F>;
> + my $sha = qx{git-hash-object -w $name};
> + !$? or exit $?;
Is $name safe?
> - while(<$f>) {
> + foreach (qx{git-ls-tree -r -z $gitrev $srcpath}) {
> chomp;
Is $srcpath safe?
> - while(<$F>) {
> + foreach (qx{git-ls-files -z @o1}) {
@o1 must contain filenames. Can be dangerous
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 15:38 ` Alex Riesen
@ 2006-02-23 16:07 ` Randal L. Schwartz
2006-02-23 17:53 ` Junio C Hamano
0 siblings, 1 reply; 13+ messages in thread
From: Randal L. Schwartz @ 2006-02-23 16:07 UTC (permalink / raw
To: Alex Riesen; +Cc: Johannes Schindelin, git, junkio
>>>>> "Alex" == Alex Riesen <raa.lkml@gmail.com> writes:
Alex> Is $tmpname safe?
>> - my $sha = <$F>;
>> + my $sha = qx{git-hash-object -w $name};
>> + !$? or exit $?;
Alex> Is $name safe?
>> - while(<$f>) {
>> + foreach (qx{git-ls-tree -r -z $gitrev $srcpath}) {
>> chomp;
Alex> Is $srcpath safe?
>> - while(<$F>) {
>> + foreach (qx{git-ls-files -z @o1}) {
Alex> @o1 must contain filenames. Can be dangerous
Convert all of these to use "safe_qx" (perl 5.6 compatible):
sub safe_qx {
defined (my $pid = open my $kid, "-|") or die "Cannot fork: $!";
unless ($pid) { # child does:
exec @_;
die "Cannot exec @_: $!";
}
my $result = do { local $/; <$kid> };
close $kid; # sets $?
return $result;
}
my $result = safe_qx('some shell command');
my $other_result = safe_qx('git-ls-tree', '-r', '-z', $gitrev, $srcpath);
Args are safe, as if being passed to system/exec, so a single arg
can be a shell command, multiargs are passed arg-by-arg to a single
exec target. $? is set correctly.
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 16:07 ` Randal L. Schwartz
@ 2006-02-23 17:53 ` Junio C Hamano
2006-02-23 18:42 ` Randal L. Schwartz
0 siblings, 1 reply; 13+ messages in thread
From: Junio C Hamano @ 2006-02-23 17:53 UTC (permalink / raw
To: Randal L. Schwartz; +Cc: Alex Riesen, Johannes Schindelin, git
merlyn@stonehenge.com (Randal L. Schwartz) writes:
> Convert all of these to use "safe_qx" (perl 5.6 compatible):
>
> sub safe_qx {
> defined (my $pid = open my $kid, "-|") or die "Cannot fork: $!";
>...
IIRC, that is backwards. The thread's conversion is not about
5.6 vs 5.8. The conversion like what you suggested above was
done, but the thing is, and Alex's Perl is unhappy about it.
The version of Perl Alex has to use claims to be 5.8, but does
not understand open($kid, '-|'), and he is trying to come up
with a workaround.
I wish Perl had a stricter trademark policy that required
language features to be fully ported for an implementation to
use that name ;-).
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 17:53 ` Junio C Hamano
@ 2006-02-23 18:42 ` Randal L. Schwartz
2006-02-23 19:41 ` Johannes Schindelin
0 siblings, 1 reply; 13+ messages in thread
From: Randal L. Schwartz @ 2006-02-23 18:42 UTC (permalink / raw
To: Junio C Hamano; +Cc: Alex Riesen, Johannes Schindelin, git
>>>>> "Junio" == Junio C Hamano <junkio@cox.net> writes:
Junio> The version of Perl Alex has to use claims to be 5.8, but does
Junio> not understand open($kid, '-|'), and he is trying to come up
Junio> with a workaround.
Ahh, the problem is activestate then. If that's the case, then amend the code
with a check for $^O (operating system) that falls back to a qx if on
activestate, and hope that filenames aren't a problem. Unfortunately, I don't
know enough about that to fix it.
But whatever you do, *don't* replace safe_qx with qx() for all other systems,
or you'll be opening up a can of worms for those of us on sensible systems.
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 18:42 ` Randal L. Schwartz
@ 2006-02-23 19:41 ` Johannes Schindelin
2006-02-23 20:41 ` Randal L. Schwartz
0 siblings, 1 reply; 13+ messages in thread
From: Johannes Schindelin @ 2006-02-23 19:41 UTC (permalink / raw
To: Randal L. Schwartz; +Cc: Junio C Hamano, Alex Riesen, git
Hi,
On Thu, 23 Feb 2006, Randal L. Schwartz wrote:
> >>>>> "Junio" == Junio C Hamano <junkio@cox.net> writes:
>
> Junio> The version of Perl Alex has to use claims to be 5.8, but does
> Junio> not understand open($kid, '-|'), and he is trying to come up
> Junio> with a workaround.
>
> Ahh, the problem is activestate then. If that's the case, then amend
> the code with a check for $^O (operating system) that falls back to a qx
> if on activestate, and hope that filenames aren't a problem.
> Unfortunately, I don't know enough about that to fix it.
Now that our local Perl guru joined the discussion, may I ask what is, and
what is not quoted when put inside qx{}? I had the impression that all
arguments are quoted, except that variables are resolved first. Was that
wrong? IOW does
qx{bash $variable}
quote the value of $variable, or not?
Ciao,
Dscho
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 19:41 ` Johannes Schindelin
@ 2006-02-23 20:41 ` Randal L. Schwartz
2006-02-23 21:14 ` Alex Riesen
0 siblings, 1 reply; 13+ messages in thread
From: Randal L. Schwartz @ 2006-02-23 20:41 UTC (permalink / raw
To: Johannes Schindelin; +Cc: Junio C Hamano, Alex Riesen, git
>>>>> "Johannes" == Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Johannes> Now that our local Perl guru joined the discussion, may I ask what
Johannes> is, and what is not quoted when put inside qx{}?
Nothing is quoted. Your string acts as if it was XXX in:
sh -c 'XXX'
so any quoting is entirely on your own. Thus, without the multi-arg exec in
my proposed replacement, you can get shell-ish interactions that can ruin your
day pretty bad.
Johannes> I had the
Johannes> impression that all arguments are quoted, except that variables are
Johannes> resolved first. Was that wrong? IOW does
Johannes> qx{bash $variable}
Johannes> quote the value of $variable, or not?
The Perl $variable is expanded to its current contents. But suppose the
contents are `date` (including the backquotes). That would mean that a shell
would execute a date command, and *its* output would then contribute further
to the command invocation.
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 20:41 ` Randal L. Schwartz
@ 2006-02-23 21:14 ` Alex Riesen
2006-02-23 21:15 ` Randal L. Schwartz
2006-02-24 5:19 ` Rogan Dawes
0 siblings, 2 replies; 13+ messages in thread
From: Alex Riesen @ 2006-02-23 21:14 UTC (permalink / raw
To: Randal L. Schwartz; +Cc: Johannes Schindelin, Junio C Hamano, git
Randal L. Schwartz, Thu, Feb 23, 2006 21:41:44 +0100:
> Johannes> Now that our local Perl guru joined the discussion, may I ask what
> Johannes> is, and what is not quoted when put inside qx{}?
>
> Nothing is quoted. Your string acts as if it was XXX in:
>
> sh -c 'XXX'
>
Not so for ActiveState. It'll just run the first non-whitespace word
passing the rest of the line in its command-line.
It's not even worse then to pass it all to cmd/command :)
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 21:14 ` Alex Riesen
@ 2006-02-23 21:15 ` Randal L. Schwartz
2006-02-24 5:19 ` Rogan Dawes
1 sibling, 0 replies; 13+ messages in thread
From: Randal L. Schwartz @ 2006-02-23 21:15 UTC (permalink / raw
To: Alex Riesen; +Cc: Johannes Schindelin, Junio C Hamano, git
>>>>> "Alex" == Alex Riesen <raa.lkml@gmail.com> writes:
Alex> Randal L. Schwartz, Thu, Feb 23, 2006 21:41:44 +0100:
Johannes> Now that our local Perl guru joined the discussion, may I ask what
Johannes> is, and what is not quoted when put inside qx{}?
>>
>> Nothing is quoted. Your string acts as if it was XXX in:
>>
>> sh -c 'XXX'
>>
Alex> Not so for ActiveState. It'll just run the first non-whitespace word
Alex> passing the rest of the line in its command-line.
Alex> It's not even worse then to pass it all to cmd/command :)
Right. That's why I suggest (in a later message) that safe_qx merely
fall back to qx() on Activestate. Can't go much more wrong. :)
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-23 21:14 ` Alex Riesen
2006-02-23 21:15 ` Randal L. Schwartz
@ 2006-02-24 5:19 ` Rogan Dawes
2006-02-24 13:27 ` Alex Riesen
1 sibling, 1 reply; 13+ messages in thread
From: Rogan Dawes @ 2006-02-24 5:19 UTC (permalink / raw
To: Alex Riesen; +Cc: Johannes Schindelin, Junio C Hamano, git
Alex Riesen wrote:
> Randal L. Schwartz, Thu, Feb 23, 2006 21:41:44 +0100:
>> Johannes> Now that our local Perl guru joined the discussion, may I ask what
>> Johannes> is, and what is not quoted when put inside qx{}?
>>
>> Nothing is quoted. Your string acts as if it was XXX in:
>>
>> sh -c 'XXX'
>>
>
> Not so for ActiveState. It'll just run the first non-whitespace word
> passing the rest of the line in its command-line.
> It's not even worse then to pass it all to cmd/command :)
>
Not true.
> type t
#!perl -w
print qx{echo joe & echo joe}."\n";
> perl t
joe
joe
>
If the shell was not interpreting the arguments, you would expect to get
1 line with:
joe & echo joe
on it.
> perl -v
This is perl, v5.8.7 built for MSWin32-x86-multi-thread
(with 7 registered patches, see perl -V for more detail)
Copyright 1987-2005, Larry Wall
Binary build 813 [148120] provided by ActiveState http://www.ActiveState.com
ActiveState is a division of Sophos.
Built Jun 6 2005 13:36:37
Perl may be copied only under the terms of either the Artistic License
or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
Regards,
Rogan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-24 5:19 ` Rogan Dawes
@ 2006-02-24 13:27 ` Alex Riesen
2006-02-24 14:29 ` Rogan Dawes
0 siblings, 1 reply; 13+ messages in thread
From: Alex Riesen @ 2006-02-24 13:27 UTC (permalink / raw
To: Rogan Dawes; +Cc: Johannes Schindelin, Junio C Hamano, git
On 2/24/06, Rogan Dawes <discard@dawes.za.net> wrote:
> Alex Riesen wrote:
> > Randal L. Schwartz, Thu, Feb 23, 2006 21:41:44 +0100:
> >> Johannes> Now that our local Perl guru joined the discussion, may I ask what
> >> Johannes> is, and what is not quoted when put inside qx{}?
> >>
> >> Nothing is quoted. Your string acts as if it was XXX in:
> >>
> >> sh -c 'XXX'
> >>
> >
> > Not so for ActiveState. It'll just run the first non-whitespace word
> > passing the rest of the line in its command-line.
> > It's not even worse then to pass it all to cmd/command :)
> >
>
> Not true.
>
> > type t
> #!perl -w
>
> print qx{echo joe & echo joe}."\n";
> > perl t
> joe
> joe
>
Does not seem to be the case here (and yes, I check build 815 too):
$ perl -v
This is perl, v5.8.6 built for MSWin32-x86-multi-thread
(with 3 registered patches, see perl -V for more detail)
Copyright 1987-2004, Larry Wall
Binary build 811 provided by ActiveState Corp. http://www.ActiveState.com
ActiveState is a division of Sophos.
Built Dec 13 2004 09:52:01
...
$ perl -e 'print qx{echo joe & echo joe}."\n";'
joe & echo joe
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-24 13:27 ` Alex Riesen
@ 2006-02-24 14:29 ` Rogan Dawes
2006-02-24 15:25 ` Alex Riesen
0 siblings, 1 reply; 13+ messages in thread
From: Rogan Dawes @ 2006-02-24 14:29 UTC (permalink / raw
To: Alex Riesen; +Cc: Johannes Schindelin, Junio C Hamano, git
Alex Riesen wrote:
> On 2/24/06, Rogan Dawes <discard@dawes.za.net> wrote:
> > Not true.
>>
>> > type t
>> #!perl -w
>>
>> print qx{echo joe & echo joe}."\n";
>> > perl t
>> joe
>> joe
>>
>
> Does not seem to be the case here (and yes, I check build 815 too):
>
> $ perl -v
>
> This is perl, v5.8.6 built for MSWin32-x86-multi-thread
> (with 3 registered patches, see perl -V for more detail)
>
> Copyright 1987-2004, Larry Wall
>
> Binary build 811 provided by ActiveState Corp. http://www.ActiveState.com
> ActiveState is a division of Sophos.
> Built Dec 13 2004 09:52:01
> ...
>
> $ perl -e 'print qx{echo joe & echo joe}."\n";'
> joe & echo joe
Interesting. I tried to do that one-liner at a DOS prompt (not cygwin,
which I assume you are using), and I was unable to do so. CMD was seeing
the "&" first, and splitting the command in 2, namely
perl -e 'print qx joe
and
echo joe}."\n";'
which obviously didn't work.
Do you get the same results if you run it from a DOS prompt? and via a file?
Rogan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Convert open("-|") to qx{} calls
2006-02-24 14:29 ` Rogan Dawes
@ 2006-02-24 15:25 ` Alex Riesen
0 siblings, 0 replies; 13+ messages in thread
From: Alex Riesen @ 2006-02-24 15:25 UTC (permalink / raw
To: Rogan Dawes; +Cc: Johannes Schindelin, Junio C Hamano, git
On 2/24/06, Rogan Dawes <discard@dawes.za.net> wrote:
> Interesting. I tried to do that one-liner at a DOS prompt (not cygwin,
> which I assume you are using), and I was unable to do so.
Yes, it was from cygwin's bash.
> Do you get the same results if you run it from a DOS prompt? and via a file?
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\>perl -e 'print qx{echo joe & echo joe}'
Can't find string terminator "'" anywhere before EOF at -e line 1.
joe}'
C:\>perl -e "print qx{echo joe & echo joe}"
joe & echo joe
C:\>perl x.pl
joe & echo joe
C:\>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2006-02-24 15:25 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-23 14:33 [PATCH] Convert open("-|") to qx{} calls Johannes Schindelin
2006-02-23 15:38 ` Alex Riesen
2006-02-23 16:07 ` Randal L. Schwartz
2006-02-23 17:53 ` Junio C Hamano
2006-02-23 18:42 ` Randal L. Schwartz
2006-02-23 19:41 ` Johannes Schindelin
2006-02-23 20:41 ` Randal L. Schwartz
2006-02-23 21:14 ` Alex Riesen
2006-02-23 21:15 ` Randal L. Schwartz
2006-02-24 5:19 ` Rogan Dawes
2006-02-24 13:27 ` Alex Riesen
2006-02-24 14:29 ` Rogan Dawes
2006-02-24 15:25 ` Alex Riesen
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).