服务器技术之Pcrl语言文件的读写
对于文本文什的读操作,一般用下面的形式:
$line=<InFile>;
这可从文件InFile中读取一行数据并存储到简单变量$line中,同时把文件指针向后移动一行。如果要读入多行,可以用如下形式:
@array=<InFile>;
这将把文件InFile的全部内容读入数组@array,文什的每一行作为@array的一个元素。应当注意的是,上面方法读入的数据包含了回车符。
对于从标准输入读入数据可以用:
$line=< STDIN>.
其中,STDIN为标准输入文件,不需要打开。
对于文件的写操作,要用到prim或printf函数,比如:
open(OutFile, ">log.txt”),
print OutFile "'The userjohn has logged in through Ltyo from 192.168.0.2\n”);
将打开文件log.txt,并向其中输出一行信息。
下面给出一个读写文件的例子。
$tilcname_nlog txt";
open( FILE,“>$mename") lI die "Cannolopen $filenamen for writing…”:
print FILE "The userjohnlogged Lo ttyOl.
",
print FILE 'The user hack Logged to tty03 from 168.192 0.2.
';
close FILE
print "The system Log as follows:
";
opcn (FILE,"$filename") II die "Cannot open $filenamen for reading
while ( $line = <FILE》
print "$line";
close(FILE);
这个程序首先打开一个文本文件log.txt,向其中输入两行信息,然后将其关闭。下面再将它打开,并输出其In1的内容,程序运行的结果如下:
The system Log as follows:
The user johnlogged to tty01.
The user hack logged to tty03 from 168.192.0.2
对于上面读文件的部分,也可以用更为简单的方法来实现,如:
$filename="Iog.txt";
open (FILE,$filename')ll die "Cannot open $fllenamen for reading"";
prim '$line" while( $Jine= <FILE>),
close (FILE).
在这个例子中,文什log.txt内的数据行一行毗了$Jine变量,然后再把$line显示出来,当然也可以不指定变量,那么文件数据将会赋予内部变量“$一”,如下所示:
$fiLename='log.txt";
open (FILE,"$filenamc")¨die "Cannot open $filenamen for reading…”;
whiLe((FILE》
{ print;}
close(FILE);
这使得程序变得更加简练。