HW 업계에서는 Perl을 많이 사용하는거 같습니다.
사실 python만 하다가 회사에 와서 Perl 쓴다고해서 그렇구나 했는데
생각보다 배우기 어렵지 않았습니다.
그래서 빠르게 살펴보겠습니다.
Perl을 어디에 어떻게 쓰나 보고
회사에서 쓸려면 뭘 알아야 할까를 생각해봤는데
몇 개 없었습니다.
0. 설치
1. 변수설정
2. 조건문
3. 반복문
4. 파일 입출력
5. 정규표현식
이렇게 5개만 알면 80%는 할 수 있는거 같은데
하나씩 살펴 볼까요?
linux에서는 자동설치가 되어 있는거 같은데
window에서 해보려면 설치가 필요합니다.
git을 설치하면
git bash에 자동으로 포함되어 있기때문에 좋습니다.
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/
여기가 아주 좋습니다
그런데 아주 기본적인 사용은 알고 보는게 좋겠죠?
저도 사실 못 외워서 쓸때마다 보고 찾아서 하는데
기본적인 것만 해보겠습니다.
input.txt를 아래와 같이 바꿔봤습니다.
그리고
위와 같이 적고
./test2.pl input.txt
를 수행하게되면
이렇게 나옵니다.
코드를 간단하게 살펴 보면
if문에 있는
=~
는
바인딩 연산자로
A =~ B
일때
A가 B의 패턴과 일치 하는지를 봅니다.
위 코드에서는
$_ =~ /a/
라고 적혀 있는데
현재 while문을 통해 읽어온
한 줄에 정규표현식인 /a/ 와 일치하는 형태가 있는지
true, false 형태로 반환합니다.
진짜 간단하고 빠르게 해봤습니다.
사실 마구잡이로 제대로된 설명도 없이 살펴본 것이지만
C에대한 기본적인 지식 혹은
script 언어에 대한 기본적인 지식이 있다면
위 내용을 그대로 실행하기만 해봐도
perl을 사용하기 위한 진짜 기초중의 생기초는 다 보신거라 생각합니다.
사실 추가적으로 살펴보면 좋은 것들이 많은데
해당 내용은 다음에 좀더 가다듬어서 업로드 하도록 하겠습니다.
'SW' 카테고리의 다른 글
[Git] 당장 시작하기 (0) | 2020.07.13 |
---|---|
[visual studio code] pylint error, Unable to import 'xxx' 불러오기 및 자동완성 에러 (0) | 2020.04.15 |
OpenCV4 WSL에 설치하기 (1) | 2020.04.10 |