# 파일과 디렉토리 ## 파일 확인 ```perl $filename = '/home/elex/test.txt'; if (-e $filename){ ... } ``` | 파일 테스트 연산자 | 내용 | | --- | --- | | -e | 파일이 존재하는지 여부 | | -r, -R | 파일을 읽을 수 있는지 여부 | | -w, -W | 파일에 쓸 수 있는지 여부 | | -x, -X | 파일을 실행할 수 있느지 여부 | | -o, -O | 파일에 대한 소유권이 있느지 여부 | | -z | 빈 파일인지 여부 | | -s | 파일의 크기를 반환 | | -f | 일반 파일인지 여부 | | -d | 디렉토리인지 여부 | | -l | 심볼릭 링크인지 여부 | | -p | 파이프인지 여부 | | -S | 소켓인지 여부 | | -T | 아스키 텍스트 파일인지 여부 | | -B | 이진 파일인지 여부 | ```perl my $filename = "file.txt"; if (-e -f -r $filename){ # 여러 개를 동시에 물어볼 수 있습니다. print "OK\n"; } else { print "Not OK.\n"; } ``` ## 이름 변경 ```perl rename ('/home/elex/file.txt', '/home/elex/file2.txt'); ``` ## 파일 삭제 ```perl unlink ('/home/elex/file.txt'); ``` ## 파일 목록 조회 ```perl my @files = glob('/tmp/*.pl'); ``` ## 디렉토리 생성 ```perl mkdir ('/tmp/test') or die "$!"; ``` ### make_path 디렉토리 구조를 한 번에 생성하려면 **File::Path** 모듈을 사용해야 합니다. ```perl #!/usr/bin/perl use strict; use File::Path qw(make_path remove_tree); make_path('hello/world', 'hello2'); make_path('hello3', {mode => 0711, user => 'elex', group => 'users'}); remove_tree('world'); ``` ## 디렉토리 제거 ```perl rmdir ('/tmp/test') or die "$!"; ``` ## 디렉토리 이동 ```perl chdir ('/tmp/test') or die "$!"; ``` ## 링크 ```perl link($old_file, $new_file); symlink($old_file, $new_file); ``` ## 그리고, - chmod - chown