[Memphis.pm] quotes in program arguments

Hal Phillips HPhillips at harrahs.com
Tue Nov 12 11:40:25 CST 2002


Thanks, but I can't modify the message to put the \s in...

-----Original Message-----
From: Steven Turman 
Sent: Tuesday, November 12, 2002 11:16 AM
To: 'memphis-pm-list at pm.org'
Subject: RE: [Memphis.pm] quotes in program arguments


When program.pl is called, put $message in double quotes.

quotes.pl as:
#!/usr/bin/perl
print( join( "\n", @ARGV ), "\n" );


$>quotes.pl 1 2 3 4
1
2
3
4
$>quotes.pl "1 2 3 4"
1 2 3 4
$>message="stuff \"stuff\" more stuff"
$>print $message
stuff "stuff" more stuff
$>quotes.pl "$message"
stuff "stuff" more stuff

-Steven

-----Original Message-----
From: Hal Phillips 
Sent: Tuesday, November 12, 2002 10:24 AM
To: 'memphis-pm-list at pm.org'
Subject: [Memphis.pm] quotes in program arguments


Hey, does anyone know how to tell perl to interpret quotes in a program
argument as just part of a string?  More precicely, I need something that
basically will take the equivalant of echo's $* as a command argument.

What I neet to do is have a perl program that I can to this with:
>program.pl -o [2002-11-12 09:00:00]: subject=SOMETEXT,
message={SEVERITY="ERROR", ACTION="None", MOREKEYS="MOREVALUES", ETC="ETC
ETC ETC"}

You may ask, why not just redirect the message as STDIN?  Well, the calling
program is very limited in it's interface in that it collects the message
information into a variable via java, then provides an opportunity for you
to fill in a box with a UNIX command.  So, I'd need to somehow push it into
STDIN through a pipe, and echo is out for the same reasons I'm trying to
solve with the quotes in $message.

i.e.   echo $message | program.pl   doesn't work because of the content of
$message.

So, I need it to do:
program.pl -o $message

I've tried to be sneaky and read in the option a char at at time, but the
quotes are still being interpreted on the command line.

#!/usr/bin/perl
use Getopt::Std;
getopt("o:");
@array = split (//, $opt_o);
foreach $char (@array)
{
   if ( $char eq "\"" )
   {
      $char = "\\$char";
   }
   $message .= $char;
}
print $message;

> program.pl -o Sam"I"am
SamIam

what I need is Sam"I"am to actually make it through uninterpreted.

Anyway, sorry to ramble, let me know if you have any suggestions.
-Hal

----------------------------------------------------------------------------
To unsubscribe, please send email to majordomo at pm.org
with 'unsubscribe memphis-pm-list' in the body of the message.
----------------------------------------------------------------------------

----------------------------------------------------------------------------
To unsubscribe, please send email to majordomo at pm.org
with 'unsubscribe memphis-pm-list' in the body of the message.
----------------------------------------------------------------------------

----------------------------------------------------------------------------
To unsubscribe, please send email to majordomo at pm.org
with 'unsubscribe memphis-pm-list' in the body of the message.
----------------------------------------------------------------------------




More information about the Memphis-pm mailing list