>> Read No. 172 article  
초가 34 ☞ 초보용 Perl 스크립트 End!

등록 1999-07-16 13:24:00     조회 5
이름 쉬이이    

		오늘은 마지막이네요.. 후후perl의 기초를 다지는데 많은 도움이 되었으면 합니다. 5.2. for 
& foreach    for 는 C 언어와 유사 하다. 그리고 foreach 구문은 어레이가 가장 잘 어울린다. ☞
간단한 예[root@chongnux perl]# cat foreach#!/usr/bin/perl$i = 0 ;$sum = 0;foreach $i (1..10)  {    $sum += $i;  
  print "$i";    if($i == 10) {last;}  }[root@chongnux perl]# chmod +x foreach[root@chongnux perl]# ./foreach1234567
89106. Perl에서 리눅스 명령어 실행 몇가지의 방법으로 Perl에서 리눅스의 명령어를 실행 할 
수 있다.   ① system(LIST) : 리스트에서 쉘 명령을 실행한다.   ② fork : 새로운 자식 프로세
스를 만든다.  ③ exec(LIST) : 시스템 커멘드를 사용한다.   ④ fork 와 exec 쉘의 이용.  ☞ sys
tem명령의 사용 예[root@chongnux perl]# vi recmd#!/usr/bin/perl $prompt = "Command (or "exit"): ";print $prompt; 
while(<STDIN>){ chop; if($_ eq "exit") { exit(0);} #호출된 시스템으로 명령을 실행한다.  system $_; #
표준 입력라인 $_로 할당이 된다. unless($? == 0) { print "Error executing: $_";} #명령어 없는 경우 
에러 처리 print $prompt;}[root@chongnux perl]# chmod +x recmd[root@chongnux perl]# ./recmdCommand (or "exit"): echo
 $PATH/usr/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/alex99/binCommand (or "exit"): exit[root@chongnux perl]
# ♨ 내장 변수   변수 이름    |   의미   ___________________________________________________________  
 $$              프로세스 종료 PID   $?              최근 명령의 종료 값   $#        
      프로그램 전달 인수의 개수   $0              명령 수행시 명령의 이름을 기억하
는 변수   $1,...            명령에 전달된 전달 인수 하나 하나     $*              명
령에 전달된 전달 인수    $@             전달 인수를 문자열의 목록(list)으로 표시   $!  
            마지막으로 실행된 백그라운드 프로세스 PID __________________________________________
___________________☞fork 와 exec 사용 예[root@chongnux perl]# cat recmd2#!/usr/bin/perl $prompt = "Command ("exit
" to quit): ";print $prompt; while (<STDIN>){  chop;  if($_ eq "exit") { exit(0);}   $status = fork;  # 새로운 
자식 프로세스를 생성한다.  if($status)  {   wait;   # 자식 프로세스가 종료되길 기다린다. 
  print $prompt;   next;  # 루프를 다시 시작한다.  }  else  {   exec $_; #명령을 실행 시켜 준다.
  }}[root@chongnux perl]# chmod +x recmd2[root@chongnux perl]# ./recmdCommand (or "exit"): dfFilesystem           
1k-blocks      Used Available Use% Mounted on/dev/hda1               132703     91368     34483  73% //de
v/hda6               749316     16905    693706   2% /home/dev/hda5              1981000    891248
    987341  47% /usrCommand (or "exit"): exit[root@chongnux perl]#   7. 파일 처리  정의되어 있는 파일 
처리는 표준 입력 STDIN , 표준 출력 STDOUT , 에러 처리 STDERR 이 있다.  *파일을 읽으려면 <> 괄
호를 사용한다. ☞ 간단한 파일 처리 스크립트.  [root@chongnux perl]# cat output#  공표 요청을 
하거나 또는 브라우즈 목록 동기화해 줄 대상:# 브라우져 제어 옵션:# 윈도우즈 인터넷 네
임 서비스 WINS 지원 섹션:[root@chongnux perl]# cat o_print#!/usr/bin/perl open ( PWDFILE,"/home/alex99/perl/smb
.conf");open ( RESULT,">output"); while(<PWDFILE>){ if($_ =~ /:/) { print RESULT $_ ;} #읽어 들인 화일 내용을
 output에 입력한다.}close PWDFILE;close RESULT;[root@chongnux perl]# chmod +x o_print[root@chongnux perl]# ./o_prin
t[root@chongnux perl]# cat output#  공표 요청을 하거나 또는 브라우즈 목록 동기화해 줄 대상:# 브
라우져 제어 옵션:# 윈도우즈 인터넷 네임 서비스 WINS 지원 섹션:☞다음은 원하는 사람한테
 메일 보는 스크립트[root@chongnux perl]# cat user_mailto#!/usr/bin/perl #사용자 리스트에 메일 보내
기. foreach("root" ,"shee"){  open(MAILPIPE,"|mail -s Greetings $_");  print MAILPIPE "Hi, my name is shee !";  clo
se MAILPIPE;} #|는 여기서 파이프 문자로 쓰였으며,, |시작하는 파일명으로 open 을 호출하면#
파일명의 나머지는 명령으로 처리된다. perl 해석기는 그 명령을 실행하고,#print 호출을 사
용하여 이명령을 전달할 수 있다. [root@chongnux perl]# chmod +x user_mailto[root@chongnux perl]# ./user_mai
lto  +++ 메일을 확인해보면 메일이 간 것을 확인 할 수 있다. ☞ 새로운 예.[root@chongnux perl]# 
cat pspipe#!/usr/bin/perl open(PSPIPE,"ps -ax |");while(<PSPIPE>){  print $_;} #파일명이 파이프 문자로 끝
나면 (|), 그 파일명은 명령으로서 실행된다.[root@chongnux perl]# ./pspipe  PID TTY      STAT   TIME 
COMMAND    1 ?        S      0:04 init    2 ?        SW     0:00 [kflushd]    3 ?        SW    
 0:00 [kpiod]    4 ?        SW     0:01 [kswapd]             중간 생략.... 6681 ?        S    
  0:00 hanterm 6683 pts/3    S      0:00 -bash 6709 pts/2    S      0:00 perl ./pspipe 6710 pts/2    R 
     0:00 ps -ax[root@chongnux perl]#8. 서브루틴  서브루틴은 @_ 어레이에서 자신의 인자르 받는
다. 서브루틴의 변수는 글로벌이며, local 함수를 이용 local 변수를  사용한다. 서브루틴 함
수의 호출은 &를 사용해서 호출을 한다. [root@chongnux perl]# cat sub1#!/usr/bin/perl sub hello{  # @ ar
ray 에서 인자의 로컬 카피를 만든다.    local($first,$last) = @_;    print "Hello, $first $last";} $a =
 shee;$b = alex99; &hello($a,$b); #서브루틴의 호출은 &를 사용한다. 인자는 $a ,$b 이다. [root@chongnu
x perl]# ./sub1Hello, shee alex99☞ C 언어의 헤더화일처럼 서브함수를 만들어 놓은 다음 호출하여
 사용할 수 있다. [root@chongnux perl]# vi choice_counter#!/usr/bin/perl require 'counter.pl'; #서부루틴 정
의 파일 포함.$ini = 1; restart:print "Enter one number("q" is to quit): "; $num = <STDIN>;chop;if($num == "q"){ex
it(0);} &counter($ini,$num); #서브루틴을 호출 할 때 &기호를 사용한다. goto restart; [root@chongnux pe
rl]# vi counter.plsub counter{  local($first,$last) =@_;   #로컬이자를 선언... 인자가 2개인 경우는 @_
를 사용한다.    for($int = $first ; $int <= $last ; $int++)   { print "count_$int";}}1;     #반드시 이것
을 해주어야 하다. 복귀값이 있어야 실행이 된다. [root@chongnux perl]# ./choice_counterEnter one number
("q" is to quit): 3count_1count_2count_3Enter one number("q" is to quit): q[root@chongnux perl]#     이것이 마지
막입니다. 후후... 정말 활용할 것이 많은 것 같습니다. 차근 차근 실력을 쌓아 나간다면 언
젠가는 리눅스 전문가가 될지도... 시시 하다구요. 잘만 이용 한다면 많은 득이 되실 겁니
다.
이름
암호
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.19 초 ] 작업시간: [ 0.05 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791026144
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.