perl学习笔记2

printf:

要输出数字,通常使用%g◆,它将根据需要自动选用浮点数,整数,或者指数。

%d 为十进制◆整数,根据需要而截尾。

%x 是针对十六进制的,%o 是针对八进制的。

%s 是针对字符串的。

    printf “%10s\n”, “wilma”; #输出为:○○○○○wilma

    如果宽度值为负数,则为左对齐(对于所有的格式符)

    print “%-15s\n”, “flintstone”; #输出为flintstone○○○○

 

Perl 自身有六个文件句柄:STDIN,STDOUT,STDERR,DATA,ARGV,ARGVOUT◆。

 

$ ./your_program <dino >Wilma

上述命令告诉shell,从一个名叫dino 读入,将结果输出到叫做wilma 的文件之中。

 

$ cat fred barney | sort | ./your_program | grep something | lpr

cat 命令将输出文件fred 的所有行,紧接着是文件barney 的所有行。这个输出作为sort 的输入,它将所有的输入的行进行排序,再将结果传递给your_program。

经过your_program 处理后,将结果传给grep,它会将某些行去除掉,然后送给lpr,它会将传给它的数据打印出来。

 

STDERR:默认情况下,错误将输出到用户的显示屏,错误可以输出到用户指定的任何地方。

$netstat | ./your_program 2>/tmp/my_errors

 

open CONFIG, “dino”; // 打开了一个名为CONFIG 的文件句柄,它指向dino 文件

open CONFIG, “<dino”; // 用< 明确的指明了“使用这个文件进行输入操作”,默认的情况就是输入(没有<)

open BEDROCK, “>fred”; // 打开文件句柄BEDROCK,输出到新文件fred 中。如果存在这样的文件,则清空它,并将新的数据写入。

open LOG,“>>logfile”; // 打开一个文件,数据追加到文件后面。

 

在Perl 中,你可以通过$!◆得到错误信息。

  1 #! /usr/bin/perl
  2
  3 if(!open PASSWD, "/etc/passwd"){
  4     die "How did you get logged in?($!)";
  5 }
  6
  7 while(<PASSWD>){
  8     chomp;
  9     print $_."\n";
 10 }

打印passwd文件内容。

 

Perl 也允许使用非10 为底的数字。八进制以0 开头,十六进制以0x 开头,二进制0b 开头。

0377 #八进制数字377,等同于十进制数字255

0xff #十六进制数字FF,等同于十进制数字255

0b11111111 #等同于十进制数字255

 

2**3,表示2 的3 次方

 

一个特殊的操作符是字符串重复操作符(string repetition operator),由小写的字母x 表示。

这种操作能把操作符左边字符串重复操作符右边数字那么多次:

“fred”x 3 # “fredfredfred”

 

运行程序时,可以在命令行中使用–w 这个参数把警告打开:

$ perl–w my_program

或者,如果一直都需要警告(warning),可以在#! 这一行加上-w,如:

#! /usr/bin/perl –w

由于在这些系统中通常与Perl 的具体路径关系不大,因此可如下书写:

#! perl –w

 

◆warnings progma 允许文字上的警告。

#! /usr/bin/perl

use warnings;

现在,如果将‘12fred34’当作数字来用,Perl 将警告你:

Argument “12fred34”isn’t numeric

 

如果看到不能理解的警告信息,可以使用diagnostics pragma,通过它可以看到更详细的信息。

#! /usr/bin/perl

use diagnostics;

或在命令行中使用–M 这个参数,也可以看到diagnostics 信息

$ perl–Mdiagnostics ./my_program

posted @ 2012-08-22 20:53  nalasun  阅读(235)  评论(0编辑  收藏  举报