90 likes | 237 Views
파일 및 디렉토리(1). 여러 함수들 chdir(“category”) || die “cannot cd to temp”; chdir(“..”); unlink(“file_temp”); rename($file, “new_dir/large$file”); mkdir(“new_dir”, 0777); # 0666(R/W), 0444 (R) rmdir(“old_dir); chmod(0666, $file);. 파일 및 디렉토리(2). Globbing : 파일/디렉토리 리스트
E N D
파일 및 디렉토리(1) • 여러 함수들 • chdir(“category”) || die “cannot cd to temp”; • chdir(“..”); • unlink(“file_temp”); • rename($file, “new_dir/large$file”); • mkdir(“new_dir”, 0777); # 0666(R/W), 0444 (R) • rmdir(“old_dir); • chmod(0666, $file);
파일 및 디렉토리(2) • Globbing : 파일/디렉토리 리스트 • Command shell은 *.bak을 매칭되는 화일 리스트로 변환한다 • @a = <*.bak>; • @a = glob(“[1-9]*”); foreach $file ( <*.bak>) { # step through a list of .bak files unlink($file) || warn “having trouble deleting $file: $!”; }
파일 및 디렉토리(3) • 디렉토리 핸들러 (파일 핸들러와 비슷) • opendir(NT, “c:/winnt”); • readdir(NT); # returns next file name or name list • closedir(NT); while ( $name = readdir(NT) ) { print “$name\n”; } closedir(NT);
파일 및 디렉토리(4) • 파일/디렉토리 리스트 성질 테스트 • -r : 파일이나 디렉토리를 읽을 수 있는가? • -w: 쓸수 있나? –e : 존재하나? • -x : 수행할 수 있나? • -z, -s, -f, -d, -T, -B, 등등…. print “which file ? “; $filename = <STDIN>; chomp $filename; # newline 특수문자 제거 if ( -r $filename && -w $filename) { # file exits, and can be read and wrote ….}
파일 및 디렉토리(예) #!/usr/local/bin/perl mkdir ("category", 0777); @files = glob("[1-6]*"); foreach $file ( @files ) { rename( $file, "category/s$file"); }
프로세스 관리 • system(), fork(), wait() 등의 함수 • system() 함수 • system(“nmake fred bedrock > output”); • fork()함수 • 지금 수행되는 프로세스의 복사판을 만든다 • Parent process는 >0 값을 갖고 • Child Process는 0의 값을 갖는다 • wait()함수 • Child process가 끝날 때까지 기다린다
프로세스 관리(예) #!/usr/local/bin/perl $start = $ARGV[0]; $file = $ARGV[1]; if ( $pid = fork() ) { sleep 120; $ppid = getppid; kill 9, $ppid; exit -1;} elsif ( defined $pid ) { print "Handling ISBN $start \n"; system "java GetKISBN $start >> $file "; exit 0; }
Win32 Perl과 Apache(1) • www.activestate.com • Win32용 Binary가 제공됨 • www.apache.org • Win 32용 Apache 서버가 제공됨 • www.php.net • Win 32용 Binary가 제공됨 • Guestbook이나 ASP예제를 손 쉽게 이식할 수 있음
Win32 Perl과 Apache(2) #!D:\Perl\bin\perl.exe use OLE; # use Win32::OLE if using the Std Distribution $Conn = CreateObject OLE "ADODB.Connection"; $Conn->Open("DSN=Sample;UID=;PWD="); print "Content-type: text/html\n\n"; print '<HTML>'; print '<HEAD>'; $RS = $Conn->Execute("SELECT * FROM tblSample"); if(!$RS) { $Errors = $Conn->Errors(); print "Errors:\n"; foreach $error (keys %$Errors) { print $error->{Description}, "\n"; } die; } while ( !$RS->EOF ) { my($Last, $First, $City) = ( $RS->Fields('LastName')->value, $RS->Fields('FirstName')->value, $RS->Fields('City')->value ); print $Last, " : ", $First, " : ", $City, "<p>\n"; $RS->MoveNext; } $RS->Close; $Conn->Close; print '</BODY>'; print '</HTML>';