{"thread":{"id":"2976","subject":"[PATCH] git-mv.perl: use stderr for error output and cleanup","startedAt":"2006-01-05T11:49:45Z","lastAt":"2006-01-10T22:26:04Z","messageCount":14,"participants":["Alex Riesen","Junio C Hamano","Randal L. Schwartz","Linus Torvalds","Andreas Ericsson"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"14178","messageId":"81b0412b0601050349s6bec1a36jc410fd315fbbc4c@mail.gmail.com","threadId":"2976","inReplyTo":null,"subject":"[PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2006-01-05T11:49:45Z","receivedAt":"2006-01-05T11:49:45Z","isPatch":true,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Signed-off-by: Alex Riesen <raa.lkml@gmail.com>\n---\nIt is cleaned up in the \"Perl' meaning\" of process: trivial loops\nreplaced with map{}\n\n\nSubject: [PATCH] use stderr for error output and cleanup\n\nSigned-off-by: Alex Riesen <raa.lkml@gmail.com>\n\n\n---\n\n git-mv.perl |   38 ++++++++++++++------------------------\n 1 files changed, 14 insertions(+), 24 deletions(-)\n\n487484f85df999ad949123800e1ab4a24458370b\ndiff --git a/git-mv.perl b/git-mv.perl\nindex 83dc7e4..5e7addf 100755\n--- a/git-mv.perl\n+++ b/git-mv.perl\n@@ -37,7 +37,7 @@ if (-d $ARGV[$argCount-1]) {\n \t# remove any trailing slash\n \t$dstDir =~ s/\\/$//;\n \t@srcArgs = @ARGV[0..$argCount-2];\n-\t\n+\n \tforeach $src (@srcArgs) {\n \t\t$base = $src;\n \t\t$base =~ s/^.*\\///;\n@@ -47,10 +47,9 @@ if (-d $ARGV[$argCount-1]) {\n }\n else {\n     if ($argCount != 2) {\n-\tprint \"Error: moving to directory '\"\n+\tdie \"Error: moving to directory '\"\n \t    . $ARGV[$argCount-1]\n-\t    . \"' not possible; not exisiting\\n\";\n-\texit(1);\n+\t    . \"' not possible; not existing\\n\";\n     }\n     @srcArgs = ($ARGV[0]);\n     @dstArgs = ($ARGV[1]);\n@@ -63,7 +62,7 @@ my (%overwritten, %srcForDst);\n \n $/ = \"\\0\";\n open(F, 'git-ls-files -z |')\n-        or die \"Failed to open pipe from git-ls-files: \" . $!;\n+        or die \"Failed to open pipe from git-ls-files: $!\\n\";\n \n @allfiles = map { chomp; $_; } <F>;\n close(F);\n@@ -92,7 +91,7 @@ while(scalar @srcArgs > 0) {\n \tif ($opt_f) {\n \t    # only files can overwrite each other: check both source and destination\n \t    if (-f $dst && (scalar @srcfiles == 1)) {\n-\t\tprint \"Warning: $bad; will overwrite!\\n\";\n+\t\twarn \"Warning: $bad; will overwrite!\\n\";\n \t\t$bad = \"\";\n \t\t$overwritten{$dst} = 1;\n \t    }\n@@ -101,7 +100,7 @@ while(scalar @srcArgs > 0) {\n \t    }\n \t}\n     }\n-    \n+\n     if (($bad eq \"\") && ($dst =~ /^$safesrc\\//)) {\n \t$bad = \"can not move directory '$src' into itself\";\n     }\n@@ -124,11 +123,10 @@ while(scalar @srcArgs > 0) {\n \n     if ($bad ne \"\") {\n \tif ($opt_k) {\n-\t    print \"Warning: $bad; skipping\\n\";\n+\t    warn \"Warning: $bad; skipping\\n\";\n \t    next;\n \t}\n-\tprint \"Error: $bad\\n\";\n-\texit(1);\n+\tdie \"Error: $bad\\n\";\n     }\n     push @srcs, $src;\n     push @dsts, $dst;\n@@ -146,7 +144,7 @@ while(scalar @srcs > 0) {\n \tif (!rename($src,$dst)) {\n \t    $bad = \"renaming '$src' failed: $!\";\n \t    if ($opt_k) {\n-\t\tprint \"Warning: skipped: $bad\\n\";\n+\t\twarn \"Warning: skipped: $bad\\n\";\n \t\t$bad = \"\";\n \t\tnext;\n \t    }\n@@ -162,6 +160,7 @@ while(scalar @srcs > 0) {\n     push @deletedfiles, @srcfiles;\n     if (scalar @srcfiles == 1) {\n \t# $dst can be a directory with 1 file inside\n+\n \tif ($overwritten{$dst} ==1) {\n \t    push @changedfiles, $dstfiles[0];\n \n@@ -189,30 +188,21 @@ else {\n     if (@changedfiles) {\n \topen(H, \"| git-update-index -z --stdin\")\n \t\tor die \"git-update-index failed to update changed files with code $!\\n\";\n-\tforeach my $fileName (@changedfiles) {\n-\t\tprint H \"$fileName\\0\";\n-\t}\n+\tprint H map {\"$_\\0\"} @changedfiles;\n \tclose(H);\n     }\n     if (@addedfiles) {\n \topen(H, \"| git-update-index --add -z --stdin\")\n \t\tor die \"git-update-index failed to add new names with code $!\\n\";\n-\tforeach my $fileName (@addedfiles) {\n-\t\tprint H \"$fileName\\0\";\n-\t}\n+\tprint H map {\"$_\\0\"} @addedfiles;\n \tclose(H);\n     }\n     if (@deletedfiles) {\n \topen(H, \"| git-update-index --remove -z --stdin\")\n \t\tor die \"git-update-index failed to remove old names with code $!\\n\";\n-\tforeach my $fileName (@deletedfiles) {\n-\t\tprint H \"$fileName\\0\";\n-\t}\n+\tprint H map {\"$_\\0\"} @deletedfiles;\n \tclose(H);\n     }\n }\n \n-if ($bad ne \"\") {\n-    print \"Error: $bad\\n\";\n-    exit(1);\n-}\n+die \"Error: $bad\\n\" if $bad ne \"\";\n-- \n1.0.GIT\n"},{"id":"14209","messageId":"7vek3lq8wu.fsf@assigned-by-dhcp.cox.net","threadId":"2976","inReplyTo":"81b0412b0601050349s6bec1a36jc410fd315fbbc4c@mail.gmail.com","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-01-06T22:38:25Z","receivedAt":"2006-01-06T22:38:25Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alex Riesen <raa.lkml@gmail.com> writes:\n\n> It is cleaned up in the \"Perl' meaning\" of process: trivial loops\n> replaced with map{}\n\nI agree with dies and warns, but I am slightly negative about\nthis one.\n\n> -\tforeach my $fileName (@deletedfiles) {\n> -\t\tprint H \"$fileName\\0\";\n> -\t}\n> +\tprint H map {\"$_\\0\"} @deletedfiles;\n\nAlthough there is always one more way to do the same thing in\nPerl, and there are good idioms that make well written Perl\nprograms very compact and clear, I tend to value readability for\n(competent) programmers whose native language happens to be\nsomething other than Perl.\n\nI think using map{} to build a list to be printed without\ninter-element spaces is far less intuitive than how the code was\noriginally written for non Perl readers.  Using join(\"\\0\", @df)\nmight be easier to read but you would then need terminating NUL,\nand either one of the following are worse:\n\n  do { local ($\") = \"\\0\"; print \"@deletedfiles\\0\" } # this one is buggy\n  do { local ($\\) = \"\\0\"; print for (@deletedfiles); } # impossible to read\n\nSo I'd prefer not touching for (@df) { print H \"$_\\n\" } loops.\n"},{"id":"14214","messageId":"86wthd7ypx.fsf@blue.stonehenge.com","threadId":"2976","inReplyTo":"7vek3lq8wu.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Randal L. Schwartz","fromEmail":"merlyn@stonehenge.com","sentAt":"2006-01-06T22:55:54Z","receivedAt":"2006-01-06T22:55:54Z","isPatch":true,"sender":{"key":"merlyn@stonehenge.com","avatar":"https://gravatar.com/avatar/dc528d210743ff0333e6213f9ee7b33b23f1b7bc1f3c5a8c2d819074ecd7ab19?d=mp&s=160"},"body":">>>>> \"Junio\" == Junio C Hamano <junkio@cox.net> writes:\n\nJunio> So I'd prefer not touching for (@df) { print H \"$_\\n\" } loops.\n\nBeing as I'm a *bit* familiar with Perl, I'd write that as:\n\n  print H \"$_\\0\" for @deletedfiles;\n\nif you want to write \"for\" as \"foreach\", I wouldn't complain either.\nAfter all, that's spelled \"f o r\", but pronounced \"foreach\". :)\n\n-- \nRandal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095\n<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>\nPerl/Unix/security consulting, Technical writing, Comedy, etc. etc.\nSee PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!\n"},{"id":"14215","messageId":"Pine.LNX.4.64.0601061525100.3169@g5.osdl.org","threadId":"2976","inReplyTo":"86wthd7ypx.fsf@blue.stonehenge.com","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2006-01-06T23:28:53Z","receivedAt":"2006-01-06T23:28:53Z","isPatch":true,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 Jan 2006, Randal L. Schwartz wrote:\n\n> >>>>> \"Junio\" == Junio C Hamano <junkio@cox.net> writes:\n> \n> Junio> So I'd prefer not touching for (@df) { print H \"$_\\n\" } loops.\n> \n> Being as I'm a *bit* familiar with Perl, I'd write that as:\n> \n>   print H \"$_\\0\" for @deletedfiles;\n> \n> if you want to write \"for\" as \"foreach\", I wouldn't complain either.\n> After all, that's spelled \"f o r\", but pronounced \"foreach\". :)\n\nIt is official: perl people are crazy.\n\nI'm sorry, Randal, but you're clearly a totally different species.\n\nI just hope you don't cross-breed. Shudder.\n\n\t\tLinus\n"},{"id":"14216","messageId":"86psn49alm.fsf@blue.stonehenge.com","threadId":"2976","inReplyTo":"Pine.LNX.4.64.0601061525100.3169@g5.osdl.org","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Randal L. Schwartz","fromEmail":"merlyn@stonehenge.com","sentAt":"2006-01-06T23:53:57Z","receivedAt":"2006-01-06T23:53:57Z","isPatch":true,"sender":{"key":"merlyn@stonehenge.com","avatar":"https://gravatar.com/avatar/dc528d210743ff0333e6213f9ee7b33b23f1b7bc1f3c5a8c2d819074ecd7ab19?d=mp&s=160"},"body":">>>>> \"Linus\" == Linus Torvalds <torvalds@osdl.org> writes:\n\nLinus> I just hope you don't cross-breed. Shudder.\n\nDon't worry.  So far, I haven't had any offers.\n\n:-)\n\n-- \nRandal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095\n<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>\nPerl/Unix/security consulting, Technical writing, Comedy, etc. etc.\nSee PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!\n"},{"id":"14218","messageId":"Pine.LNX.4.64.0601061603330.3169@g5.osdl.org","threadId":"2976","inReplyTo":"86psn49alm.fsf@blue.stonehenge.com","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2006-01-07T00:10:16Z","receivedAt":"2006-01-07T00:10:16Z","isPatch":true,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 Jan 2006, Randal L. Schwartz wrote:\n> \n> Linus> I just hope you don't cross-breed. Shudder.\n> \n> Don't worry.  So far, I haven't had any offers.\n\nI was more worried about the \"collective\" of perl people, not any \nparticular individual developer.\n\nIf it was just you, I could just poison you over lunch some time..\n\nWhich reminds me - you owe me lunch. A non-poisoned one.\n\n\t\tLinus\n"},{"id":"14220","messageId":"7v4q4grhjy.fsf@assigned-by-dhcp.cox.net","threadId":"2976","inReplyTo":"Pine.LNX.4.64.0601061525100.3169@g5.osdl.org","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-01-07T00:46:25Z","receivedAt":"2006-01-07T00:46:25Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Linus Torvalds <torvalds@osdl.org> writes:\n\n>> After all, that's spelled \"f o r\", but pronounced \"foreach\". :)\n>\n> It is official: perl people are crazy.\n\nI sometimes pronounce \"foreach\" when I see \"ef oh ar\" in Perl\nprograms, but I do not do that aloud around other people.\n\nMy point was that things like this:\n\n>>   print H \"$_\\0\" for @deletedfiles;\n\nis perfectly fine among Perl people (and I would probably even\nencourage rewriting git-*.perl scripts in more Perlish style if\nthe project were about an SCM primarily targetted for Perl\npeople --- it is not), but look obfuscated without merit to\npeople who do not talk Perl.\n"},{"id":"14238","messageId":"20060107102820.GB5536@steel.home","threadId":"2976","inReplyTo":"86wthd7ypx.fsf@blue.stonehenge.com","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2006-01-07T10:28:20Z","receivedAt":"2006-01-07T10:28:20Z","isPatch":true,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Randal L. Schwartz, Fri, Jan 06, 2006 23:55:54 +0100:\n> >>>>> \"Junio\" == Junio C Hamano <junkio@cox.net> writes:\n> \n> Junio> So I'd prefer not touching for (@df) { print H \"$_\\n\" } loops.\n> \n> Being as I'm a *bit* familiar with Perl, I'd write that as:\n> \n>   print H \"$_\\0\" for @deletedfiles;\n> \n\nDoes not work for old Perl\n"},{"id":"14239","messageId":"7vk6dcl49x.fsf@assigned-by-dhcp.cox.net","threadId":"2976","inReplyTo":"20060107102820.GB5536@steel.home","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-01-07T10:29:46Z","receivedAt":"2006-01-07T10:29:46Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alex Riesen <raa.lkml@gmail.com> writes:\n\n> Randal L. Schwartz, Fri, Jan 06, 2006 23:55:54 +0100:\n>>\n>>   print H \"$_\\0\" for @deletedfiles;\n>\n> Does not work for old Perl\n\nHow old may I ask?\n"},{"id":"14242","messageId":"86sls0498w.fsf@blue.stonehenge.com","threadId":"2976","inReplyTo":"20060107102820.GB5536@steel.home","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Randal L. Schwartz","fromEmail":"merlyn@stonehenge.com","sentAt":"2006-01-07T10:34:23Z","receivedAt":"2006-01-07T10:34:23Z","isPatch":true,"sender":{"key":"merlyn@stonehenge.com","avatar":"https://gravatar.com/avatar/dc528d210743ff0333e6213f9ee7b33b23f1b7bc1f3c5a8c2d819074ecd7ab19?d=mp&s=160"},"body":">>>>> \"Alex\" == Alex Riesen <raa.lkml@gmail.com> writes:\n\nAlex> Randal L. Schwartz, Fri, Jan 06, 2006 23:55:54 +0100:\n>> >>>>> \"Junio\" == Junio C Hamano <junkio@cox.net> writes:\n>> \nJunio> So I'd prefer not touching for (@df) { print H \"$_\\n\" } loops.\n>> \n>> Being as I'm a *bit* familiar with Perl, I'd write that as:\n>> \n>> print H \"$_\\0\" for @deletedfiles;\n>> \n\nAlex> Does not work for old Perl\n\nCorrect.  It was added for Perl 5.5, first released on 22 July 1998.\n\nAre you really saying you need this code to run on Perl 5.4?  There\nare a number of other things that would have to be fixed as well.\n(We had this conversation a while back.)\n\n-- \nRandal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095\n<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>\nPerl/Unix/security consulting, Technical writing, Comedy, etc. etc.\nSee PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!\n"},{"id":"14262","messageId":"7v7j9bg369.fsf@assigned-by-dhcp.cox.net","threadId":"2976","inReplyTo":"86sls0498w.fsf@blue.stonehenge.com","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-01-07T21:04:46Z","receivedAt":"2006-01-07T21:04:46Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"merlyn@stonehenge.com (Randal L. Schwartz) writes:\n\n>>> Being as I'm a *bit* familiar with Perl, I'd write that as:\n>>> \n>>> print H \"$_\\0\" for @deletedfiles;\n>\n> ...  It was added for Perl 5.5, first released on 22 July 1998.\n\nBTW, I never understood the usefulness of Statement Modifiers.\nEven reading the examples in perlsyn.pod:\n\n    print \"Basset hounds got long ears\" if length $ear >= 10;\n    go_outside() and play() unless $is_raining;\n\nseeing \"do these things\" upfront and then realize \"ah, but that\nis done only when this holds true\", interrupts the flow of\nunderstanding while reading a program by somebody else [*1*].\nIt is worse if the Statement Modifier is a loop control.\n\n(flamebait) Compound Statements take BLOCK and people who want\nto do a one-liner could not do so without braces.  I've always\nthought Statement Modifies as a lame workaround for that\nproblem.\n\n[Footnote]\n\n*1* This is true even for me; my mother language is Japanese,\nwhich tends to hang negation at the tail of the sentence, and\ndouble negation is not unusual.  This makes it impossible to\nknow what a sentence states before reading it to the end, so I\nam used to that \"coming back to the main part after reading\nthrough the sentence\", but I do not welcome that when I am\nreading programs.\n"},{"id":"14274","messageId":"43C057BD.7010201@op5.se","threadId":"2976","inReplyTo":"7v7j9bg369.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2006-01-08T00:07:25Z","receivedAt":"2006-01-08T00:07:25Z","isPatch":true,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Junio C Hamano wrote:\n> \n> BTW, I never understood the usefulness of Statement Modifiers.\n> Even reading the examples in perlsyn.pod:\n> \n>     print \"Basset hounds got long ears\" if length $ear >= 10;\n>     go_outside() and play() unless $is_raining;\n> \n> seeing \"do these things\" upfront and then realize \"ah, but that\n> is done only when this holds true\", interrupts the flow of\n> understanding while reading a program by somebody else [*1*].\n\n\nHere's what \"Programming Perl\" by O'Reilly (third edition, somewhere \naround page 604) has to say about it:\n---%<---%<---%<---\n*) Do things the most readable way. For instance:\n\n     open(FOO, $foo) or die \"Can't open $foo: $!\";\n\nis  better than\n\n     die \"Can't open $foo: $!\" unless open(FOO, $foo);\n\nbecause the second way hides the main point of the statement in a modifier.\n---%<---%<---%<---\n\nConsidering the book was co-authored by Larry Wall, I'd say that's as \ngood as an apology.\n\n\n> It is worse if the Statement Modifier is a loop control.\n> \n> (flamebait) Compound Statements take BLOCK and people who want\n> to do a one-liner could not do so without braces.  I've always\n> thought Statement Modifies as a lame workaround for that\n> problem.\n> \n\nMost things can be done without braces, so long as one doesn't spell out \nthe 'if'.\n\n\t$opt_h and usage();\n\t-d $directory or mkdir($directory);\n\nis perfectly valid perl. This way of writing it is familiar enough for \nshell-scripters. Hardcore C-programmers will look twice when they see a \nline that so obviously looks completely wrong and will almost certainly, \nwith some revulsion, understand it.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"14449","messageId":"20060110222408.GB3155@steel.home","threadId":"2976","inReplyTo":"7vk6dcl49x.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2006-01-10T22:24:08Z","receivedAt":"2006-01-10T22:24:08Z","isPatch":true,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Junio C Hamano, Sat, Jan 07, 2006 11:29:46 +0100:\n> >>\n> >>   print H \"$_\\0\" for @deletedfiles;\n> >\n> > Does not work for old Perl\n> \n> How old may I ask?\n> \n\n5.4, probably. I never seen it anymore. Was a standard installation of\nsome Solaris box.\n"},{"id":"14451","messageId":"20060110222604.GC3155@steel.home","threadId":"2976","inReplyTo":"86sls0498w.fsf@blue.stonehenge.com","subject":"Re: [PATCH] git-mv.perl: use stderr for error output and cleanup","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2006-01-10T22:26:04Z","receivedAt":"2006-01-10T22:26:04Z","isPatch":true,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Randal L. Schwartz, Sat, Jan 07, 2006 11:34:23 +0100:\n> >> >>>>> \"Junio\" == Junio C Hamano <junkio@cox.net> writes:\n> Junio> So I'd prefer not touching for (@df) { print H \"$_\\n\" } loops.\n> >> \n> >> Being as I'm a *bit* familiar with Perl, I'd write that as:\n> >> \n> >> print H \"$_\\0\" for @deletedfiles;\n> >> \n> \n> Alex> Does not work for old Perl\n> \n> Correct.  It was added for Perl 5.5, first released on 22 July 1998.\n> \n> Are you really saying you need this code to run on Perl 5.4?\n\nNo, probably not. I definitely don't care, just wanted to point it\nout as another one kind of a strange setup (as if activestat perl +\ncygwin isn't enough...)\n"}]}