open(F, $filename);과 같이 실행하면 파일을 연다. F 가 파일 핸들러가 된다.
The Diamond Operator
이제 파일 핸들러를 이용해 파일의 내용을 불러와야 되는데 이때 쓰이는 것이 diamond operator이다. File Hander 를 F 라고 할때
예)
@lines = <F>; # 파일 전체 내용을 array 에 불러온다. $line = <F>; # 파일을 한줄씩 불러온다.이처럼 Array 로 받으면 파일 전체를 읽어오고 scalar 값으로 받으면 한줄씩 불러오는 차이가 있다.
File 닫기
읽고 나면 파일을 닫는다.
close(F);
특수한 파일 핸들러 STDIN (standard input)
사용자 입력은 개념적으로 File handler 와 동일하다.
print "What is your name?"; $name = <STDIN>;
Diamond Operator 에 파일 핸들이 안주어지는 경우
생략되면 우선 @ARGV 를 찾고, arguments 가 안주어졌으면 STDIN 에서 받는다.
while (<>) {
print();
}
Binary File 읽는 법 (여기 나온 코드 이용한 것)
use strict;
use warnings;
my $file = "/Users/hur/new/Work cur/scripts/MyPerlScripts/test12bytes.bin";
my $errmsg = "\nUnable to open $file\n";
die $errmsg unless(open FILE, $file);
binmode(FILE);
# Get rid of the line separator. This allows us to read everything in one go.
undef $/;
# Read the entire file. If you don't want to read all of it at once, you need the read() subroutine.
my $contents = <FILE>;
print "Read " . length($contents) . " bytes\n";
close FILE;
Text File 읽기 (전체 파일 내용을 하나의 string 으로 가져옴)
sub LoadTextFile
{
my $filepath = shift;
open(F, $filepath);
my @lines_ = <F>;
close(F);
my $result;
my @lines;
foreach my $line (@lines_){
$result .= $line;
}
return $result;
}
Text File 읽기 (라인별로 array로 가져오기. LF, CR, CRLF 세가지 모두 다룰 수 있게 한 것)
use strict;
use warnings;
main();
sub main
{
if(scalar(@ARGV) == 0){ exit(0); }
my $filepath = $ARGV[0];
open(F, $filepath);
my @lines_ = <F>;
close(F);
my @lines;
foreach my $line (@lines_){
$line = trimNewlines($line);
my @a = split(/\r/, $line);
foreach(@a){
push(@lines, $_);
}
}
printDS(\@lines);
}
sub trimNewlines
{
my $string = shift;
$string =~ s/[\r|\n]+$//;
return $string;
}
sub printDS
{
my $ds = shift;
use Data::Dumper;
print Dumper @$ds;
print "\n";
}
Perl의 File 관련 함수들
File Functions
File Test Operators
레퍼런스 :
File handling (http://www.comp.leeds.ac.uk/Perl/filehandling.html)
The Diamond Operator
Perl 5 by example by David Medinets 09 - Using Files
Perl File Open: Creating, Reading and Writing to Files in Perl
perlpacktut - tutorial on pack and unpack
키워드 : Read / Write
No comments:
Post a Comment