Perl命令行应用程序详解

电脑杂谈  发布时间:2019-08-06 09:02:44  来源:网络整理

perl命令行应用程序详_perl 执行shell命令_word2007 向程序发送命令时出现问题

[ -hv ] [ -V[:configvar] ]

[ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ]

[ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]

[ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]

[ -C [number/list] ]

[ -P ]

[ -S ]

[ -x[dir] ]

[ -i[extension] ]

[ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...

[开关项描述]

-0

规定记录分隔符。

-0<数字>

(用8进制表示)指定记录分隔符($/变量),默认为换行

-00

段落模式,即以连续换行为分隔符

-0777

禁用分隔符,即将整个文件作为一个记录

-a

与 -n 或者 -p 一起使用,负责打开自动拆分模式,用于对空白字符进行隐式拆分,用空格分隔$_并保存到@F中,相当于@F=split ''。分隔符可以使用-F参数指定例如:

复制代码 代码如下:

date | perl -ane 'print "$F[0]\n"';

-c

只检查 Perl 脚本语法,而不执行脚本。

-d

对脚本打开 Perl调试器。

-D

设置 Perl 的调试标记(请先检查 Perl 的安装情况,确保已经安装了调试器),若要观察 Perl 是如何执行脚本的,可使用 -D14。

-e command

用于再命令行而不是在脚本中执行 Perl 命令。

-F pattern

规定拆分输入行时使用的模式。模式是位于斜杠、单引号或双引号之间的正则表达式。例如,-F/:+/ 表示在一个或多个冒号上拆分输入行,如果 -a 仍然起作用的话,则打开它。

-h

perl 执行shell命令_perl命令行应用程序详_word2007 向程序发送命令时出现问题

打印 Perl 的命令选项列表。

-i extension

在使用 <> 循环遍历文件时启用原位编辑模式。 如果没有规定扩展名的话,则原位修改各行内容,否则使用扩展名来修改输入文件名(以便充当备份文件),并使用原位编辑的原文件名创建输出文件。 这也是所有 print 语句选择的文件句柄。

-I directory

与 -P选项一起使用,负责告诉 C 预处理程序查找包含的文件,其默认目录包括 /usr/included、/usr/lib/perl 以及当前目录。

-1 digits

启用自动行结束处理。如果使用了 -n 或者 -p 选项,则去掉终止符。把位数(八进制) 赋值给 $\ ,并将行终止符添加到 print 语句中。如果没有规定位数的话,则将 $\ 设置为 $/ 的当前值。

-l

1、苹果设备,中文状态下输入英文,会自动添加空格分隔每个英文字母。输入明细表时,自动复制上一行内容,到末尾自动加新行。现在,您的ical饲料也需要精确到换行分隔符(苹果的ical将在末尾错换行不饲料),我发现这3个验证器的组合效果最好:。

复制代码 代码如下:

-m [-] module

-M [-] module

-M [-] module'

-[mM] module =

arg [,arg]..

-m module

在执行 Perl 脚本之前执行 use 方法。

-M module

再执行 Perl 脚本之前执行 use 方法。如果添加附加的文本,则可使用引号。方括号中的短横线表示把 use 指令替换为 no。

-n

使 Perl 隐式地循环遍历指定的文件,并只打印规定的行。自动循环,相当于 while(<>) { 脚本; }

-p

使 Perl 隐式地循环遍历指定的文件,同时打印所有的行。自动循环+自动输出,相当于 while(<>) { 脚本; print; }

-P

使要运行的脚本在 Perl 编译之前通过 C 预处理程序。

-s

再脚本名之后、文件名参数之前启用开关项解析,并从@ARGV 数组中删除所有找到的开关项。将开关项设置为同名的标量型变量,并将标量赋值为 1 。例如,-abc 在脚本中将转换为 $abc。

-S

如果不支持 #!/usr/bin/perl 行,则让 Perl 在 PATH 环境变量中搜索脚本。

-T

用户端浏览器执行的脚本程序,主要用于对 html 表单输入的基本检查等功能。 执行并分析测试脚本:示范如何执行测试脚本以及检查测试脚本执行的结果 。现在碰到一个情况:我qtp的参数化是通过读取datatable(就是那个execel表)里面的数据来实现的,每一次跑一遍脚本,就要修改数据表里面很多列的数据(我测试的那个程序不能输入重复的数据),我想能不能通过程序,来控制那个数据表里面的每一列的数据,再开始跑脚本之前实现动态对数据的增加修改,比如说:我第一次跑脚本用的是原来已经在数据表里面设定好的数据,第二次跑的之前,先把数据表里面的每一列数据+b 列如:原来某一列第一行的值为aa,我第二次跑脚本之前让它变成aab,可以采用下面的方法:。

-u

编译后产生脚本的核心转储(基于 UNIX 系统)。

-U

perl命令行应用程序详_perl 执行shell命令_word2007 向程序发送命令时出现问题

允许 Perl 执行不安全的操作,如果是超级用户的话,则断开目录链接。

-v

打印 Perl 的版本信息。

-V

打印最重要的 Perl 配置项和数组 @INC 中当前值的汇总。

-V:NAME

打印 NAME 的值,其中 NAME 是配置变量。

-w

打印警告信息,包括错误使用保留字、文件句柄、子例程等情况。

-W

启用所有警告,而不论是否已经用 no warnings 关闭了本地警告。

-x directory

忽略 #!/usr/bin/perl 行之前的任何文本。如果将目录名当作 -x 开关的参数,则 Perl 会在开始执行脚本之前自动切换到该目录。

-X

关闭所有警告。

每一行将缺省保存在 $_,-p 和 -n 一样,但是还会打印 $_ 的内容。

请注意:-p 开关和 -n 开关的使用。当您想显式打印数据时,使用 -n 开关。-p 开关隐式地将 print $_ 语句插入到 -n 开关所产生的循环中。因此,-p 开关更适用于对文件进行的完全处理,而 -n 开关更适用于选择性文件处理,这样的处理只需打印特定数据。

安全网参数

有三个参数我认为可以起到“安全网”的作用,因为它们可以让你避免犯错,特别是当你在使用 Perl 尝试一些特别聪明(或这愚蠢)的想法时,错误难免会发生。有经验的 Perl 程序员常常使用这三个参数来提前找到错误所在。

-c 是第一个。这个参数编译 Perl 程序但并不真正运行它,由此检查所有语法错误,每次修改 perl 程序之后我都会立刻使用它来找到任何语法错误。

复制代码 代码如下:

$ perl -c program.pl

这保证了程序依然可以编译。很显然,当你输入一小段代码之后立即进行检查,比起一下子输入几百行代码然后开始 debug 要容易很多。

-W 是第二个参数。它会提示你任何潜在的bug。Perl 5.6.0 之后的版本已经用 use warnings; 替换了-w。你应该使用 use warnings 因为它要比 -w 更灵活。

-T 是第三个参数。它让 perl 出于了 taint 模式中。在这个模式里,Perl 会质疑任何程序外传来的数据。例如从命令行读取,外部文件里读取或是 CGI 程序里传来的数据。这些数据在 -T 模式里都会被 Tainted(污染),Tainted 数据不可以被用来和外部交互。例如使用在 system 调用和用作 open 的文件名,关于什么数据会被Tainted,请参阅perlsec 文档,那里有一个完整的列表。

要想使用 Tainted 的数据就必须 untaint这个数据。untaint是通过正则表达式来实现的,关于 taint 本身的内容足够写一篇单独的文章,所以这里我不会太多的讲述 taint 模式。如果你要编写的程序(例如 CGI 程序)需要从从用户那里接受不可知的输入,我推荐使有 taint 模式。

还有一个值得一提的参数是 -d,它将让 Perl 处于 Debugger 模式。这个话题内容非常多,我推荐阅读文档 ‘perldoc perldebug'或 Richard Foley 的 Perl Debugger Pocket Reference 一书.

使用模块

下面的几个 Perl 参数可以让短小的 Perl 程序很容易的在命令行上运行,-e 可以让 Perl代码在命令行上被编译器直接执行。例如,我们可以直接在命令行上运行“Hello World” 程序而不用把它写称 Perl 程序。

复制代码 代码如下:

$ perl -e 'print "Hello World\n"'

多个 -e 也可以同时使用,运行顺序根据它出现的位置。

复制代码 代码如下:

$ perl -e 'print "Hello ";' -e 'print "World\n"'

perl 执行shell命令_word2007 向程序发送命令时出现问题_perl命令行应用程序详

象所有的 Perl 程序一样,只有程序的最后一行不需要以 ; 结尾,你也可以用 -e 来引用模块,但 -M 让它变得更容易。

复制代码 代码如下:

$ perl -MLWP::Simple -e 'print head "http://www.example.com"'

-M模块名和use 模块名一样。有些模块有默认的模块导入,如果你不想导入它们,你可以使用-m。-m模块名和 use module() 一样,关闭了默认的导入。例如下面这个例子,因为 head 函数是默认导入,而使用-m 时就不会执行,结果是没有输出。

复制代码 代码如下:

console.trace()at c (http://www.contoso.com/trace.html:24:3)at a (http://www.contoso.com/trace.html:18:3)at global code (http://www.contoso.com/trace.html:30:1)console.trace()at c (http://www.contoso.com/trace.html:24:3)at b (http://www.contoso.com/trace.html:21:3)at d (http://www.contoso.com/trace.html:27:3)at global code (http://www.contoso.com/trace.html:31:1)。php$fp = fsockopen("[url=http://www.example.com]www.example.com[/url]", 80, $errno, $errstr, 30)。$fp = fsockopen("[url=http://www.example.com]www.example.com[/url]", 80, $errno, $errstr, 30)。

-m 和 -M 有很多方便的语法来帮助你使用它们,你可以在 = 后面列出对 use 的各种参数。

复制代码 代码如下:

$ perl -MCGI=:standard -e 'print header'

perms:例子/admins/user/**=perms[user:add:*],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于ispermitedall()方法。roles:例子/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasallroles()方法。,注意这是在非严格模式下写的,若是在严格模式下,则普通函数写法的那个this返回的是undefined,就会报错的,而箭头函数无论是在严格模式还是在非严格模式,都是支持的,从上面的普通函数与箭头函数对比来看,两者的功能并没有什么异样,但是箭头函数的代码明显要少很多,使用箭头函数让你少写那个function,当函数调用时,只有一个参数时,其定义函数表达式的圆括号可以省略,但是一般不建议省略,当有多个参数传值调用时,那么该圆括号是不能省略的,圆括号相当于就是function,而逗号隔开的参数相当于就是形式参数。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-118250-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...