Friday, May 18, 2007
Perl 펄] 파일명 변경, 디렉토리명 바꾸기; 리네임 함수; File Dir Rename
펄에서는 rename 함수(서브루틴)로 파일명이나 디렉토리명을 다른 이름으로 바꿀 수 있습니다.
주의 사항: 변경할 파일명으로 된 파일이 이미 존재한다면 덮어쓰게(Overwrite) 됩니다. 아무 경고도 없이 겹쳐쓰게 되고, 대상 파일의 내용은 교체되어 버립니다. 아주 위험하기에, 리네임 전에, 같은 파일명이 이미 존재하는지 체크해야 합니다.
리네임할 때마다 체크하는 것은 힘들어서, safeRename 이라는 이름의 함수를 만들었습니다. 같은 이름이 있다면 변경하지 않고 논리적 거짓(0)을 반환합니다.
파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
주의 사항: 변경할 파일명으로 된 파일이 이미 존재한다면 덮어쓰게(Overwrite) 됩니다. 아무 경고도 없이 겹쳐쓰게 되고, 대상 파일의 내용은 교체되어 버립니다. 아주 위험하기에, 리네임 전에, 같은 파일명이 이미 존재하는지 체크해야 합니다.
리네임할 때마다 체크하는 것은 힘들어서, safeRename 이라는 이름의 함수를 만들었습니다. 같은 이름이 있다면 변경하지 않고 논리적 거짓(0)을 반환합니다.
파일 이름, 폴더 이름, 안전하게 변경 함수 예제
파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#!/usr/bin/perl
use strict; use warnings;
my $filename_old = "test000.txt";
my $filename_new = "test111.txt";
if (!safeRename($filename_old, $filename_new)) {
print "이름 변경 에러\n";
}
else {
print "성공적으로 변경\n";
}
sub safeRename {
my $old = shift;
my $new = shift;
# 원래 파일명과 새 파일명이 같으면 성공 반환
return 1 if ( ($old eq $new) && -e $old);
# 원래 이름의 파일/디렉토리가 없거나
# 새 이름의 파일/디렉토리가 이미 존재하면 거짓(에러;0) 반환
return 0 if (!-e $old || -e $new);
# 모든 것이 정상일 경우에만 이름 변경
rename($old, $new) or return 0;
return 1; # 논리적 참(1; true) 반환
}
use strict; use warnings;
my $filename_old = "test000.txt";
my $filename_new = "test111.txt";
if (!safeRename($filename_old, $filename_new)) {
print "이름 변경 에러\n";
}
else {
print "성공적으로 변경\n";
}
sub safeRename {
my $old = shift;
my $new = shift;
# 원래 파일명과 새 파일명이 같으면 성공 반환
return 1 if ( ($old eq $new) && -e $old);
# 원래 이름의 파일/디렉토리가 없거나
# 새 이름의 파일/디렉토리가 이미 존재하면 거짓(에러;0) 반환
return 0 if (!-e $old || -e $new);
# 모든 것이 정상일 경우에만 이름 변경
rename($old, $new) or return 0;
return 1; # 논리적 참(1; true) 반환
}
tag: perl
Perl | 펄
<< Home