On Mon, May 27, 2002 at 09:04:13PM +0100, Alan Fry wrote:
> At 12:19 pm -0400 27/05/02, Chris Nandor wrote:
> >  This works fine, with embedded spaces:
> >
> >  my $f = "Bourque:Desktop Folder:file.txt";
> >  open F, $f or die $!;
> >  print scalar readline F;
> >
> >This does not:
> >
> >  my $f = "Bourque:Desktop Folder:file.txt ";
> >  open F, $f or die $!;
> >  print scalar readline F;
> 
> For the life of me, and please believe I am not being picky, I can't 
> see the difference between the two. What am I missing?

One of the filenames has a space at the end.


> >The third is to specify your open sign ('>', '<', etc.) and add a 
> >trailing null:
> >
> >  my $f = "Bourque:Desktop Folder:file.txt ";
> >  open F, '<' . $f . "\0" or die $!;
> >  print scalar readline F;
> >
> >The greater danger with C< open F, $f > is that the filename might begin
> >with a ">" or somesuch.  Both three-arg open, and the method above with
> >"\0", solve both problems; but the latter method works in any version of
> >perl.  I am not a big fan of three-arg open, but I have to admit it looks a
> >lot nicer.  :-)

Note that this solution does not work with leading spaces, however.  You
have to use sysopen or the new three-arg open to handle those.


Ronald

Reply via email to