Richard A. Wells wrote:
> On UNIX you have to escape the whitespace, e.g.
> 
>     /this path/has spaces
> 
> would become
> 
>     /this\ path/has\ spaces
> 
> The expression
> 
>     $path_elem =~ s{(\s)}{\\$1}gio;

The /io is not needed/wanted.

> should do the trick. 
> 
> Note that I used {} delimiters (i.e. s{}{}) to make it clearer, since 
> the data itself contains /s and someone might get confused that a / was 
> part of the match or substitution, rather than a delimiter.  But you 
> still could use s///, if you prefer. Also, \\ is necessary in the 
> substituion value, since \ itself is a metacharacter in a regex.

I think it's easier to read this:

my $win32 = $^O =~ /Win32/i;
my $path_elem = $ENV{CLEARCASE_PN};
$path_elem =~ s/ /\ /g if not $win32;

PS: Top-posting is something we try to avoid in these lists.

>> Hi All,
>>
>> I am meeting a problem on a regular expression.
>>
>> My code is like:
>>
>> $path_elem = "$ENV{'CLEARCASE_PN'}";
>>
>> The return value of $path_elem is either 
>>
>> $path_elem = /ccstore/test/test.pl
>>
>> Or $path_elem = /ccstore/test 1/test 1.pl  # there is a space in the
>> path name including the file name too
>>
>> There is no rule whether there is a space in the path name or not. How
>> can I handle it in regular expression, because when I pass the value
>> $path_elem to a function, if there is a space in the path name, it will
>> treat it 2 file path name, instead of one.
>>
>> I used the following code
>>
>> $path_elem = "\"$ENV{'CLEARCASE_PN'}\"";
>> It works fine for windows, but does not works fine on unix.
>>
>> I really appriciate your great help.


-- 
  ,-/-  __      _  _         $Bill Luebkert    Mailto:[EMAIL PROTECTED]
 (_/   /  )    // //       DBE Collectibles    Mailto:[EMAIL PROTECTED]
  / ) /--<  o // //      Castle of Medieval Myth & Magic http://www.todbe.com/
-/-' /___/_<_</_</_    http://dbecoll.tripod.com/ (My Perl/Lakers stuff)
_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to