in reply to (bbfu)(solution)Re: Re: VMS: Pipe to process
in thread VMS: Pipe to process
In the last case, the presence of a space doesn't affect what is open, but since the first character is a space, any leading "mode" characters in $filename will be ignored, much like what was happening with your code.# this is pseudo-code $filename = '>test' or '+test' open(HANDLE, ">$filename"); # >>test or >+test (ruh-roh!) # likewise $filename = 'ls|' or '>test; open(HANDLE, "$filename"); # ls| (pipe) or clobbers 'test' # generally safe (in that behavior is not unexpected): open(PIPE, " $command |") open(PIPE, "| $command\0"); # safe version of "|ls" open(FILE, "> $filename\0"); # ">file" open(FILE, " $filename\0"); # "file"
Also see sysopen and perlipc (e.g., using fork/exec), which (in my opinion) are significantly more readable/safer than using weird manglings of open. Note that issues of shell meta-characters and other security considerations are out of the scope of this message. Each of the "PIPE" examples above are still incredibly insecure if untrusted input is allowed to use any shell metacharacters in the string. See perlsec and use Taint-checking.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
(bbfu)(leading spaces, fork in VMS)Re: Fastolfe: Re: VMS: Pipe to process
by bbfu (Curate) on Feb 03, 2001 at 04:49 UTC |