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";