perl script

69
1 Perl Script 한오석, 커뮤니티SU, 커뮤니티개발1팀 2008-09-25

Upload: -

Post on 14-Apr-2017

217 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Perl Script

1

Perl Script

한오석, 커뮤니티SU, 커뮤니티개발1팀 2008-09-25

Page 2: Perl Script

2

2부 : Perl script 의 심화 1부 : Perl script 의 기초

목 차

File, Directory Access

Process

Package, Modules

Database, Socket

Introduction

Let’s Start Perl!

Data type

Control Statement

Subroutines

Page 3: Perl Script

3

Introduction - Meaning

Extracting information from text files, and printing reports based on that information

Page 4: Perl Script

4

Introduction - Meaning

Page 5: Perl Script

5

Introduction - History

History

Bell Labs – pipe concept => $_

C - && || ++ --

Perl1 - Larry Wall

Perl2 – Regular Expression

Perl4 – “Camel” book

CPAN

Perl5.10 (café 5.8.5)

http://www.perl.org http://www.perl.com

Page 6: Perl Script

6

Introduction - Moto

Page 7: Perl Script

7

Let’s Start Perl !

(@ARGV);

Good afternoon Oseok Good afternoon KyungBo Good afternoon JongHyeop

Page 8: Perl Script

8

Data Type

데이터타입

스칼라 배열 해시 레퍼런스 IO 함수

Page 9: Perl Script

9

Data Type – Scalar

1. 숫자 (Numeric Literals)

$num = 10; # integer

$num = 3.14; # floating point

* Perl 내부에서는 모든 숫자를 배정밀도 부동소수점 (double-precision)포맷을 사용한다.

$i = 10/3;

print $i;

$i = 3.0000000;

print $i;

$i = int(10.3);

print $i;

3 3.33333333333333 3

Page 10: Perl Script

10

Data Type – Scalar

2. 문자 (String Literals)

$my_str = string; # 문자+숫자로맊 이루어진 경우 사용 가능

$my_str = „string‟; # Single-quoted String

$my_str = q/string/; (변수, 특수문자 파싱할 수 없음)

$my_str = “string”; # Double-quoted String

$my_str = qq/string/; ( 변수, 특수문자 파싱됨 )

$hi = Hi;

$my_str = ‟\‟$hi! Comm\‟‟;

print $my_str;

$hi = Hi;

$mt_str = qq/”$hi! Comm”/;

print $mt_str;

„$hi! Comm‟ “Hi! Comm”

Page 11: Perl Script

11

Data Type – Scalar

2. 문자 (String Literals)

length($my_str); # 문자의 길이를 리턴

substr($my_str, 3, 4); # $str 3번째 문자부터 4개의 문자열을 맊듬

$my_str = “Hello”;

$my_cnt = length($my_str);

print $my_cnt;

$my_str = “Hello”;

$my_substr = substr($my_str, 2, 2);

print $my_substr;

5 ll

Page 12: Perl Script

12

Data Type – Scalar

3. 정의 되지 않은 값

$nothing = undef; # null 처럼 아무 값도 정의 되지 않음

defined($var); # 변수가 정의 되어 있는지 리턴

$my_var = “value”;

$my_undef = undef;

$my_noinit;

print „$my_var = „, defined($ my_var ), “\n”;

print „$my_undef= „, defined($my_undef ), “\n”;

print „$my_noinit = „, defined($ my_noinit), “\n”;

$my_var = 1 $my_undef = $my_noinit =

Page 13: Perl Script

13

Data Type – Scalar

4. 메모리 해제

undef $var;

print „$var = „, $var, “\n”;

$var= “value”;

print „$var = „, $var, “\n”;

undef $var;

print „$var = „, $var, “\n”;

Use of uninitialized value in print at ./deftest.pl line 3. $var = $var = value Use of uninitialized value in print at ./deftest.pl line 7. $var =

Page 14: Perl Script

14

Data Type – Scalar

5. Boolean – false 로 취급되는 것들

- 0

- undef

- Empty String

- Empty Array

- Empty Hash

Page 15: Perl Script

15

Data Type – Array

1. 배열의 생성 (Creation)

@my_array = (1, 2, com); # comma로 구분

@my_array = (1..2, a..c); # 1,2,a,b,c

@my_array = qw/1 2 com/; # 빈칸으로 구분

2. 배열의 요소 (Elements)

$my_array[0];

@my_array[0..2];

* $my_array[0] 와 @my_array[0]의 차이는 없지맊, 개별요소의 경우에는

스칼라 변수의 형태로 사용을 권장.

Page 16: Perl Script

16

Data Type – Array

3. 배열의 크기 (Size)

$my_array_cnt = @my_array; # 배열의 총 개수

scalar @my_array; # 배열의 총 개수

@#my_array; # 배열의 마지막 인덱스

4. 요소의 추가 및 추출

push @my_array $var;

pop @my_array; # 배열의 마지막 요소 리턴

shift @my_array; # 배열의 첫 요소 리턴

Page 17: Perl Script

17

Data Type – Hash

1. 해시의 생성 (Creation)

%my_hash = („key1‟ => „value1‟,

„key2‟ => „value2‟,

„key3‟ => „value3‟);

%my_hash = qw/key1 value1 key2 value2 key3 value3/;

$my_hash{„key1‟} = „value1‟;

$my_hash{„key2‟} = „value2‟;

$my_hash{„key3‟} = „value3‟;

* 짝이 맞지 않게 생성된 경우에는 Odd number of elements 에러 발생

Page 18: Perl Script

18

Data Type – Hash

2. 해시의 요소(Elements)

$my_hash{„key1‟}; # 단일 요소 value1

%my_hash; # 젂체 요소 key2value2key1value1…

keys %my_hash # 해시 키 요소 key2key3key1

values %my_hash # 해시 값 요소 value2value3value1

3. 해시의 크기 (Size)

$my_hash_cnt = keys %my_hash; # 해시 키의 총 개수

scalar values %my_hash; # 해시 값의 총 개수

* scalar %my_hash 는 해시 젂체 크기를 반환하지 않고 bucket이라 부르는 해시 저장공간의 정보 used/total을 반환한다.

Page 19: Perl Script

19

Data Type – References

1. Reference

: C언어의 포인터와 비슷하게 작동함

\$r = \$x; 와 같은 형식은 reference를 수정할 수 없다는 오류

(Can't modify single ref constructor) 발생

\$my_scalar

\@my_array

\%my_hash

\&my_subroutine

$x : 10, $$r : 10

$x = 5;

$r = \$x;

$$r = 10;

printf ('$x : %d, $$r : %d', $x, $$r);

Page 20: Perl Script

20

Symbol Table

Data Type – References

2. Typeglob

$t_glob = “scalar”; @t_glob = (arr1..arr3); %t_glob = qw/k1 v1 k2 v2 k3 v3/; sub t_glob{ print @_, “\n”; }

scalar arr1arr2arr3 k2v2k1v1k3v3

*c_glob = *t_glob; &c_glob($c_glob); &c_glob(@c_glob); &c_glob(%c_glob);

Typeglob Data

$t_glob @t_glob %t_glob &t_glob

$c_glob @c_glob %c_glob &c_glob

Typeglob (t_glob)

Typeglob (c_glob)

*c_glob = *t_glob;

Page 21: Perl Script

21

Data Type – References

2. Typeglob

c_scalar c_arr1c_arr2c_arr3 c_k2c_v2c_k1c_v1c_k3c_v3

$t_glob = “scalar”; @t_glob = (arr1..arr3); %t_glob = qw/k1 v1 k2 v2 k3 v3/; sub t_glob{ print @_, “\n”; } *c_glob = *t_glob; &c_glob($c_glob); &c_glob(@c_glob); &c_glob(%c_glob); $c_glob = “c_scalar”; @c_glob = (c_arr1..c_arr3); %c_glob = qw/c_k1 c_v1 c_k2 c_v2 c_k3 c_v3); &t_glob($t_glob); &t_glob(@t_glob); &t_glob(%t_glob);

scalar arr1arr2arr3 k2v2k1v1k3v3

Page 22: Perl Script

22

Data Type – Special Variable

특수 변수의 종류

Default Input Value $_

마지막으로 실행한 system call에서 오류가 발생한경우, 그 내용을 담는 변수

$!

서브루틴에서 매개변수를 받는 배열 @_

해당 프로그램이 가지는 Process ID 변수 $$

Page 23: Perl Script

23

Data Type – Special Variable

특수 변수의 종류

프로그램 명 $0

파라미터 배열 @ARGV

시스템 환경정보를 담은 해시 (env) %ENV

OS 이름 변수 (linux) $^O

Page 24: Perl Script

24

Standard IO

1. STDIN – 키보드 입력

chomp; - \n 맊을 제거

chop; - 마지막 문자를 제거

$input = <>;

$input = <STDIN>;

@input = <>;

Page 25: Perl Script

25

Standard IO

2. STDOUT – 화면 출력

– 파일 핸들러로 사용 가능

3. STDERR – 화면 출력

– 파일 핸들러로 사용 가능

print STDOUT “out string”;

print “out string”;

Page 26: Perl Script

26

Functions

데이터 취급에 관렦된 함수들

use constant PI =>3.14; 상수 선언

reverse (@my_arr) 배열을 역순으로 리턴

sort (@my_arr) 배열을 정렧

배열을 역순으로 정렧하려면 ?

@my_arr = (4, 5, 3, 1, 6, 8);

@rs_arr = reverse sort @my_arr;

Page 27: Perl Script

27

Functions

데이터 취급에 관렦된 함수들

grep (/REGEX/, @str) grep

split (/REGEX/, $str) 문자열 나누기

join ($str, @my_arr) 배열 사이에 문자를 추가

다음 문자열을 모두 빈칸으로 나누려면?

$names = “han,david kim_Lee choi Tom”;

@names = join “ “, split /[, _]\s*/, $names;

Page 28: Perl Script

28

Control Structure

제어문 홈

제어문

연산자 if – else

unless – else while for

foreach

Page 29: Perl Script

29

Control Structure – Conditional Statement

1. 연산자 (Operaters)

Greater Greater or Equal

Less Than Less or Equal

Equal Not Equal Comparison

> >= < <= == != <=>

gt ge lt le eq ne cmp

숫자에서맊 올바르게 동작 숫자, 문자에서

모두 올바르게 동작

print „a cmp b : ‟, (a cmp b) , "\n";

print „a cmp a : ‟, (a cmp a) , "\n";

print „b cmp a : ‟, (b cmp a) , "\n";

a cmp b : -1 a cmp a : 0 b cmp a : 1

Page 30: Perl Script

30

Control Structure – Conditional Statement

2. if ~ elsif ~ else

if (EXPRESSION) { IF_TRUE_ STATEMENT; } elsif (EXPRESSION) { ELSE_IF_ STATEMENT; } else { ELSE_STATEMENT; } STATEMENT if (EXPRESSION); EXPRESSION && STATEMENT; EXPRESSION and STATEMENT;

if (EXPRESSION) STATEMENT; * If 문에서는 반드시 중괄호로 블록처리 해줘야 함.

Page 31: Perl Script

31

Control Structure – Conditional Statement

3. unless ~ else

unless (EXPRESSION) { IF_FALSE_ STATEMENT; } else { ELSE_STATEMENT; } STATEMENT unless (EXPRESSION); EXPRESSION || STATEMENT; EXPRESSION or STATEMENT;

* unless 문에는 unless 와 else 밖에 없으며, elsunless 같은 것은 없음.

Page 32: Perl Script

32

Control Structure – Loop

4. while

while (EXPRESSION){ STATEMANT; } STATEMENT while (EXPRESSION); do { STATEMENT } while (EXPRESSION);

* do STATEMENT while (EXPRESSION) 은 do 을 제외한 것과 똑같이 동작

Page 33: Perl Script

33

Control Structure – Loop

4. until

until (EXPRESSION){ STATEMENT; } STATEMENT until (EXPRESSION); do{ STATEMENT; } until (EXPRESSION);

* do STATEMENT until (EXPRESSION) 은 do 을 제외한 것과 똑같이 동작

Page 34: Perl Script

34

Control Structure – Loop

5. For

6. Foreach

for ( ; ; ){ STATEMENT; }

foreach VARIABLE (LIST) { STATEMENT; }

print $_;

Page 35: Perl Script

35

Subroutines

서 브 루 틴

Page 36: Perl Script

36

Subroutines

1. Subroutine

sub NAME{}

sub NAME(PROTOTYPES){}

생성

NAME;

NAME(@paramter);

&NAME(@parameter);

NAME @parameter;

호출

* 모든 매개변수는 array 의 형태( @_ )로 젂달됨

(@ARGV);

Page 37: Perl Script

37

Subroutines

1. Subroutine

sub NAME(PROTOTYPES){}

sub foo($);

sub foo(@);

sub foo(\@);

프로토타입

return $var;

return @arr;

return ($var, $var, $var);

리턴

Page 38: Perl Script

38

Subroutines – Scope

2. Scope

Global Variable

젂역적으로 선언되어 프로그램

내 어느곳이든 접근 가능

our $variable

Local Variable

지역적으로 선언되어

선언된 블록안에서맊 접근가능

my $variable

Dynamic Scoped Variable

선언된 블록안에서 젂역적으로 선언

되어 하위 블록 및 함수에서 접근가능

local $variable

our $our_var; sub foo2{ $our_var; $local_var; } sub foo1{ local $local_var; my $my_var; sub foo2 }

Page 39: Perl Script

39

File & Directory Handling

파일 디렉토리 핸들링

파일 핸들링

디렉토리 핸들링

Page 40: Perl Script

40

File – Open & Close

1. Open & Close – 파일 핸들을 연계시키기 위해 사용

* open (MY_FILE, “file.txt”) 는 < 와 같게 작동

Read Write Append Create

open (MY_FILE, “<“, “file.txt”); O X X X

open (MY_FILE, “>”, “file.txt”); X O X O

open (MY_FILE, “>>”, “file.txt”); X O O O

open (MY_FILE, “+<”, “file.txt”); O O X X

open (MY_FILE, “+>”, “file.txt”); O O X O

open (MY_FILE, “+>>”, “file.txt”); O O O O

open (MY_DATA, “zcat file.gz |”); Shell의 명령결과를 젂달

close (MY_FILE); 열었던 파일을 닫음

open (MY_FILE, “<file.txt”) || die “Couldn‟t open file : $!”;

Page 41: Perl Script

41

File – Read & Write

2. File Read

3. File Write

open(STDOUT, “>>stdlog.txt”); # 기본 출력을 stdlog.txt에 출력

open(STDERR, “>>stderr.txt”); # 기본 에러를 stderr.txt에 출력

open(FILEHANDLE, “>>file.txt”); # file.txt 을 FILEHANDLE 로 오픈

print “string”; # 기본 출력 => stdlog.txt

print FILEHANDLE “string”; # 파일 출력 => file.txt

while(<MY_FILE>){

print;

}

foreach (<MY_FILE>){ print;

}

print readline MY_FILE;

Page 42: Perl Script

42

File – File Information

4. File Information

Option Description

-d FILEHANDLE (directory) FILEHANDLE이 디렉토리인지 리턴

-e FILEHANDLE (exist) FILEHANDLE이 존재하는지 리턴

-s FILEHANDLE (size) FILEHANDLE의 사이즈 리턴

-r FILEHANDLE (readable) FILEHANDLE 이 읽기 가능한지 리턴

-w FILEHANDLE (writable) FILEHANDLE 이 쓰기 가능한지 리턴

-z FILEHANDLE (zero) FILEHANDLE 의 크기가 0인지 리턴

Page 43: Perl Script

43

File – Open

5. File Management

Form IN LINUX

rename OLDNAME, NEWNAME; mv OLDNAME NEWNAME

link NAME, LINKNAME; link NAME LINKNAME

symlink NAME, LINKNAME; link –s NAME LINKNAME

unlink FILE; rm FILE

Use File::Copy; copy FILE, COPYFILE;

cp FILE COPYFILE

use Cwd „abs_path‟; print abs_path(”filename”);

filename의 젃대경로 출력

Page 44: Perl Script

44

Directory – Handle

1. Drectory Open

2. Drectory Read

opendir (MY_DIR, “/etc”) || die “Couldn‟t open directory : $!”;

while ($file = readdir MY_DIR){ print $file; }

foreach (readdir MY_DIR){ print; }

@files = readdir MY_DIR

@files = glob(“*”); @files = </data/*>;

Page 45: Perl Script

45

Directory –

2. Drectory Managerment

Form IN LINUX

chdir DIRECTORY; cd DIRECTORY;

rmdir DIRECTORY; rmdir DIRECTORY;

mkdir DIRECTORY MODE; mkdir –m MODE DIRECTORY;

use Cwd; print getcwd();

현재 디렉토리의 젃대경로 출력

Page 46: Perl Script

46

Directory – Exercise

예제 - ./test 디렉토리 안의 모든 파일의 내용을 출력

Page 47: Perl Script

47

Directory – Exercise

예제 - ./test 디렉토리 안의 모든 파일의 내용을 출력

Page 48: Perl Script

48

Process

프로세스

Child Processor 생성 & 호출

Page 49: Perl Script

49

Process

프로세스 콜

펄 안에서 다른 프로세스를 실행시켜 자식 프로세스를 호출하고 출력 결과를 받음

Page 50: Perl Script

50

Process - system

1. 프로세스 관리 – system()

$re = system(“perl hello.pl”); print “return : $re”;

print “What is your name? “; $input = <>; print “Hello! $input”;

hello.pl

PROCESS

What is your name? O Seok Hello! O Seok return : 0

* Child Processor 를 생성하여 모든 것을 넘긴 후 Child Processor 가 끝나면 Parent Processor 로 돌아옴

* 해당 명령 결과 코드값 반환

(-1: 명령어 실행 못함, 0 : 프로세스 실행 완료, 이외의 숫자 : 프로세스 실행 중 오류)

오류 체크 : system(“perl hello.pl”) && die $!;

Page 51: Perl Script

51

Process - exec

2. 프로세스 관리 – exec()

$re = exec(“perl hello.pl”); print “return : $re”;

print “What is your name? “; $input = <>; print “Hello! $input”;

hello.pl

PROCESS

What is your name? O Seok Hello! O Seok

* Child Processor 를 생성하여 모든 것을 넘긴 후 프로그램 종료하여 exec() 이후로는 Parent Processor로 컨트롤이 돌아오지 않음

* 명령이 실행되지 않은 경우에맊 에러 리턴코드 0 반환

오류 체크 : exec(“perl hello.pl”) || die $!;

Page 52: Perl Script

52

Process – Back quota

3. 프로세스 관리 – ``

$re = `perl hello.pl`; print “return : $re”;

print “What is your name? “; $input = <>; print “Hello! $input”;

hello.pl

PROCESS

O Seok return : what is your name? Hello~ O Seok

What is your name? Hello~ O Seok

* Child Processor 를 생성하여 모든 것을 넘긴 후 Child Processor 가 끝나면 Parent Processor 로 돌아옴

* 해당 명령의 출력 값을 반환

오류 체크 : `perl hello.pl` || die $!;

Page 53: Perl Script

53

Package & Modules

* 패키지 * 모듈 * CPAN * perldoc

패키지 & 모듈

Page 54: Perl Script

54

Package

Package

- 여러 모듈을 사용하는 경우, 또는 여러 함수가 있는 경우 이를 분리하는 역할

sub foo{ return "main\n"; } print "curr foo : ", foo; print "main::foo : ", &main::foo; print "This::foo : ", &This::foo; print "That::foo : ", &That::foo; print "--------------------\n"; package This; sub foo{ return "this\n"; } print "curr foo : ", foo; print "main::foo : ", &main::foo; print "This::foo : ", &This::foo; print "That::foo : ", &That::foo; print "--------------------\n"; package That; sub foo{ return "that\n"; } print "curr foo : ", &foo; print "main::foo : ", &main::foo; print "This::foo : ", &This::foo; print "That::foo : ", &That::foo;

curr foo : main main::foo : main This::foo : this That::foo : that -------------------- curr foo : this main::foo : main This::foo : this That::foo : that -------------------- curr foo : that main::foo : main This::foo : this That::foo : that

Page 55: Perl Script

55

Modules – create

1. 모듈

- 재사용을 위하여 맊든 소프트웨어 유닛

$ perl –V ….. @INC: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .

Page 56: Perl Script

56

Modules - create

2. 모듈의 생성

out.pm sub println{ foreach(@_){ print “$_\n”; } } 1;

모듈은 반드시 true를 리턴해야 함

Page 57: Perl Script

57

Modules – use

3. 모듈의 사용

use DIR::out; 1. @INC 에서 out.pm 을 찾음 2. use module; 이 파싱되는 시점에 모든 모듈을 메모리에 저장. 3. package 명이 반드시 필요하진 않으며, default package인 경우 NAME 만으로 사용가능.

Page 58: Perl Script

58

Modules – use

3. 모듈의 사용

require DIR::out; require „DIR/out.pm‟; 1. @INC 에서 out.pm 을 찾음 2. 실제 out의 정보가 호출되는 시점에서 해당 부분을 동적 로딩 3. 모듈은 반드시 package를 사용해야 하며, package::NAME 의 형식으로 사용할 수 있음

Page 59: Perl Script

59

Modules – Basic module

4. CPAN (Comprehensive Perl Archive Network)

:$ cpan; cpan> install Module use Lingua::JA::Number; print to_string(1); => ichi print to_string(2); => ni print to_string(3); => san

cpan> install Lingua::JA::Number

http://www.cpan.org

Page 60: Perl Script

60

Modules – Basic module

5. 맋이 사용하는 모듈 소개

use strict; - 불안젂한 구조를 제한함

use strict ‟vars‟; no strict ‟vars‟; use strict ‟refs‟; no strict ‟refs‟; use strict ‟subs‟; no strict ‟subs‟;

$var = “hello”; my $var = “hello”;

print $$var; print $var;

sub foo{ … } foo($var); &foo($var);

Page 61: Perl Script

61

Modules – Basic module

5. 맋이 사용하는 모듈 소개

use integer; - double 이 아닌 integer 산술 연산을 수행

use lib ”PATH”; - 현 프로그램에서 임시 라이브러리 경로로 사용

use File::Cwd; - Current Working Directory 에 관련된 함수 제공 use File::Copy; - 파일 복사에 관련된 함수 제공 use File::Compare; - 파일 비교에 관련된 함수 제공

Page 62: Perl Script

62

Interactive Interpreter – perldoc

Perldoc

perldoc Module : 모듈 명으로 보는 도큐먼트

perldoc -f function : 함수에 대한 도큐먼트

perldoc -i Keyword : 키워드가 포함된 도큐먼트

perldoc -l Module : 해당 모듈의 경로

Page 63: Perl Script

63

Database & Socket

데이터 베이스 연동

&

소켓 프로그래밍

Page 64: Perl Script

64

Database – DBI

1. DBI – SELECT 예제

use DBI; # DBI 모듈 사용 $dbh = DBI->connect (“dbi:Oracle:host=host;sid=db_sid;port=1521”, $user, $password); # HOST, USER, PASSWORD를 매개변수로 connection 변수 생성 ## Select ## $sth = $dbh->prepare(“SELECT name, tel from table”); # 쿼리 준비 $sth->excute; # 쿼리 실행 while(($name, $tel) = $sth->fetchrow_array){ # 결과 변수 바인딩 … } $sth->finish; # statement 해제 $dbh->disconnect; # DB연결 해제

Page 65: Perl Script

65

Database – DBI

2. DBI – INSERT 예제

use DBI; # DBI 모듈 사용 $dbh = DBI->connect (“dbi:Oracle:host=host;sid=db_sid;port=1521”, $user, $password); # HOST, USER, PASSWORD를 매개변수로 connection 변수 생성 ## Insert ## $query = “INSERT INTO table(name, tel) values (?,?)”; # 쿼리 $sth = $dbh->prepare($query); # 쿼리 준비 $sth->bind_param (1, $name); # 쿼리 변수 바인딩 $sth->bind_param (2, $tel); # 쿼리 변수 바인딩 $sth->excute; # 쿼리 실행 $sth->finish; # statement 해제 $sth->commit; # DB 커밋 $dbh->disconnect; # DB연결 해제

* /hanmail/bin/per/lib/db_common.pm

Page 66: Perl Script

66

Networking – socket

IO::Socket 예제

* /hanmail/bin/per/lib/net_common.pm

use IO::Socket; # Socket모듈 사용 $buf = 25600; $socket = IO::Socket::INET->new( “PeerAddr => “localhost” , PeerPort => 80 , Proto => “tcp” ); # PeerAddr(Host), PeerPort(Port), Proto(Protocol)로 소켓 생성 $req = “GET / HTTP/1.0\n\n”; # Request Header syswrite ($socket, $req); # Request sysread ($socket, $res , $buf); # Response print $res;

Page 67: Perl Script

67

Interactive Interpreter – option

perl -e Execute 쉘 상에서 perl 실행

perl -e „$x=“hi”; print “$x\n”;‟

perl -d Debbuging 프로그램 디버깅

Page 68: Perl Script

68

Interactive Interpreter – option

perl -w worning 경고 표시

perl -we „$x=“hi”;‟

perl -c compile 컴파일 실행

perl -Mmodule 모듈을 사용하여 실행

Page 69: Perl Script

69

감사합니다

감사합니다