0
sub cdevice{
    $p=$_[0];
    $s=$_[1];
    $q=$_[2];
    try {
        $device_create_cmd ="create type:NSR Device;media type:adv_file;name:$p;device access information:$p";
        system("echo $device_create_cmd > command.txt  ");
    } catch Error with {
        print "Error  " ;
        exit();     
    };
}
cdevice("/device1","raddh054","/device1");

这个 pl 文件在 Windows 上运行良好,但在 Linux 上却不行,因为 Linux 中的 echo 不接受文本之间的空格!我该如何解决它

4

1 回答 1

4

只需打开文件并自己写入即可。为什么要涉及外壳?

use strictures;
use autodie qw(:all);

⋮

sub cdevice {
    my ($p, $s, $q) = @_;
    try {
        open my $h, '>', 'command.txt';
        print {$h} "create type:NSR Device;media type:adv_file;name:$p;device access information:$p\n"
    } …
于 2012-04-19T06:29:12.760 回答