Skip to content

Latest commit

 

History

History
244 lines (166 loc) · 8.11 KB

File metadata and controls

244 lines (166 loc) · 8.11 KB

������

File::Slurp - �����<�ゃ�����篏���勐�合�������ʃ˛莨�/��梧昭

网�荀�

use File::Slurp;

my $text = read_file( 'filename' ) ;
my @lines = read_file( 'filename' ) ;

write_file( 'filename', @lines ) ;

茯㋛�

�����勉�≪�吾�ャ�若�˨��1��ゃ�勛亜�����ɱ�若�喝�冴����˨����������<�ゃ�����篏����茯㏍�粋昭��帥�� ��吾��莨若�帥���櫝�純�˨�������泣����˨�若����潟�����箴������障����������������夌亜�����˩戎������ ���荵���ʋ�号����с����<�ゃ�˨�勐��絎鴻��羝<��������������緇���с�������������˨���������� ���絽吾����合����������ŝ����������̬┃荐���������⓾����障�������障�������c�㋘�壔����ŝ� ��ャ�c�⓾�����. ��� ..�����ゃ�������⓾�勉����<�ゃ�˨��茯㏍�粋昭�����泣����˨�若����潟�� ���箴������障�����

�����������勌幻������/��������冴����泣����˨�若����潟�壔����<�ゃ�˨�˨�勉�炊����純����������ゃ�����罔�羣���ュ�阪����˨� 罘���純����ŝ�����������羈���������⓾��������������������緇������勉����勉�勐��篏����茯㏍�粋昭��帥����������違�� $/���undef��̬┃絎���������������ŝ�鴻����祉�潟�潟����㏍�鴻�����<>���茯㏍�粋昭������������ ��阪����������������勐����⓾��STDOUT�����阪����������������c��罔�羣���勉����壔�������壔��篏帥�c�⓾��������������

read_file

�����勉�泣����˨�若����潟�壔����<�ゃ�����篏����茯㏍�帥����帥�������勐��絎鴻����若�喝�冴�������̬�������障����� ��ŝ�鴻����祉�潟�潟����㏍�鴻����с�虁����勉�ŝ�鴻�����菴������障��($/��勛憜����勐�ゃ�������峨���������� ��ñ�������障��)�����鴻�˨�í�若�祉�潟�潟����㏍�鴻����с�壔����<�ゃ�����篏����1��ゃ�勉�鴻�˨�í�若������� 菴������障�����

my $text = read_file( 'filename' ) ;
my @lines = read_file( 'filename' ) ;

read_file��吾�勖�������勐����違�壔����<�ゃ��������罧������勐����違�壔�ŝ����激�с�潟�с�� �����勐�若�喝�冴����勐��������紊���眼�������㏍��/��ゃ�勛����水����������˨�ŝ����障����� binmode�����ゃ����ŝ����激�с�潟�壠����⓾��筝後����帥�������������<�ゃ�˨����若�喝�冴������� ��í�勉�������̬�������������������九勝�����障�����

�����㏍�勐����違�������<�ゃ�˨�祉����潟����˨�勉�ŝ����<�㋘�潟�鴻��(fileno���絎�臂í�������� ��ゃ��菴������ŝ�����)I/O��ŝ����吾�с�壔����с�������違�������潟����˨��筝後����帥�������障���������� ��≪�若�������泣����若����������⓾�������勉�с��<DATA>���\*STDIN��������c�������潟����˨�� 筝後����帥�������障�����箴���������⓾��open( '-|' )���茵�������絖�箴������㏍�祉�鴻��荀ŝ� 筝後����帥����������若�帥����������冴����⓾�����test���handle.t������荀с�������������� �����勐�翫����˨�������若�帥����í�勉����������若�喝�冴�������̬�������������������九勝������ ��ŝ����激�с�潟�勐����⓾��罘���純����障�����

��ŝ����激�с�潟�˨�壚札筝���勉����勉����������障��:

binmode

binmode��ŝ����激�с�潟��荐㊤����������������<�ゃ�˨�壔����ゃ����ŝ�祉�≪�若����т幻�����帥�������障�����

my $bin_data = read_file( $bin_file, binmode => ':raw' ) ;

羈����: ��������壠�������˨��sysopen��勉��������O_BINARY���荐㊤�������障������������������� binmode�����若�喝�冴�����篁���勉����<�ゃ�˨�祉�≪�若�������泣����若�������������������勐����違�� �����鴻�������鴻����с�����������

array_ref

�����勉����若����ゃ�勉�ŝ����激�с�潟��荐㊤�����������������(��鴻�˨�í�若�祉�潟�潟����㏍�鴻����с�勉��) 菴������������ゃ��筝後����帥�������������<�ゃ�˨�勤�������ャ�c�⓾����� ��������ŝ����<�㋘�潟�鴻�˨�ŝ����障�����篁ヤ�����2��ゃ�勐�若�喝�冴����壠����������潟�с��:

my $lines_ref = read_file( $bin_file, array_ref => 1 ) ;
my $lines_ref = [ read_file( $bin_file ) ] ;

scalar_ref

�����勉����若����ゃ�勉�ŝ����激�с�潟��荐㊤�����������������(��鴻�˨�í�若�祉�潟�潟����㏍�鴻����с�勉��) 菴������������ゃ�壚幻�����帥�������������<�ゃ�˨�勐��絎鴻�с��������絖������吾� ��鴻�˨�í�若�祉�ŝ����<�㋘�潟�鴻�˨�ŝ����障�������������奝��絽吾�壠����ŝ����鴻�˨�í�若�� 菴���������������������ŝ����障�����

my $text_ref = read_file( $bin_file, scalar_ref => 1 ) ;

buf_ref

�����勉�ŝ����激�с�潟��篏帥�c�⓾�鴻�˨�í�若�祉�ŝ����<�㋘�潟�鴻��羝<�������������с����障����� ��������☖幻�����帥�������������<�ゃ�˨�勐��絎鴻�壔����勉�鴻�˨�í�若����主����������障����� ��������壔����勉�祉����勉�ŝ����激�с�潟��筝�膩���˩戎��������������с����障�����

my $text_ref = read_file( $bin_file, buf_ref => \$buffer,
                     array_ref => 1 ) ;
my @lines = read_file( $bin_file, buf_ref => \$buffer ) ;

blk_size

�����勉�ŝ����激�с�潟��篏帥�c�⓾��(\*STDIN��勉��������)��≪�˨�ŝ�若����潟�������⓾����� �����潟����˨�����筝後����帥�������������˩戎��������������㏍����壔�祉�泣�ゃ�冴��荐㊤�������������������с����障����� ��������í�˨�����1MB��с�����

my $text_ref = read_file( $bin_file, blk_size => 10_000_000,
                     array_ref => 1 ) ;

err_mode

�����勉�ŝ����激�с�潟��篏帥�c�⓾�������í�若����榊��������������read_file�����í�勉�������������������� ��九勝�����������������с����障����������勉�ŝ����激�с�潟�勉�������í�˨�����'croak'��с�������������� 'carp'���篏���������í�若����宴����ŝ�����������'quiet'���荐㊤�������������������с����障����� �����勉�潟�若����с�壔��紊掩����������������˨�虁⑥��������冴��(=carp)��������������� 篁���勉����<�ゃ�˨��茯㏍�帥����帥�������������c�⓾����障�����

my $text_ref = read_file( $file, err_mode => 'carp' ) ;
unless ( $text_ref ) {

    # 篁���勉����<�ゃ�˨��茯㏍�帥����帥�障��������������荀���ゃ�������ŝ�������井Ⅶ��˨�障��(=croak)
    $text_ref = read_file( $another_file ) ;
}

# ${$text_ref}�����☎��

write_file

�����勉�泣����˨�若����潟�壚�������勐�若�喝�冴����с����<�ゃ�����篏������阪�������障�����

write_file( 'filename', @data ) ;

write_file��吾�勖�������勐����違�壔����<�ゃ�������с�����罨<�勐����違�壔�ŝ����激�с�潟� write_file��勐��������紊���眼����������������с�������㏍��/��ゃ����ャ�c����������激�ャ� ��ŝ����<�㋘�潟�鴻�с�����綣���違�勉�ŝ�鴻����с�勐����勉����勉�壔����<�ゃ�˨����阪����������� �����若�帥�˨�ŝ����障�����

write_file( 'filename', {append => 1 }, @data ) ;
write_file( 'filename', {binmode => ':raw' }, $buffer ) ;

�����ュ就��������⓾�������������若�水����違�勐����㏍����鴻�˨�í�若�障����奝�������ŝ����<�潟�㋘�潟�鴻� ��������違����������壔����<�ゃ�˨����吾��莨若�障����������若�帥�������⓾�����篏帥�������障����� ������篁ラ�����@_��勐����違�壠����☎�∴����������障������������� �����<�ゃ�˨����吾��莨若�障�������阪�����羝<����������í����号����с�������� buf_ref��ŝ����激�с�潟�����膈���с��������������2��ゃ�勛����水����������壠��膈���с����� �����������ŝ����<�㋘�潟�号検�����˨�������若�喝�冴����壔�祉�������í�勐�翫����с�������������ŝ����障����� (��鴻��紊с����ŝ����<�ゃ�˨�с��)

write_file( 'filename', \$buffer ) ;
write_file( 'filename', $buffer ) ;

write_file( 'filename', \@lines ) ;
write_file( 'filename', @lines ) ;

�����������㏍�勐����違�������<�ゃ�˨�祉����潟����˨�吾�勉�ŝ����<�㋘�潟�鴻�障�����(������fileno��� 絎�臂í�������⓾�������ゃ��菴�������)I/O��ŝ����吾�с�壔����с�������違�������勉����潟����˨�� 茯㏍�粋昭��障����障����������勉�≪�若�����\*STDOUT��勉�������ŝ����潟����˨�後�������冴����������� ��泣����若����������⓾����障�����箴���˨�ゃ����⓾��test handle.t������荀с�������������� open( '-|' )���茵�������絖������㏍�祉�鴻��筝後����帥����������若�帥��荀ŝ����������冴����障����� �����若�帥����í�勉��������write_file���羝<����������勉�������九勝�����������⓾�勉�ŝ����激�с�潟� �����勐�翫����с��罘���純����障�����

�����勉�ŝ����激�с�潟�壚札筝���勉����������с��:

binmode

binmode��ŝ����激�с�潟��荐㊤�������������������<�ゃ�˨�壔����ゃ����ŝ�祉�≪�若����ф�吾��莨若�障����障�����

write_file( $bin_file, {binmode => ':raw'}, @data ) ;

羈����: ��������壠�������˨��sysopen��勉��������O_BINARY��≪�若��鐔ャ����í�違��荐㊤�� �����⓾����障�����������������binmode�����若�喝�冴�����篁���勉����<�ゃ�˨�祉�≪�若����� ��泣����若�������������������勐����違��羝<����鴻����с�����������

buf_ref

�����勉�ŝ����激�с�潟��篏帥�c�☗�阪����������������若�帥����ャ�c�⓾�������鴻�˨�í�若�吾� ��ŝ����<�㋘�潟�鴻�ф検��������������с����障��������������荐㊤����������⓾����������� @_��勌賢��勐����⓾�勉����若�水����違��(��鴻�˨�í�若�祉�ŝ����<�㋘�潟�鴻�勛����ュ就�����˨�����) ��∴����������障�������������壚札筝���勉����勉�����膈���с��:

write_file( $bin_file, { buf_ref => \$buffer } ) ;
write_file( $bin_file, \$buffer ) ;
write_file( $bin_file, $buffer ) ;

append

�����勉����若����ゃ�勉�ŝ����激�с�潟��荐㊤�������������������若�帥�夌憜����勉����<�ゃ�˨�勖��絨障� ��阪����������障�����

write_file( $file, {append => 1}, @data ) ;

�����<�ゃ�˨����ŝ�若����潟�с����ŝ�����write_file��壩Ⅶ�����с����障����障��(croad)��� �����<�ゃ�˨����阪��������������������������������true�����������í�若�����������undef��� 菴������障�����(�����勰��������腱���壔��������croak������������篏������祉�������������с����障�������� �����������������壔����í�弱�������宴����≪�若�������御����������������勉�ŝ����激�с�潟��菴遵�������� ��������勉�������˨�������障��)���

err_mode

�����勉�ŝ����激�с�潟��篏帥�c�⓾�������í�若����榊��������������read_file�����í�勉�������������������� ��九勝�����������������с����障����������勉�ŝ����激�с�潟�勉�������í�˨�����'croak'��с�������������� 'carp'���篏���������í�若����宴����ŝ�����������'quiet'���荐㊤�������������������с����障����� write_file��勖�������勐�若�喝�冴�����紊掩����������������������虁⑥��������冴��(=carp)��� 篁���勉����<�ゃ�˨����阪�������障�����������write_file���2�����勉�勐�若�喝�冴����� 紊掩����������������������壩Ⅶ��˨�障��(=croak)���

unless ( write_file( $file, { err_mode => 'carp', \$data ) ;

    # ��ャ�勉����<�ゃ�˨����阪�������障�����荀���ゃ�������ŝ�������井Ⅶ��˨�障��(croak)
    write_file( $other_file, \$data ) ;
}

overwrite_file

write_file���絽吾����√����勉����<�ゃ�˨����吾����������⓾����障����������� �����勉�泣����˨�若����潟�壠����ŝ��write_file��吾��typeglob�����ゃ�ŝ�≪�鴻�с����� �����勉�泣����˨�若����潟�壔����勉�≪�吾�ャ�若�˨�勐����勉����若�吾�с�潟���� 緇���剛�������с�勉�������˨�泣����若����������⓾����障�����API�����������˨�ゃ����⓾� write_file��勰��������荀с��������������

append_file

�����勉�泣����˨�若����潟�壔����若�帥�������<�ゃ�˨�勖��絨障����吾��莨若�帥�障����� ���������write_file��勉�í�������若�с��������API��������c�⓾����障����������勉����� �����㏍�ャ�<�潟��������荀с�������������������������勐�若�喝�冴����壠��膈���с��:

append_file( $file, @data ) ;
write_file( $file, {append => 1}, @data ) ;

read_dir

�����勉�泣����˨�若����潟�壔����c�㋘�壔����ŝ����������<�ゃ�˨�勐�������������☀˛��帥����帥�� ��若�喝�冴�������̬�������障��������������. ��� ..��壠����ゃ�������障�����

my @files = read_dir( '/path/to/dir' ) ;

�����c�㋘�壔����ŝ����ŝ�若����潟�с����ŝ�������違��茘☗�������冴����障�����

EXPORT

read_file write_file overwrite_file append_file read_dir

篏����(=AUTHOR)

Uri Guttman, <uri@stemsystems.com>

膺肢┳���

綏���� 絖����(GCD00051@nifty.ne.jp)