File I/O를 위한 filehandles 생성
$foo = open(MYFILE, "filename.txt");
$foo = open(MYFILE, "<filename.txt");
$foo = open(MYFILE, ">filename.txt");
$foo = open(MYFILE, ">>filename.txt");
여기서 $foo에는 file open이 성공시에는 1, 실패시에는 0이 저장되게 된다.
파일이름 앞의 부호는 각각
< : open file for reading
> : create file for writing
>>: open file for appending
을 의미한다.
Filehandles의 폐기
close(MYFILE);
Filehandles를 이용한 File Read
$str = <MYFILE>;
Input file의 한 line을 읽어 $str에 저장한다
@str = <MYFILE>;
Input file의 각각의 line이 @str array에 각각 저장된다.
여기서 읽은 파일은 각각의 줄 마지막에 \n이 붙게 되는데 이는 chomp를 통해 없애줄 수 있다.
예1)
$str = <MYFILE>;
chomp($str);
예2)
@str = <MYFILE>;
chomp(@str);
예2 에서 볼수 있듯이 array에 저장된 각각의 문장 마지막의 \n을 한꺼번에 없애 줄 수도 있다.
Filehandles를 이용한 File Write
print(MYFILE "Hello World");
print(MYFILE "%d", $i);
위와 같이 print문에 filehandles를 명시하여 file에 write를 할 수 있다.
여기서 유의할 점은 C의 문법과는 다르게 filehandle 다음에 ,(쉼표) 가 안붙는다는 것이다.
Binary File I/O
Binary file을 읽고 쓸때에는 일단 그 파일이 binary mode로 저장되어 있다는 것을 알려주어야만 한다.
$foo = open(MYFILE, "filename.txt");
binmode MYFILE;
이렇게 하면 위에서 열어준 파일은 binary mode로 읽거나 써야 한다는 것을 의미한다.
Binary File Read
Binary file은 일반 파일과 다르게 line의 개념이 없으므로
binary file의 몇 byte를 읽어 올지를 명시하여 읽어와야 한다.
$len = sysread(MYFILE, $buf, 4);
위와 같은 방법으로 읽으면 binary file MYFILE로 부터 4byte를 읽어 $buf에 저장하게 된다.
$len에는 read가 성공하면 1, 실패하면 0이 저장되게 된다.
저장된 4byte는 binary로 저장되어 있는데
이를 perl에서 사용가능한 variable로 바꾸어주기 위해서는
$value = unpack("H*", $buf);
이렇게 사용하여 $value의 값을 얻을 수 있다.
여기서 H*는 buf를 hexadecimal 값으로 변환하고, 0또는 1로 그 값을 padding하라는 의미이다.
Binary File Write
Binary file을 생성하기 위해서는 일단 저장되는 단위에 대해서 생각해봐야 한다.
Binary file은 charater(8bit)으로 저장되어야 한다.
$tmp = chr($value);
print (MYFILE "$tmp");
이런식으로 저장되어야 한다.
만약 value가 16진수라면
$tmp = chr(hex($value));
print (MYFILE "$tmp");
이런식으로 저장되어야 할 것이댜.
$foo = open(MYFILE, "filename.txt");
$foo = open(MYFILE, "<filename.txt");
$foo = open(MYFILE, ">filename.txt");
$foo = open(MYFILE, ">>filename.txt");
여기서 $foo에는 file open이 성공시에는 1, 실패시에는 0이 저장되게 된다.
파일이름 앞의 부호는 각각
< : open file for reading
> : create file for writing
>>: open file for appending
을 의미한다.
Filehandles의 폐기
close(MYFILE);
Filehandles를 이용한 File Read
$str = <MYFILE>;
Input file의 한 line을 읽어 $str에 저장한다
@str = <MYFILE>;
Input file의 각각의 line이 @str array에 각각 저장된다.
여기서 읽은 파일은 각각의 줄 마지막에 \n이 붙게 되는데 이는 chomp를 통해 없애줄 수 있다.
예1)
$str = <MYFILE>;
chomp($str);
예2)
@str = <MYFILE>;
chomp(@str);
예2 에서 볼수 있듯이 array에 저장된 각각의 문장 마지막의 \n을 한꺼번에 없애 줄 수도 있다.
Filehandles를 이용한 File Write
print(MYFILE "Hello World");
print(MYFILE "%d", $i);
위와 같이 print문에 filehandles를 명시하여 file에 write를 할 수 있다.
여기서 유의할 점은 C의 문법과는 다르게 filehandle 다음에 ,(쉼표) 가 안붙는다는 것이다.
Binary File I/O
Binary file을 읽고 쓸때에는 일단 그 파일이 binary mode로 저장되어 있다는 것을 알려주어야만 한다.
$foo = open(MYFILE, "filename.txt");
binmode MYFILE;
이렇게 하면 위에서 열어준 파일은 binary mode로 읽거나 써야 한다는 것을 의미한다.
Binary File Read
Binary file은 일반 파일과 다르게 line의 개념이 없으므로
binary file의 몇 byte를 읽어 올지를 명시하여 읽어와야 한다.
$len = sysread(MYFILE, $buf, 4);
위와 같은 방법으로 읽으면 binary file MYFILE로 부터 4byte를 읽어 $buf에 저장하게 된다.
$len에는 read가 성공하면 1, 실패하면 0이 저장되게 된다.
저장된 4byte는 binary로 저장되어 있는데
이를 perl에서 사용가능한 variable로 바꾸어주기 위해서는
$value = unpack("H*", $buf);
이렇게 사용하여 $value의 값을 얻을 수 있다.
여기서 H*는 buf를 hexadecimal 값으로 변환하고, 0또는 1로 그 값을 padding하라는 의미이다.
Binary File Write
Binary file을 생성하기 위해서는 일단 저장되는 단위에 대해서 생각해봐야 한다.
Binary file은 charater(8bit)으로 저장되어야 한다.
$tmp = chr($value);
print (MYFILE "$tmp");
이런식으로 저장되어야 한다.
만약 value가 16진수라면
$tmp = chr(hex($value));
print (MYFILE "$tmp");
이런식으로 저장되어야 할 것이댜.
'Linux' 카테고리의 다른 글
[Perl] Hex to Bin Converter (0) | 2011.02.14 |
---|---|
[vi] Folding (0) | 2011.02.08 |
[C shell] C shell에서 각 명령어의 return value 사용 ($status) (0) | 2010.11.25 |
[Tcl/Tk] Tcl/Tk 문법 (0) | 2010.10.20 |
[awk] awk 사용법#5 - Functions (0) | 2010.05.17 |