A Perl system call must send the following string to the UnixShell
:
'"XYZ"'
In my Perl script I have used the following command:
system("cleartool mkattr -replace ATTRIBUTE '"$attribute"' lbtype:$label");
Everything is well passed to the Shell Unix
, except both uses of the quote character:
'
Indeed,
cleartool mkattr -replace ATTRIBUTE
The above command is passed as it is exactly what I want. The Perl variables $attribute and $label are well interpreted. But I don't know what to do to obtain exactly:
'"XYZ"'
Here XYZ
is the value of the Perl variable $attribute
OS is AIX (Unix)
and Shell
is ksh
. cleartool is the command line interface of Clearcase but no Clearcase skill is necessary to fix my problem.
If you want to execute a system command and don't have to use any shell syntax like redirects, it's usually better and safer to use the list form of
system
:See perldoc -f system
It's not clear from your question if you want to pass
'"XYZ"'
or"XYZ"
.See "Quote and Quote like Operators" and use
qq{...}
:qq{...}
is exactly like"..."
except you can then use double quotes"
in your string without escaping them.You can use any character directly after the
qq
and must then use the same character to denote the end-of-string, i.e.qqX...X
would work the same way. You would run into problems if your string contains Xes, so don't do that.You can also use paired characters as delimiter (
{}
,()
,<>
) which is what you usually will see.