Perl 语言概览,高屋建瓴、欲招人之耳目(三)

1.4 文件句柄

文件句柄只是你给文件,设备,网络套接字或管道起的一个名字,这样可以帮助你分清你正在和那个文件或设备通讯,同时掩藏了如缓冲等复杂性。

你可以使用 open 创建并关联一个文件。open 函数需要至少两个参数:文件句柄和你希望与文件句柄关联的文件名。Perl 也给你一些预定义(并且预先打开)的文件句柄。STDIN 是我们程序的标准输入,

STDOUT 是标准输出。STDERR 标准错误输出。

因为你可以用 open 函数创建用于不同用途(输入,输出,管道)的文件句柄,因此你必须指定你需要哪种类型。

   open(SESAME, "filename")         # 从现存文件中读取
   open(SESAME, "<filename")         # (一样的东西,明确地做)
   open(SESAME, ">filename")         # 创建文件并写入
   open(SESAME, ">>filename")         # 附加在现存文件后面
   open(SESAME, "| output-pipe-command")   # 设置一个输出过滤器
   open(SESAME, "input-pipe-command |")      # 设置一个输入过滤器

close(SESAME) 来关闭文件句柄或者另外一个 open 语句将文件句柄同别的文件关联起来。打开一个已经打开的文件句柄隐含地关闭第一个文件。

从控制台输入一个数字的做法,注意用 <STDIN>,带尖括号

   print STDOUT "Enter a number: ";      # 请求一个数字
   chomp($number = <STDIN>);            # 输入数字
   print STDOUT "The number is $number.\n";   # 打印该数字

1.5 操作符

Perl 的操作符大多数直接取自 C,FORTRAN,sed (1) 和 awk (1)。下面列出一些与 C 比有些特别的操作符。

$a ** $b  幂  取 $a 的 $b 次幂
print 123 . 456;      # . 连接操作符,打印 123456
print 123 x 3;      # x 重复操作符,打印 123123123
$val ||= "2";      # 如果 $val 不为真则把它设置为 2
($temp -= 32) *= 2; # perl 还可以这么写,相当于 $temp=($temp-32)*2;

1.5.5 逻辑操作符

Perl 有两组逻辑操作符,一组借鉴了 C(!/&/|/&&/||) ,另一组借鉴了 BASIC(not|and|or|xor)。

Perl 的逻辑操作符并不是返回真(true/1)或假(false/0),而是返回最后触及到的操作数,如:

print 100 && 200 ; # 输出 200
print 200 && 100 ; # 输出 100

open(GRADES, "grades") or die "Can't open file grades: $!\en"; #这个常用

1.5.6 比较操作符

比较操作符也有两组,符号(==|!=|<|>|<=|>=|<=>),字串(eq|ne|lt|gt|le|ge|cmp)。<=>|cmp 相当于 java 的 compareTo() 操作,相等时为 0,如果 $a 大为 1 如果 $b 大为 -1,在 sort 函数中,它们非常有用。

1.5.7 文件测试操作符

-e $a  存在,-r $a  可读 ,-w $a  可写,-d $a  目录,-f $a  文件,-T $a  文本文件

一个例子(留意一下 or/and 操作和 warn 输出信息):
-e "/usr/bin/perl" or warn "Perl is improperly installed\n";
-f "/vmlinuz" and print "I see you are a friend of Linus\n";

本文链接 https://yanbin.blog/perl-overview-3/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments