fearthechris29 has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks, I'm having a problem converting an argument to string. Actually, this argument contains a URL. url = http://sampleurl.sample.com/DOCID=1234&DOCREV=1&DOCLOC=1234&DOCDIAL=~

my $url = $ARGV[0]; print $url;

When I print this url I'm having an error: 'DOCLOC' is not recognized as an internal or external command, operable program or batch file. 'DOCLANG' is not recognized as an internal or external command, operable program or batch file. 'DOCDIAL' is not recognized as an internal or external command, operable program or batch file. But when I place the url as value of the url variable: $url = "http://sampleurl.sample.com/DOCID=1234&DOCREV=1&DOCLOC=1234&DOCDIAL=~" I do not experience the mentioned error. So I'm thinking I need to convert the Argument to string. Can you help me with this?

Replies are listed 'Best First'.
Re: How to convert arguments to string
by boftx (Deacon) on Nov 20, 2013 at 04:18 UTC

    The "&" characters are most likely being interpreted by the shell (this is on a *nix system, right?) as the "background" operator. That is, if you are not enclosing the string in single quotes on the command line, the shell thinks you wish to run those "commands" in the background.

    Try using double (or single) quotes around the argument on the command line and see what happens. I.e:

    $myprog 'http://sampleurl.sample.com/DOCID=1234&DOCREV=1&DOCLOC=1234&D +OCDIAL=~'
    It helps to remember that the primary goal is to drain the swamp even when you are hip-deep in alligators.

      The message text 'DOCLOC' is not recognized as an internal or external command, operable program or batch file. is typical for a DOS/Windows based System.
      *nix would ask an astonished but terse: DOCLOC?
      :-)

      Of course, the result is similiar, "&" in DOS/Win is like ";" in *nix

      Wow! That works! Thanks Monks!

Re: How to convert arguments to string
by kschwab (Vicar) on Nov 20, 2013 at 04:14 UTC
    Based on the error, it sounds like you're typing that into a Windows/DOS command prompt. The issue you're having isn't Perl related, it's the DOS command prompt. Try putting it in quotes, like:
    C:\>perl "http://sampleurl.sample.com/[omitted for brevity]"