perl文件句柄


文件句柄

:Perl进程与外界之间的IO联系的名称。 shell

在Perl5.6以前,全部文件句柄名称都是裸子,以后能够把文件句柄的引用放在常规变量中。 数组

6个特殊文件句柄名是Perl保留的,STDIN、STDOUT、STDERR、DATA、ARGV、ARGVUT。 this

用户能够在shell里运行如下命令: 编码

$./my_program <dino >wilma;   #告诉shell,程序的输入应该来自dino,输出应该送到wilma文件。

打开文件句柄

三种perl默认文件句柄---STDIN、STDOUT、STDERR,是产生Perl进程的父进程自动打开的文件或设备。 spa

open Filehandler,filename; code

open CONFIG,'dino';#打开已存在的dino文件,文件中的任何内容均可以读到咱们的程序中

open CONFIG,'<dino';#用小于号声明该文件只是用来读入,而非写入

open BEDROCK,‘>fred’;#大于号,打开文件句柄,并输出到新文件fred中,若是已存在fred,则清除原内容并以新内容取代之;

open LOG,'>>logfile';#双大于号,打开文件,若是文件本来就存在,那么新数据会添加在原有内容后面,若是不存在,会建立一个新文件。

open CONFIG,'<','dino';

open BEDROCK,'>',$file_name;

open LOG,'>>','logfile';

open CONFIG,'<:encoding(UTF-8)','dino';##open CONFIG,'<:utf8','dino';

简写方式不会考虑输入或输出的数据是否真的就是合法的UTF-8字符串,若是是encoding(UTF-8),会确认编码是否正确。 进程

%perl -MEncode -le "print for Encode->encodings(':all')"#打印出全部Perl能理解和处理的字符编码; 字符串

使用文件句柄

print LOG “Captain‘s log,stardate 3.14159\n”;

printf STDEER "%d percent complete.\n",$done/$total*100;

printf (STDEER "%d percent complete.\n",$done/$total*100);

printf STDEER ("%d percent complete.\n",$done/$total*100);

改变默认文件输出句柄

select BEDROCK;#改变输出用的默认文件句柄

print “i hope Mr.Slate doesn't find out about this.\n”;

select STDOUT;#选择默认的输出句柄

用say来输出

Perl5.10开始能够使用say,在打印每行内容时会自动加上换行符。 字符编码

use 5.010;

say “Hello!”;#等价于print “Hello!\n”;

say BEDROCK "hello!";#为say指定一个文件句柄

$name = 'fred'

say $name; #等价于print $name,"\n";

my @array = qw {a b c d};

say @array; #打印abcd\n

say "@array"#打印a b c d\n

标量变量中的文件句柄

my $rocks_fh;

open $rocks_fh,'<','rocks.txt' or die "Could not open rocks.txt:$!";

while(<rocks_fh>){

    chomp;

....

}

close $rocks_fh;

返回文件句柄

:一、使用\*; class

#!/usr/bin/perl
use strict;
sub openfile()
{     
    my $path=shift;#把数组的第一个值移出并返回它,而后把数组长度减一并把全部的东西都顺移
    open(FILE,"$path") or die "Can't open $path $!\n ";
    return \*FILE;
}
my $temp=&openfile("config");
my @file=<$temp>;
print @file;

二、使用变量

#!/usr/bin/perl
use strict;
sub openfile()
{
    my $file;
    my $path=shift;
    open($file,"$path") or die "Can't open $path $!\n ";
    
    #close($file);
    return $file;
    
}
my $temp=&openfile("config");
my @file=<$temp>;
print @file;
相关文章
相关标签/搜索