今天写了个perl程序要放到crontab执行,perl代码里面用system调用另外一个perl,以前都是写个sh来调用perl,今天懒得写了直接在crontab里面用perl,形如:1 * * * * myperl.pl 结果没执行,检查发现是perl不同解释器问题,就改为perl myperl.pl ,这次执行了,但是system调用的perl报错没有找到pm包,于是随手就在myperl.pl里面use lib "...",结果还是不行, print @INC发现system没有用到use lib的路径,仔细一想system确实不会...
by yybmsrs - Perl - 2012-04-13 12:37:15 阅读(1113) 回复(5)
按照perldoc的描述,要获取一个命令调用的返回值有以下几种情况: [code] @args = ( "command","arg1","arg2" ); system(@args) == 0 dir "execute system command failed[/code] 更加精确的捕捉: [code] if ($? == -1) { print "failed to execute: $!\n"; } elsif ($? & 127) { printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : ...
为了和Perforce(一个源代码控制系统)的客户端联动,在perl里面加了一段类似的Code: @results = `echo $pwd| $p4 -p $host:$port -u $user login 2>&1 >>/tmp/out; $p4 @args 2>>tmp/err`; 结果在Shell中run的很好的提取源代码文件的操作就得不到结果,results是空的 请教大家,system()的这种用法有什么问题? 该如何修正. 谢谢:emn23:
#!/usr/bin/perl system("sed '$d' file1 | sed '$d' > file2 "); 原意是想删除文件2的最后两行, 可执行结果是file1和 file2一样. 为什么?
$command="cp -p $file $todir"; system($command); 此代码在一个循环体中,复制时出现问题,如果目标目录中源文件已经存在,但是由于文件权限问题,导致文件复制不成功,就会跳出循环体结束程序,而不是进入下一次循环,有什么方法可以不退出循环,进入下一次循环呢?谢谢。
我的程序中一部分内容如下 my $joblist1="joblist1.txt"; system("submit_scripts_to_PBS.pl -j $joblist1 -q $q_que -t $t_que"); wait; submit_scripts_to_PBS.pl 是个往服务器提交脚本的程序,我程序里面调用它是为了让它能够自动把任务提交。 奇怪的是我每次跑到system的时候程序都出问题。 后来我把程序前面生成的$joblist1 直接在终端输入submit_scripts_to_PBS.pl -j $joblist1 -q $q_que -t $t_que ,其中的变量我都进行...
下面两个命令运行结果为什么不同呢,貌似用perl 的sestem函数不能匹配到 ".\+" 的内容?这是怎么回事啊 sed -ne '/.\+/p' < /dev/tty perl -e 'system "sed -ne '/.\+/p' < /dev/tty"'
在perl里面,我用system调用了一个命令,但是用户在这个命令的执行过程中会有ctrl+z这种行为来想退出程序,怎么在perl脚本中来捕获和处理这种行为?
[code]system ("more $FILEPATH/$file | sed '1d' | sed 's/\\s\\+/,/g' | sed 's/,-,/,0,/g' > $tmpData"); system qq(more $tmpData | sed '1,6d' > $tmpData); [/code]如上两行命令, 目的是对 $file去掉第一行,做一些修改,然后存放到$tmpData中 原始文件$file比较长,可能几千行。发现经常在900多行左右就被截断了。 如果手工在命令行运行以上命令就没有问题。 请教各位是什么原因,应该看哪方面的东西来解决。 如果没有说清...