디렉토리 안의 모든 파일들을 일일이 심볼릭 링크를 걸고 싶을 때 Perl을 이용해서 하는 방법이다.(절대 경로를 준다면 cp -sR 옵션으로 줄 수도 있지만..)

다음을 link.pl 등의 이름으로 저장한다.

use File::Find;
$src = shift; # first arg is source
$dst = shift; # second arg is dest
                find(sub {
                                                (my $rel_name = $File::Find::name)
                                                =~ s!.*/\./!!s;
                                                my $src_name = "$src/$rel_name";
                                                my $dst_name = "$dst/$rel_name";
                                                if (-d) {
                                                print "mkdir $dst_name\n";
                                                mkdir $dst_name, 0777
                                                or warn "mkdir $dst_name: $!";
                                                } else {
                                                print "ln -s $src_name $dst_name\n";
                                                symlink $src_name, $dst_name
                                                or warn "symlink $src_name $dst_name: $!";
                                                }
                                                }, "$src/./");

perl link.pl <SRC PATH> <DST PATH> 로 한다.
<DST PATH> 는 mkdir로 만들어 놓고 해야 한다.

시작

#!/usr/bin/perl -w


STDIN 입력은 간단히 <>

$input = <>;


입력에서 마지막 \n 없애기

chomp($input);


문자열을 나눠서 리스트로 만들기

@list = split(/구분자/, 문자열);


파일을 쓰기 모드로 열기

open(HANDLE, '>filename');

그냥은 filename, 추가 쓰기는 >>


파일에 뭘 쓰고 싶을 때

print HANDLE '쓸 내용';


파일 닫기

close(HANDLE);


sprintf

$string = sprintf '%s', 'string';


printf

printf '%d', 2


찾을 문자열의 시작 인덱스 구하기

$i = index(string, substring, startIndex = 0);


시간 구하기

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);


시간 만들기

use POSIX;
$time_t = POSIX::mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1);

 

문자열 연결은 '.' 으로..

'string1'.'string2'


환경변수 접근

$ENV('env1')



더 많은 정보는 http://perldoc.perl.org

perl을 이용해서 파일 내부의 특정 문자열을 한번에 바꿀 수 있다.

perl -pi -e 's/<원본문자열>/<바꿀문자열>/g' <FILE명>

<원본문자열> 부분은 정규식을 사용한다.

작은 따옴표와 큰 따옴표 사용에 관한 차이를 알고 싶다면 http://kldp.org/node/98639#comment-460800 를 참고!
Tag // PERL, 문자열, 치환