I've run into a strange situation with file names containing multiple consecutive spaces passed through a piped open call. The platform I'm testing on (and the target running environment) is Perl 5.6.1 (ActiveState) Win32 build running on a Win2K server. The problem can be demonstrated with the below sample:
The output looks like:#!/usr/bin/perl use strict; my $filename = 'This_filename_has_2 2_spaces.txt'; my $tempstr = "echo \"$filename\" |"; printf "Below is the output of \'$tempstr\'\n"; open (IN,$tempstr) or die "Failed to echo $filename!\n"; printf "\t"; printf <IN>; close (IN);
Below is the output of 'echo "This_filename_has_2 2_spaces.txt" |' This_filename_has_2 2_spaces.txt
The output of the first print statement maintains the two spaces in the filename, but the response from the echo has condensed it to a single space. Same thing happens with multiple spaces.
I've tried different quote delimeters, as well as using sysopen (which I couldn't figure out how to use as a pipe in this same way). The escaped double quotes on the filename are needed for real external calls like md5sum.exe, since it's Win32. I'm wondering if this is a quirk of the Win32 environment, or if this happens elsewhere as well. Suggestions?
In reply to consecutive spaces in piped open by Woodya
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |