您的位置:首页 >> 操作系统 >> Linux >> 正文
Linux RSS
 

perl

http://www.rdxx.com 05年09月13日 21:55 Blog.ChinaUnix.net 我要投稿

关键词: Perl
Perl 尝试一些聪明( 或 stupid) 的想法时, 错误难免会发生. 有经验的 Perl 程序员常常使用三个参数来提前找到错误所在,

Perl 有很多命令行参数. 通过它, 我们有机会写出更简单的程序. 在这篇文章里我们来了解一些常用的参数.

Safety Net Options

在使用 Perl 尝试一些聪明( 或 stupid) 的想法时, 错误难免会发生. 有经验的 Perl 程序员常常使用三个参数来提前找到错误所在,

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

代码:
$ perl -c program.pl


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

-T 是第三个参数. 它把 perl 放到了 tain 模式. 在这个模式里, Perl 会质疑任何程序外传来的数据. 例如,从命令行读取, 外部文件里读取 或是 CGI 程序里传来的数据. 这些数据在 -T 模式里都会被 Tainted 掉.

Tainted 数据不可以被用来和外部交互. 例如 使用在 system 调用和用作 open 的文件名. perlsec 文档里有更多什么数据会被Tainted 掉的例子.

要想使用 Tainted 的数据就需要 untaint这个数据. untaint 是通过正则表达式来实现.这里我不会太多的讲述 taint 模式. 如果你要编写的程序 (例如 CGI 程序) 需要从从用户那里接受不可知的输入, 我推荐使有 taint 模式

-d ,Perl Debugger , 在这里值得一提但我们无法顾及, 我推荐阅读文档 'perldoc perldebug' 或 Richard Foley 的 Perl Debugger Pocket Reference 一书.

Command-Line Programs

下面的几个 Perl 参数可以让短小的 Perl 程序运行在命令行. -e 可以让 Perl 程序在命令行上运行.例如, 我们可以在命令行上运行 "Hello World" 程序而不用把它写入文件再运行.

代码:
$ perl -e 'print "Hello Worldn"'


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

代码:
$ perl -e 'print "Hello ";' -e 'print "Worldn"'

象所有的 Perl 程序一样, 只有程序的最后一行不需要以 ; 结尾.

虽然你也可以象通常一样引用模块, 但 -M 让它变得更容易.

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


-M模块名 和 use 模块名 一样. 如果不想引入模块的缺省值, 你可以使用 -m. -m模块名 和 use 模块名() 一样. 例如下面这个例子, 因为 head 函数是缺省引入,而使用 -m 时就不会, 结果是没有输出.

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


-m 和 -M 通过 = 来引入某个模块的特别函数.

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


这里, CGI.pm 的 ":standard" 被引入, header 函数因此可以使用.要引入多个参数可以通过使用引号和逗号.

代码:
$ perl -MCGI='header,start_html' -e 'print header, start_html'


这里我们引入了 header 和 start_html 函数.

Implicit Loops

-n 和 -p 增加了循环的功能, 使你可以一行一行来处理文件.

代码:
$ perl -n -e 'some code' file1


这与下面的程序一样.

代码:
LINE:
    while (<>) {
      # your code goes here
    }


<> 打开命令行里的文件,一行行的读取.每一行缺省保存在 $_

代码:
  $ perl -n -e 'print "$. - $_"' file


上面的这一行可以写成

代码:
  LINE:
    while (<>) {
      print "$. - $_"
    }


输出当前行数 $. 和当前行 $_.

-p 可以让上面的程序变得更容易. -p 会输出 $_ 就像这样

9 7 3 1 2 4 8 :


 
 
标签: Perl 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站