Friday, November 03, 2006
Perl/펄] 파일명에서, 확장자 구하는 함수; Get File Extension Only
주어진 파일 이름에서, 파일명 끝의 확장자만 알아내는 방법입니다.
우선 rindex 함수로, 파일명 끝에서부터 시작하여 마침표의 위치를 파악한 후,
그 위치를 이용하여 substr 함수로, 파일명의 맨 끝에서 마침표 바로 직전까지의 문자열만 얻는 것입니다.
유닉스/리눅스에는
.bash_history
이렇게 파일명 앞에 점을 붙여서 "숨김 파일" 즉 히든파일임을 나타냅니다.
.bash_history 라는 파일명의 경우, 파일명은 bash_history 이고, 확장자는 없습니다. 따라서 확장자가 없다고 나옵니다.
다만 MS윈도우의 탐색기에서는 bash_history 이 부분을 확장자로 인식합니다.
정규식으로 확장자 매치 방법: ▶▶ Perl 펄] 정규식 확장자 추출, 파일명에서; Regex Filename Extension
우선 rindex 함수로, 파일명 끝에서부터 시작하여 마침표의 위치를 파악한 후,
그 위치를 이용하여 substr 함수로, 파일명의 맨 끝에서 마침표 바로 직전까지의 문자열만 얻는 것입니다.
PERL: 파일 이름에서 확장자만 추출 함수 예제
#!/usr/bin/perl
use strict; use warnings;
=pod
편의상, <txt> 이런 식으로 출력했지만
함수 자체는
txt
이런 값을 반환합니다.
=cut
print "<", &getFileExtension("test.txt"), ">\n";
# 출력 결과: <txt>
print "<", &getFileExtension("foo.c"), ">\n";
# 출력 결과: <c>
print "<", &getFileExtension("APPLE.JPEG"), ">\n";
# 출력 결과: <JPEG>
# 공백 들어간 파일명에서
print "<", &getFileExtension("My Test.doc"), ">\n";
# 출력 결과: <doc>
# 점이 2개 있는 파일명에서
print "<", &getFileExtension("google.ani.gif"), ">\n";
# 출력 결과: <gif>
# 공백 있는 확장자명에서
print "<", &getFileExtension("hmmmm.foo bar"), ">\n";
# 출력 결과: <foo bar>
# 확장자가 없는 파일에서
print "<", &getFileExtension("COOL"), ">\n";
# 출력 결과: <> (없음; 빈 문자열)
# 유닉스 히든파일명에서
print "<", &getFileExtension(".bash_history"), ">\n";
# 출력 결과: <> (없음; 빈 문자열)
# 확장자 없는 경우에는 $pos 가 -1
# 유닉스 히든파일은 $pos 가 0
sub getFileExtension {
my $pos = rindex $_[0], ".";
return "" if $pos < 1;
substr $_[0], $pos + 1;
}
use strict; use warnings;
=pod
편의상, <txt> 이런 식으로 출력했지만
함수 자체는
txt
이런 값을 반환합니다.
=cut
print "<", &getFileExtension("test.txt"), ">\n";
# 출력 결과: <txt>
print "<", &getFileExtension("foo.c"), ">\n";
# 출력 결과: <c>
print "<", &getFileExtension("APPLE.JPEG"), ">\n";
# 출력 결과: <JPEG>
# 공백 들어간 파일명에서
print "<", &getFileExtension("My Test.doc"), ">\n";
# 출력 결과: <doc>
# 점이 2개 있는 파일명에서
print "<", &getFileExtension("google.ani.gif"), ">\n";
# 출력 결과: <gif>
# 공백 있는 확장자명에서
print "<", &getFileExtension("hmmmm.foo bar"), ">\n";
# 출력 결과: <foo bar>
# 확장자가 없는 파일에서
print "<", &getFileExtension("COOL"), ">\n";
# 출력 결과: <> (없음; 빈 문자열)
# 유닉스 히든파일명에서
print "<", &getFileExtension(".bash_history"), ">\n";
# 출력 결과: <> (없음; 빈 문자열)
# 확장자 없는 경우에는 $pos 가 -1
# 유닉스 히든파일은 $pos 가 0
sub getFileExtension {
my $pos = rindex $_[0], ".";
return "" if $pos < 1;
substr $_[0], $pos + 1;
}
유닉스/리눅스에는
.bash_history
이렇게 파일명 앞에 점을 붙여서 "숨김 파일" 즉 히든파일임을 나타냅니다.
.bash_history 라는 파일명의 경우, 파일명은 bash_history 이고, 확장자는 없습니다. 따라서 확장자가 없다고 나옵니다.
다만 MS윈도우의 탐색기에서는 bash_history 이 부분을 확장자로 인식합니다.
정규식으로 확장자 매치 방법: ▶▶ Perl 펄] 정규식 확장자 추출, 파일명에서; Regex Filename Extension
tag: perl
Perl | 펄
<< Home