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