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;
相關文章
相關標籤/搜索