[완료]비기닝 펄(perl) 을 보면서 드는 생각.....
글쓴이: doodoo / 작성시간: 화, 2011/03/22 - 2:15오후
doodoo@doodoo:~/bin$ cat burn.sh IMG_SIZE=`mkisofs -R -J -quiet -print-size ./ 2>&1 \ | sed -e "s/.* = //"` echo $IMG_SIZE [ "$IMG_SIZE" -gt 30 ] && mkisofs -R -J ./ \ |wodim -dao -v speed=24 dev=ATAPI:0,1,0 tsize=${IMG_SIZE}s -data -
doodoo@doodoo:~/bin$ cat hw742.sh #!/bin/sh cd '/home/doodoo/.wine/drive_c/Program Files/Sierra/Homeworld2/Bin/Release' wine "Homeworld2.exe" -w 1680 -h 1050 -mod Complex741.big -hardwarecursor -refresh 120
doodoo@doodoo:~/bin$ cat tstip.sh #!/bin/sh addr=`/sbin/ifconfig |grep Mask |grep -v 127 |/usr/bin/awk '{print $2}'` echo $addr > Ltstip.txt addr1=`w3m -dump <a href="http://u-ip.net" rel="nofollow">http://u-ip.net</a> | grep "Your IP"| sed -e 's/.*\ \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/'` echo addr:$addr1 >> Ltstip.txt
위에 까지가 흔히 쓰는 제 ~/bin 아래의 파일 들 입니다.
개인적인 생각으로는 위에 프로그램들 처럼 한 번 작업 처리할 때 여러개의 프로그램을 호출하는 과정에서
조금 느려 질 수 있다고 생각 하는데...만약 펄을 잘 익힌다면 위에 보인 작은 프로그램 들이나 파일 복사,
이동, scp, ftp 등을 자동화 하는게 쉘 보다 더 쉽다고 생각하세요?
실제로 쉘을 쓰는 이유가 반복적인 일들을 한번에 처리하기 위함인데...요즘 진짜 자주 쓰는...bashrc 안의 이런것들도
function bs { cd ./`ls BT* | sed -n '/^BT-.*:$/h;/^BT-.*:$/!{'/$1/'{g;s/://;p}}'` } function bm { ind=`pwd` for i in *torrent;do wget --spider "http://localhost:4080/submit?q=dllink $ind/$i";sleep 1;done }
펄을 이용하면 더 간단히 할수 있을까요?
PS. 다른 분들은 펄을 어디에 쓰세요?
Forums:
더 간단할 수 도 아닐 수 도 있다고 봅니다.
쉘명령 조합으로 간단하게 되는 작업이면 그렇게 하는게 낫다고 봅니다.
하지만 그것만 가지고는 부족하거나 되긴 되지만 그것이 더 큰 삽질이다라고 생각되는
약간의 고수준의 작업인 경우는 Perl이 도움이 되겠죠. Perl은 윈도우/유닉스 가리지
않으니 크로스플랫폼 스크립팅도 되고...
Perl은 one-liner 부터 간단한 작업에도 사용되지만 잘 배워놓으면
더 복잡한 작업이나 시스템을 구축하는데도 사용할 수 있다는 점에서 배울 가치가 있다고 봅니다.
---------
Stop reinventing wheels, start building space rockets.
- From http://www.cpan.org/
쉘이 편한 경우가 있고 펄이 편한 경우가
쉘이 편한 경우가 있고 펄이 편한 경우가 있습니다.
디렉터리간 이동을 하며 간단한 명령을 실행하는 경우는 쉘이 더 편하기도 하구요.
제 경우는 쉘 스크립트로 20줄 정도 넘어갈 것 같으면 바로 펄로 작성합니다.
또한 명령줄의 인자를 받아서 적절한 처리를 하고 싶을때 쉘에 비하면
펄 쪽이 인자 점검 및 후처리 작업을 수행하기에 더 수월합니다.
아무래도 쉘은 다른 외부 명령을 주로 실행하다보니 문법 점검이 어려운데
그에 비하면 펄쪽은 컴파일 시간에 왠만한 것은 오류를 잡아주다 보니
수월한 부분도 있습니다.
예제로 보여주신 wine 실행이나 iso 생성등 외부 프로그램 호출이
주 목적이면서 && 간단한 wrapper 스크립트라면 perl 보다는
쉘쪽이 더 나을 것 같기도 합니다.
제 경우 말씀하신 파일 복사, 이동, scp, ftp 등을 자동화 하는데는
펄쪽이 더 편하다고 생각합니다.
쉘로 작성할 때보다 오류처리라던가, 가독성을 신경쓰다보면
코드양은 조금 더 늘어나지만 쉘 코드보다 유지보수하기가 더 좋아지더군요.
물론 익숙함의 차이일수도 있지만요.
펄로 쉘 스크립트를 대신할 때의 큰 장점은 CPAN 모듈을 사용할 수 있으며
정규표현식을 쉽게 사용할 수 있는 부분이 것 같습니다.
저는 다음과 같을 때 주로 쉘 스크립트 보다는 펄 스크립트를 사용하고 있습니다.
- 표준입력 및 표준 출력 처리시
- 명령줄 인자 처리시
- 이식성 있는 스크립트가 필요시
- 정규표현식이 필요시(sed awk 대신)
- CPAN 모듈이 필요할때
- 조금 더 엄격하게 작성해야 할 때
- 두 명 이상 사용 및 개발 할 때
- 유지보수를 계속 해야 할 때(물론 쉘스크립트도 유지보수 하겠지만요..;)
회사에서는 Catalyst를 이용해서 웹어플리케이션을 만들고 있으며,
현재 사내의 모든 사람이 펄을 익숙하게 사용하는 덕에
회사 내부 시스템의 전반적인 관리에 펄을 이용하고 있습니다. ;-)
----
use perl;
Keedi Kim
너무 단순한 질문인지 모르겠지만...bash 에서는
너무 단순한 질문인지 모르겠지만...bash 에서는 파일 복사 이동 같은경우에
cp a b 등으로 쓰는데...펄에서는 어떻게 하는지 모르겠습니다 system() 함수 호출해야 하는건가요?
그 경우는 결국 시스템에 들어있는 cp 명령을 부르니 쉘의 경우랑 별 차이가 없어 보이는데요
또한 ftp 경우에는 대충 이렇게
등으로 쓰는데...펄에서는 다들 어떻게 하시는지?
http://search.cpan.org/search?query=fTP&mode=all
http://search.cpan.org/search?query=fTP&mode=all
에 보시면 ftp를 다룰 수 있는 모듈이 아주 많습니다.
모듈을 통해서 하면 위 처럼 shell로 했을때는 처리 못하는 갖가지 예외상황에
대해서 더 정교하게 처리가 가능하겠죠.
감사합니다....어쨓든 비기닝펄을 다 보고(일단
감사합니다....어쨓든 비기닝펄을 다 보고(일단 보던거니..ㅎㅎ) 생각좀 해야 할것 같네요..
근데..기본적으로 펄보다 쉘이 인식하기도, 남들에게
근데..기본적으로 펄보다 쉘이 인식하기도, 수정하기도, 남들에게 인수인계하기도 편합니다.
물론 Performance는 좀 안나오죠. 근데 뭐..그렇다구요. gnu툴이 왠만한 툴보다 빠른 경우도 있기 때문에 성능 안나오는것조차 절대적인것은 아닙니다. 단 파이프라인이 느릴 수 있습니다만, 그래도 사람의 휴식시간은 시스템의 휴식시간보다 중요하잖아요? (...)
댓글 달기