• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >perl > Perl命令行应用程序详解

Perl命令行应用程序详解

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了linux perl命令,perl命令,perl命令行,perl 命令行参数,perl 单行命令等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

perl - Practical Extraction and Report Language,Perl有很多命令行参数,通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl。在这篇文章里我们来了解一些常用的命令行参数。

命令行调用
perl [ -sTtuUWX ]
[ -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 ]...
</div>

[开关项描述]

-0

规定记录分隔符。

-0<数字>

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

-00

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

-0777

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

-a

与 -n 或者 -p 一起使用,负责打开自动拆分模式,用于对空白字符进行隐式拆分,用空格分隔$_并保存到@F中,相当于@F=split ''。分隔符可以使用-F参数指定例如:
date | perl -ane 'print "$F[0]\n"';
</div>

-c

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

-d

对脚本打开 Perl调试器。

-D

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

-e command

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

-F pattern

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

-h

打印 Perl 的命令选项列表。

-i extension

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

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

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

-l
对输入内容自动chomp,对输出内容自动添加换行。使用 -l 有两个效果,第一自动 chomp 输入分隔号,第二 把$/ 值付给 $\ (这样 print 的时候就会自动在末尾加 \n)

-m [-] module
-M [-] module
-M [-] module'
-[mM] module =
arg [,arg]..
-m module
</div>

在执行 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
强制打开“污染“ 检查,用于测试脚本,一般只用在 setuid 或 setgid 程序上。推荐自行检查 CGI 脚本。

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

-U
允许 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
</div>

这保证了程序依然可以编译。很显然,当你输入一小段代码之后立即进行检查,比起一下子输入几百行代码然后开始 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"'
</div>

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

您可能想查找下面的文章:

  • Perl命令行应用程序详解
  • Perl实现的Linux下socket代理服务器
  • perl命令行参数内建数组@ARGV浅析
  • perl 调试命令的相关知识小结
  • perl调用外部命令(g)awk的方法

相关文章

  • Perl语言入门三部曲 附电子书下载
  • perl 子程序 sub
  • perl 常用系统函数列表
  • 用python下载百度文库的代码
  • perl 删除数组元素的几种方法小结
  • python批量下载壁纸的实现代码
  • 详细说明什么是Perl
  • 不错的mod_perl编程的简单应用实例介绍
  • Perl调用shell命令方法小结
  • 有关perl正则表达式的一些杂项

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • perl Socket编程实例代码
    • perl 学习资料整理篇第1/4页
    • perl用变量做句柄介绍
    • perl几个文件操作例子
    • 用perl实现生物突变的随机模拟程序代码
    • Perl 哈希的创建和引用介绍
    • 分享下perl胶水实现前后台对接的方法
    • perl常见问题集合之二
    • PERL脚本 学习笔记
    • perl 列表和数组变量详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有