perl的调用方式很好几种,最常见的有两种。
举例如下;
1。my
$t1
=
`ps
-ef`;
print
$t1;
#这里会得到命令执行的结果,即进程信息
2。my
$ttt2
=
system("ps
-ef");
print
$t2;
#这里会得到命令执行是否成功的结果,成功会得到1
你用的是第二种方式调用,得到的是命令执行返回码,不是你想要的进程id
‘贰’ perl: 如下命令
用双引号:
perl -p -i.bak -w -e "s/a/b/g" fred.pl
---------------------------
C:\Documents and Settings\t>perl -p -e "" fred.pl
abc
C:\Documents and Settings\t>perl -p -i.bak -w -e 's/a/b/g' fred.pl
Useless use of a constant in void context at -e line 1.
C:\Documents and Settings\t>del fred.pl.bak
C:\Documents and Settings\t>perl -p -i.bak -w -e "s/a/b/g" fred.pl
C:\Documents and Settings\t>perl -p -e "" fred.pl
bbc
‘叁’ perl中如何执行多条shell命令
一、system
perl也可以用system调用shell的命令,它和awk的system一样,返回值也是它调用的命令的退出状态.
二、反引号
perl的system函数和awk的一样不能够返回命令的输出.
要得到命令的输出,就得使用和shell本身一样的命令: ` `
三、exec
最后,perl还可以使用exec来调用shell的命令. exec和system差不多,不同之处在于,调用exec之后,perl马上就退出,而不会去继续执行剩下的代码
‘肆’ 为什么perl脚本必须要加perl命令才能运行
加perl命令是为了让该程序以perl环境运行。在windows下,如果你把.pl为后缀的默认打开方式为perl,就可以双击打开啦,不用输入perl+程序名
‘伍’ linux下怎么运行perl程序
1、perl解释器基本在所有的linux平台上都是自带的,用户可以通过如下命令判断是否有perl解释器:
which perl
2、如果自己的linux系统上没有perl解释器,可以去其官网下载安装。
3、在具备perl解释器的情况下,可以参考如下运行步骤:
1)、用vim编写test.pl,代码如下:
#!/usr/local/bin/perl
print "HellonWorld!
";
2、编写完成后,直接执行如下命令即可:
perl test.perl
3、有时候需要一些权限,自己可以通过su、sudo等命令提示权限。
‘陆’ perl脚本中怎么样执行linux命令
Linux下perl文件的执行
#! /usr/bin/perl
第一个“#”表示是这一行是注释
第二个“!”表示这一行不是普通注释,而是解释器路径的声明行
后面的“/usr/bin/perl”是perl解释器的安装路径,也有可能是:“/usr/local/bin/perl”,如果那个不行,就换这个。
这样修改后,文件就是这个模样:
#!/usr/bin/perl
#test.pl
print "test message! \n";
然后,给文件加上可执行的属性:
$ chmod 755 test.pl 或者 $ chmod +x test.pl
这两个命令用哪一个都可以。
现在执行吧: $ ./test.pl
‘柒’ Perl执行shell命令的几种方式及其区别
有两种方法:
1、命令行输入perldoc perllocal |grep DBI -i
2、
#!/usr/bin/perl
usestrict;
useExtUtils::Installed;
my$inst=ExtUtils::Installed->new();
my@moles=$inst->moles();
foreach(@moles){
my$ver=$inst->version($_)||"???";
printf("%-22s-Version-%-22s ",$_,$ver);
}
exit;
‘捌’ 如何用Perl实现命令行交互
如果只是执行perl脚本的话交互用STDIN来读取就可以了,调用外部命令的交互可以用管道或者IPC
‘玖’ perl怎么得到命令行的输出
试了几个命令都应该没有问题,你先试试这个命令有没有任何输出 再试试直接 perl中 print `gunzip -c /home/file | dd of=/dev/sdb obs=1M` 如果命令有输出,但是你的编程方式和上面的单语句都没有输出,就太诡异了。
‘拾’ perl system 输入命令
假设你在命令行下面执行的方式是:a.exe 1 2 3 4
然后回车。就执行a.exe
那么你perl里面调用的时候直接
`a.exe 1 2 3 4`;
注意 ` 这个符号是英文输入状态下,键盘上方1按键旁边那个符号。半角的。