perl命令行在运行"一行式程序"非常有用,用法如下:
[[email protected] ~]# perl --helpUsage: perl [switches] [--] [programfile] [arguments] -0[octal] specify record separator (-e
,if no argument) -a autosplit mode with -n or -p (splits $_ into @F) -C[number/List] enables the Listed Unicode features -c check Syntax only (runs BEGIN and CHECK blocks) -d[:deBUGger] run program under deBUGger -D[number/List] set deBUGging flags (argument is a bit mask or Alphabets) -e program one line of program (several -e's allowed,omit programfile) -E program like -e,but enables all optional features -f don't do $sitelib/sitecustomize.pl at startup -F/pattern/ split() pattern for -a switch (//'s are optional) -i[extension] edit <> files in place (makes backup if extension supplIEd) -IDirectory specify @INC/#include directory (several -I's allowed) -l[octal] enable line ending processing,specifIEs line terminator -[mM][-]module execute "use/no module..." before executing program -n assume "while (<>) { ... }" loop around program -p assume loop like -n but print line also,like sed -s enable rudimentary parsing for switches after programfile -S 使用PATH环境变量搜索程序文件 -t enable tainting warnings -T enable tainting checks -u 在解析程序之后dump core -U 允许不安全的 *** 作(其中之一:root身份删除目录) -v 输出版本号、补丁版本 -V 输出Perl的主要配置概要和@INC、@ENV的当前值 -V:variable 输出Config.pm中的某个变量 -w 启用大多数warnings信息 -W 启用所有的warning信息 -x[directory] 忽略#!perl行前面的所有文本(如果指定directory,则先切换到该目录) -X 禁止所有的warnings信息
单行式程序选项 选项e perl -e 'print "haha!!!\n"'选项用于指定待运行的表达式
print "haha!!!\n"
它就相当于在运行一个包含了如下代码的perl程序:
-n
-e是使用perl单行程序的开关,使用该选项后,perl将不再从参数中读取文件名。
可以同时指定多个"-e"。
选项n和pliNE: while(<>){ ...-e Expression CODE HERE... }选项使得perl单行命令以类似于如下代码的方式运行:
<>
由于while中使用的是@ARGV
,所以它会从perl -n
中读取文件名进行处理。
sed -n
就像-p
一样,禁止默认的输出。
liNE: while(<>){ ...-e Expression CODE HERE... }continue{ print or dIE "-p destination: $!\n"; }选项使得perl单行命令以类似于如下代码的方式运行:
perl -p
$_
用于强制输出,同时还会输出-l
,它会覆盖-n选项。
-l-lOCTNUM选项开启自动行尾处理功能
$\
该选项有两个效果:
1.和-n和-p一起使用的时候,将自动使用chomp行终止符2.将print的输出行分隔符变量
$\
设置为OCTNUM的数值,OCTNUM的ASCII字符将追加在输出的每一行行尾。如果省略了OCTNUM,则将$/
设置为输入行分隔符变量-l
的值,通常是换行符 需要注意的是,省略OCTNUM的时候,也就是只有$\ = $/
的时候,会处理这个选项的那一刻就完成-ln0e Expression
的赋值,所以,如果
# 处理-l的时候$\ = $/;# 处理-0的时候$/ = -0
;
将进行两段赋值: -l
上面的选项不能将-l0ne
放在-l
后面,否则-iSUFFIX
的0将被认为是*
的选项参数。
*
用于保存处理结果
如果没有给定SUFFIX,则直接覆盖的源文件中保存,如果指定了后缀SUFFIX,则将源文件以后缀名SUFFIX的方式备份起来,然后将处理结果保存到源文件名中。
如果SUFFIX中不包含星号*
,则SUFFIX直接追加在文件名的尾部。如果包含了~
,则每个-a
都被替换为SUFFIX。SUFFIX甚至可以包含目录名以便保存到其它目录下,但要求目录必须已经存在,且不能使用-n
表示家目录。
在内部,perl先重命名文件,然后用原文件名打开输出文件,并把该输出文件作为print、printf和write的默认文件句柄的对象。
选项a和F-p
选项打开自动分割模式,只能在-a
或-n
模式下使用
-p
使得@F
或$F[n]
的while循环中首先对行进行一次隐含的split分割 *** 作,并将分割后的结果放进数组-a
中,使其可以成为一个个的字段,并通过的方式调用各字段,其中n为字段的索引号,从0开始计算。
通过-a
选项,可以使perl单行程序可以以类似于awk的方式运行,只不过awk的第一个字段是从$F[0]
开始的,而
perl -ane 'print pop(@F),"\n";'的第一个字段是从
liNE: while(<>){ @F = split(' '); print pop(@F),"\n"; }开始的。
例如:
-Fpattern
等价于:
//
可以使用‘‘
指定字段分隔符,也就是作为split的第一个参数。pattern可以被双斜线""
、单引号-0
或双引号
包围,如果没有给定符号,则默认使用单引号。$/
$/ = "
使得perl读取行时,以作为行输入分隔符,也就是对行输入分隔符变量进行赋值:
";perl -a -F":" -ne 'print $F[0],"\n";' /etc/passwdperl -a -F":" -lne 'print $F[0];' /etc/passwd
OCTNUM
如果给定了OCTNUM,即,则将八进制数值OCTNUM对应的ACSII作为行输入分隔符。
BEGIN和END块BEGIN块和END块用于主循环while之前和之后,就像awk的BEGIN和END一样。
用法示例输出/etc/passwd的第一个字段:
总结以上是内存溢出为你收集整理的Perl命令行:一行式程序全部内容,希望文章能够帮你解决Perl命令行:一行式程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)