工作中的线上环境有很多的perl命令行的类似一句话的命令,今天总结下perl的命令行编程的一些东西。
-e 后面紧跟着引号里面的字符串是要执行的命令:
代码如下:
king@king:~$ perl -e ‘print “hello world /n”‘
hello world
如果是多个命令就可以使用多个-e,这里是不是想到了sed呢?但是要注意的是中间的哪个“;”.
代码如下:
king@king:~$ perl -e ‘print “hello world /n” ;' -e ‘print “my first perl command line script /n”‘
hello world
my first perl command line script
-M 导入要使用的模块:
代码如下:
king@king:~$ perl -MLWP::Simple -e'print head “http://www.chinacache.com”,”/n”‘
text/html; charset=utf-81337525116978307200Apache/2.2.3 (CentOS)
另外-M可以判断某个模块是不是已经安装了
-m 的功能和-M类似,区别在于-M 模块名等同于use 模块名,这样会把一些默认的函数或者其它东西引进过来,-m 模块名 则会关闭这些默认值,这样可以引入一些你只使用的函数;例如上面的例子:
换成-m的话就不会有任何输出;-m 和 -M 通过 = 来引入某个模块的特别函数.
代码如下:
perl -MCGI='header,start_html' -e ‘print header, start_html'
-w 等同于use warnings
-n -p 都会使用 <> 将所有 @ARGV 参数当作文件来逐行运行(有循环的意思哦,经常和其它参数一起处理文件),会将读入的内容隐式的逐一按行来遍历文件.每一行将缺省保存在 $_;但-p 会将内容“重复”打印出来,而-n更倾向与打印满足某种条件的行(这这里还有一些有用的变量比如$. 表示当前行的行数):
代码如下:
king@king:~$ cat file.txt
A 1
B 2
C 3
king@king:~$ perl -p -e ‘print ‘ file.txt
A 1
A 1
B 2
B 2
C 3
C 3
king@king:~$ perl -n -e ‘print ‘ file.txt
A 1
B 2
C 3
看到这里是不是想到了sed的-n 的特性:
代码如下:
king@king:~$ sed -ne ‘p' file.txt
A 1
B 2
C 3
king@king:~$ sed -e ‘p' file.txt
A 1
A 1
B 2
B 2
C 3
C 3
-i 将修改直接的写入文件,这个和sed也是一样的哦;
代码如下:
king@king:~$ cat file.txt
A 1
B 2
C 3
king@king:~$ perl -pi -e ‘s/A/a/' file.txt
king@king:~$ cat file.txt
a 1
B 2
C 3
-a 打开自动分离 (split) 模式. 空格是缺省的分离号. 输入根据分离号被分离然后放入缺省数组 @F.
代码如下:
king@king:~$ perl -na -e ‘print $F[1],”/n”‘ file.txt
1
2
3
和awk是不是很像?还有更像的,那就是-F,和awk一样更改字段之间的分割符,默认是空格和tab;
代码如下:
新闻热点
疑难解答