in reply to How to pass command line arguments with file names containing spaces

hdb is spot on.

You need do nothing special inside Perl to handle it. Merely how you specify these files on the command line.

If you make system calls using these filenames (or other forms of external-to-Perl operations) you likely will again need to honor the needs of your operating system.

But for as long as you're inside Perl, doing native Perl stuff, it is unlikely the spaces will require you to change the way you handle your code.

C:\Test>perl mongo.pl "Test 1.dat" C:\Test>perl mongo.pl "Test *.dat" C:\Test>perl mongo.pl Test*.dat

All these should work.

  • Comment on Re: How to pass command line arguments with file names containing spaces
  • Download Code

Replies are listed 'Best First'.
Re^2: How to pass command line arguments with file names containing spaces
by MVRS (Acolyte) on Oct 09, 2013 at 09:07 UTC

    Thank you very much for the reply HDB , sorry i jus made a sample code , but i again make system calls and other perl operations as in the following code , please suggest me in this , and am running this code in linux environment

    #!/usr/bin/perl use strict; use warnings; my $re; my $qu; $re = $ARGV[0]; $qu = $ARGV[1]; print $re,"\t",$qu,"\n"; $match = system(mer -maxmatch "$re" "$re"); $camp = system(mer -cods "$re" "$qu"); system (perl ma.pl "$re" "$qe");

      This is not even valid Perl code, as it does not compile.

      Please take care to test your code and to reduce it to the actual problem. Maybe you want to review system? It shows how to use that function. Also, you may want to learn about quoting, and the difference between strings (what system takes as arguments) and bare, unquoted words in Perl (what perl takes as commands in a program.

        corion as i could nt copy my exact code so i made some typo errors , and this code runs successfully with file names with out white spaces , but i want to make it possible to run with file names having spaces in the arguments also , my problem here is to run with filenames having spaces and i need to use these arguments for other system calls also , in which it is giving problem

        #!/usr/bin/perl use strict; use warnings; my $re; my $qu; $re = $ARGV[0]; $qu = $ARGV[1]; print $re,"\t",$qu,"\n"; $match = system qq(mer -maxmatch "$re" "$re"); $camp = system qq(mer -cods "$re" "$qu"); system qq(perl ma.pl "$re" "$qe");