Untitled Document











현재 하고 있는 일들

1
Total 37 articles, 2 pages/ current page is 1
   

 

  View Articles
Name  
   권민정 
Homepage  
   http://nppb.korea.ac.kr/~mjkwn
Subject  
   [강좌] 펄의 기초
펄의 기초

Perl이란
텍스트 파일을 검색하여 실용적인 정보를 추출하고 그 정보를 가공하여 이용하는데 아주 적절한 언어이다
인터프리터 언어이다
인터프리터 언어이지만 실행전에 바이트 코드로 컴파일되므로 한 문장씩 검색되어 실행하는 다른 인터프리터 언어보다 빠르게 수행된다
i) 전체 스크립트를 검색하고 명령어들을 내부적인 포맷으로 컴파일한다
ii) 내부적인 포맷을 사용하여 스크립트를 실행한다
호환성이 뛰어나다
간단한 스크립트
Hello.pl

#!/usr/bin/perl
#hello.pl
print "Hello World.\n";
윈도에서 코딩시 Dos의 edit를 사용한다(notepad 사용시 에러 발생)
source file의 확장자는 보통 pl로 한다
첫 라인의 #!/usr/bin/perl은 unix에서 스크립트를 명령어로 만들기 위해 사용되는 perl 명령어의 경로를 적어준다
#은 주석문이다
Input.pl

#!/usr/local/perl
#input.pl
print "What if your favorite scripting language?";
$lang = ;
chomp($lang);
print "$lang";
$는 변수가 스칼라 변수이며 하나의 값만을 저장한다는 것을 나타낸다
unix에서는 모든 프로그램들이 세 개의 이미 열려진 파일들을 갖는다
STDIN, STDOUT, STDOUT
<>는 의 생략형이다
STDIN(파일 핸들)로부터 한줄씩 읽는다
cf) getc : 한 문자씩 읽는다. read : 1024byte씩 읽는다
chomp는 텍스트의 한 행을 읽을 때 따라오는 행의 마지막 문자를 제거해준다
chop는 개행 문자만 제거해준다
시스템에서 행의 마지막을 나타내는 문자(text mode)
유닉스
개행문자(\n)

윈도
캐리지 리턴(\r)

매킨토시
캐리지 리턴(\r)


시스템에서 행의 마지막을 나타내는 문자(binary mode)
유닉스
개행문자(\n)

윈도
캐리지 리턴(\r) + 개행문자(\n)

매킨토시
캐리지 리턴(\r)


텍스트 연산
홑 따옴표(')와 곁 따옴표(")
홑 따옴표
\'(홑 따옴표 삽입)과 \\(백슬래쉬 삽입) 만 허용된다
변수 값이 치환되지 않는다
곁 따옴표
모든 backslash escape를 사용할 수 있다
변수의 값이 치환된다
따옴표 처리의 문제점 - 데이터가 이미 따옴표를 포함하고 있는 경우
홑 따옴표는 q 연산자, 곁 따옴표는 qq 연산자를 사용하여 데이터를 괄호나 틸드로 묶어준다
몇 가지 문자열 관련 함수
length, lc, uc, index, rindex, substr
데이터 타입
기본 데이터 타입인 Scalar, Array, Hash과
파일 핸들, 디렉토리 핸들, 서브루틴, 타입글로브, 포맷 등이 있다
변수는 자료형을 선언할 필요없이 필요한 곳에서 바로 사용하면 된다
특정한 값으로 초기화되지 않은 변수는 처음에 Null 값("" 또는 0)으로 지정된다
Perl에서는 현재의 구문에 맞도록 자동으로 데이터를 필요한 형태로 변환한다
변수의 구분
NAME - 파일 핸들
@NAME - 배열
*NAME - 심볼 테이블 엔트리

$NAME - 스칼라
%NAME - 연상 배열
&NAME - 서브 루틴 호출


$(스칼라 변수를 나타낸다)
스칼라 값, 배열의 한 요소, 해시의 키에 해당하는 값을 나타낸다
@(배열 변수을 나타낸다)
배열의 전체, 배열의 일부분, 해시의 일부분을 나타낸다
%(해시 변수를 나타낸다)
해시 전체를 나타낸다
Perl의 예약어는 소문자이다
변수명
변수명은 영문자로 시작하여 영문자, 숫자, _ 가 올 수 있다
변수명이 숫자로 시작하는 경우 숫자로만 이루어져야한다
영문자, 숫자 _ 이외의 다른 글자로 시작하는 경우 한 글자만 사용할 수 있다
-> 대부분 Perl에서 미리 지정되어 있다
각 변수 타입은 각각의 이름 영역을 갖고 있다
-> 같은 이름으로 스칼라 변수, 배열, 해시를 서로 충돌없이 정의해서 사용 가능하다
print
print $variable; or print "$variable";
print "$variable","string";
print @array; - 배열의 요소가 구분없이 연속적으로 출력된다
print "@array"; - 배열의 요소가 공백을 두면서 출력된다
print "$assoc{$key}"; - 연관 배열의 출력
print "$assoc{\"string_key\"}
이중 따옴표는 escape 문자이므로 백슬래시와 함께 사용한다
print ; - 파일을 출력한다
print fileHandle $variable - 변수의 값을 파일에 기록한다
연속된 print문의 간략화(Herl Document)
print Good Morning!
End
backslash escape 문자
\\
백스래쉬 사용 가능
\n
개행

\"
따옴표
\r
리턴

\a
벨소리
\t


\b
백스페이스
\u
\l의 반대

\cN
컨트롤 문자(예 : \cC는 Control-C를 나타냄)

\e
Escape 문자(문자 27)
\U
\L의 반대

\E
\L or \U의 종료
\0NN
8진수

\f
폼피드
\xNN
16진수

\l
다음 문자를 소문자로 만든다

\L
다음에 오는 문자들을 \E가 나올 때까지 소문자로 만든다


연산자

결합성
연산자

왼쪽
일반 용어와 리스트 연산자(왼쪽)

왼쪽
->

비결합
++ --

오른쪽
**

왼쪽
<< >>

비결합
이름 붙은 일원 연산자

비결합
< > <= >= lt gt le ge

오른쪽
! ~ \ 일원 연산자 +와 -

왼쪽
=~ !~

왼쪽
* / % x

왼쪽
+ -

비결합
== != <=> eq ne cmp

왼쪽
&

왼쪽
| ^

왼쪽
&&

왼쪽
||

비결합
.

오른쪽
? :

오른쪽
= += -= *= emd

왼쪽
, =>

비결합
리스트 연산자(오른쪽)

오른쪽
not

왼쪽
and

왼쪽
or xor


흐름제어
참(true)과 거짓(false)
""과 "0"을 제외한 모든 문자열은 참이다
0을 제외한 모든 숫자는 참이다
모든 레퍼런스는 참이다
그 밖의 정의되지 않은 모든 값은 거짓이다
0 -> 거짓, 1 -> 참, 10 - 10 -> 거짓, 0.00 -> 거짓
"0" -> 거짓, "" -> 거짓, "0.00" -> 참, "0.00" + 0 -> 거짓
\$a -> 참, \n -> 참, undef() -> 거짓
if
if (condition) { } elsif { } else { }
unless : if의 반대 의미를 갖는다
while
while (condition) { }
while (condition) { } continue { }
do { } while condition;
until : while의 반대 의미를 갖는다
for
for (initialization; expression; continue) { }
foreach
foreach loop_variable (list) { }
label: foreach loop_variable (list) { }
continue
continue { ... }
last
last or last label
next
next or next label
redo
redo or redo label
goto
goto label
Ending Modifiers
statement if condition;
statement unless condition;
statement while condition;
statement until condition;
서브루틴
선언 및 정의
sub Name;
sub Name BLOCK
익명 서브루틴 정의
$subref = sub BLOCK;
서브루틴 호출
Name(LIST);
Name LIST;
&Name;
&$subref(LIST);
&$subref;
다른 패키지에서 정의된 서브루틴 호출
use PACKAGE qw(Name1 Name2 Name3 ... );


출처 : http://www.sqlca.com/
  


    

 


Prev
   [강좌] Makefile 만들기

권민정
Next
   References to Beginning Tcl

박우진


Copyright 1999-2022 Zeroboard / skin by madpark