본문 바로가기

SW

Perl 당장 시작하기

HW 업계에서는 Perl을 많이 사용하는거 같습니다.

 

사실 python만 하다가 회사에 와서 Perl 쓴다고해서 그렇구나 했는데 

 

생각보다 배우기 어렵지 않았습니다.

 

그래서 빠르게 살펴보겠습니다.


Perl을 어디에 어떻게 쓰나 보고 

회사에서 쓸려면 뭘 알아야 할까를 생각해봤는데

 

몇 개 없었습니다.

 

0. 설치

1. 변수설정

2. 조건문

3. 반복문

4. 파일 입출력

5. 정규표현식

 

이렇게 5개만 알면 80%는 할 수 있는거 같은데

 

하나씩 살펴 볼까요?

 


 

 

linux에서는 자동설치가 되어 있는거 같은데

window에서 해보려면 설치가 필요합니다.

 

git을 설치하면

git bash에 자동으로 포함되어 있기때문에 좋습니다. 

https://git-scm.com/

 

Git

 

git-scm.com

git은 위 홈페이지에서 다운 받아서 설치하시고 나서

 

linux라면 그냥 terminal에서 하시면되고 

window는 git bash에서 진행합니다.

 


변수

 

변수는 3개만 기억하면 될것 같습니다. 

 

1. 변수 : 정수, 실수, 문자, 문자열 모두 할당 가능 변수명 앞에 $를 써주면 됨

2. 배열 : 변수명 앞에 @를 써주시면 됩니다.  다양한 type을 배열에 넣을 수 있습니다.

3. 해쉬 : 변수명 앞에 %를 넣으시면 됩니다.  hash는 key-value형태로 이루어진 배열로

"이름"은 "내이름"

"레벨"은 "30"

이런식으로 python의 dictionary와 비슷하게 사용할 수 있습니다. 

 

 

사용은 위와 같이 할 수 있습니다. 

hash선언 후에 단일 값은 $로 접근해야 합니다.

 

보시면 첫번쨰 줄에 #!/usr/bin/perl 이라고 적혀 있는데

/usr/bin/perl로 이 코드를 실행하라는 의미입니다.

 

따라서 이렇게 적어두면

해당 코드를 실행할때 그냥 파일명만 써도 잘 실행됩니다. 


반복문

 

반복문은

while, for, foreach가 있습니다.

 

 

사용방법은 C와 상당히 유사합니다. 

다른 부분도 있긴한데 그것도 같이 살펴보겠습니다. 

 

먼저 가장 기본적인 while형태입니다. 

 

 

 

아까 코드에 이어서 적어봤습니다. 

 

$num 으로 num 변수를 만들고

num이 5보다 작을동안 print 하고 1씩 키우는 형태로 만들었습니다. 

 

아주 쉽죠?

 

이어서 다음 for 문을 살펴보겠습니다 .

 

방금전 코드와 똑같은 동작을 하는 코드를 for 문으로 만들어 봤습니다. 

 

C를 알고 있다면 아주 쉽죠?

 

이어서 for문의 다른 사용법도 볼까요?

 

23번째  줄부터 25번째 줄처럼 적어서

$num에 대입될 숫자의 범위를 만들어 줄 수 도 있습니다. 

 

23에서 25번째 줄을 실행시키면

0

1

2

3

4

이렇게 출력되겠죠?

 

반복문 마지막은 foreach입니다. 

 

foreach는 여러 요소를 가지고있는 배열같은 값에서

하나씩꺼내서 사용하는 그런 반복문인데요

 

실제로 보겠습니다!

 

아까 그 코드에 계속 이어서 적어보겠습니다. 

 

27번부터 30번째 줄까지 foreach의 사용법이구요

 

보시면 아까전에 위에서 만들었던 hash를 이용해서 foreach를 사용하는걸 볼 수 있습니다. 

알려드리지 않았던건 keys를 사용해서 hash를 괄호로 묶어주면

그 hash의 key값이 배열로 return되는데 

그걸 이용해서 foreach를 사용했답니다. 

 

위에 적혀 있는 코드를 그대로 실행한 결과는

아래와 같습니다. 

 

반복문과 변수까지 확인해봤네요!


이제 조건문입니다. 

 

사용법은 C와 똑같습니다. 

 

32번줄부터 37번째 줄까지 보겠습니다. 

 

핵심은 33번째 줄이긴 하죠?

 

0부터 9까지 $num을 2로 나눈 나머지가 0일때 print $num을 해라

 

이런건데 

 

잘 수행되는지 확인해보세요!

 

추가적으로 C에서는

if가 있으면

else if가 있고

else가 있는데 

 

perl에서는

 

if,

elsif,

else가 있습니다. 

 

 

이렇게 조건문 끝!

 


파일 입출력을 보겠습니다. 

 

C언어에서도 main함수가 입력으로 받는것들을

 

argv로 받아서 표현했는데

perl도 비슷합니다.

 

$ARGV[n]을 넣어주면

 

해당 코드를 실행할때 뒤에 적어준 내용이 입력으로 들어가게됩니다. 

예를들어서 실행할 코드파일의 이름이 test2.pl이고

입력으로 주고싶은 파일명이 input.txt 라고한다면

 

./test2.pl input.txt

 

이렇게해주면됩니다. 

 

그럼 $ARGV[0]은 input txt가 됩니다 .

 

만약에 

 

./test2.pl input.txt output.txt

라고 적었다면

 

$ARGV[1]은 output.txt가 됬을겁니다.

 

이어서 나오는건 

open(FI0, $fpath)인데요

 

open을 이용해서 $fpath 경로에 있는 파일을 열고 

그 파일과 통신은 FI0를 이용해서 한다. 

 

이렇게 생각하시면됩니다. 

 

이어서 나오는 while의 조건으로 <FI0> 이렇게 넣어주게되면

EOF를 만날때까지 fpath에 있는 파일로부터 한줄씩 읽어옵니다.

 

읽어온 한줄은 $_로 표현됩니다. 

이것은 while로 파일을 읽거나

foreach로 file을 읽어도 동일하게 적용됩니다. 

 

그리고 모두 끝나면 close로 닫아줍니다. 

 

 

제가 input.txt를 

 

이런식으로 만들어 놨는데 

 

결과는 위와 같습니다. 

 


정규표현식

 

정규표현식은 사실 제가 여기에 정리하는 것보다 잘 정리되어 있는 것을 참고 하시고 

정규표현식이 잘정리되어 있다는 생각이 드는 곳은 

 

http://www.nextree.co.kr/p4327/

 

정규표현식(Regular Expression)을 소개합니다.

날이 갈수록 개인정보 보호에 관련하여 보안정책을 점진적으로 강화하고 있습니다. 이에 따라 Web에서 회원가입 시 Password 설정을 복잡해진 보안정책에 맞추다 보니 복잡하게 조합해야만 정상적으로 가입을 할 수 있습니다. 이러한 강화된 보안정책 때문에 기존에 사용하던 자신만의 Password를 인위적으로 보안정책에 맞추는 경우가 많을 것입니다. 그러다 보니, 종종 Log-In을 할 때 Password를 잊어버려서 곤란한

www.nextree.co.kr

 

여기가 아주 좋습니다 

그런데 아주 기본적인 사용은 알고 보는게 좋겠죠?

저도 사실 못 외워서 쓸때마다 보고 찾아서 하는데 

 

기본적인 것만 해보겠습니다. 

 

input.txt를 아래와 같이 바꿔봤습니다.

 

그리고 

 

위와 같이 적고

 

./test2.pl input.txt

 

를 수행하게되면

 

이렇게 나옵니다.

 

 

코드를 간단하게 살펴 보면

 

if문에 있는

=~

 

바인딩 연산자로

 

A =~ B

일때

 

A가 B의 패턴과 일치 하는지를 봅니다.

 

위 코드에서는

 

$_ =~ /a/

 

라고 적혀 있는데

 

현재 while문을 통해 읽어온

 

한 줄에 정규표현식인 /a/ 와 일치하는 형태가 있는지

true, false 형태로 반환합니다.

 


 

진짜 간단하고 빠르게 해봤습니다. 

사실 마구잡이로 제대로된 설명도 없이 살펴본 것이지만

 

C에대한 기본적인 지식 혹은

script 언어에 대한 기본적인 지식이 있다면

 

위 내용을 그대로 실행하기만 해봐도

perl을 사용하기 위한 진짜 기초중의 생기초는 다 보신거라 생각합니다. 

 

사실 추가적으로 살펴보면 좋은 것들이 많은데 

해당 내용은 다음에 좀더 가다듬어서 업로드 하도록 하겠습니다.