NOWS/Perl

day 2.

emzei 2016. 1. 6. 16:52

day2. spero spera :)


'아직 개요...'






  • 다양한 입력 포맷 이용하기
if($name =~ /^Randal\b/i/){
    print "Hello, Randal! How good of you to be here!\n";

    • 정규표현식
      • /(슬래시)로 구분
    • cf. 
      • =~ : 정규표현식과 스칼라변수 값이 일치하는 경우
      • \b : 앞의 문자열을 거부 (ex. 'Randal'문자열 거부)
      • /i : 대소문자 구분 없음
      • \W : 비단어 문자(알파벳, 숫자, 언더스코어를 제외한 어떤 문자)
      • s 연산자 : 대입연산자
      • tr 연산자 : 소문자로 변환

#!/usr/bin/perl -w                                                                                                                 

print "What is your name? ";
$name=<STDIN>;
chomp($name);
$original_name = $name;
$test = $name;

$name =~ s/\W.*//; #첫 단어 뒤 모든 것 제거
print "name : $name\n";

$test =~ tr/A-Z/a-z/; #모두 소문자로 변환
print "test : $test\n";

Result :

What is your name? Harry Potter.JK 

name : Harry

test : harry potter.jk 





  • 서브 루틴
    • 인수(parameter) 및 리턴 값을 가질 수 있음

sub sub_name{

my($name, $id) = @_;

...

return 0;

};

    • my(parameters) = @_;
      • 서브루틴의 인수 값을 지역변수에 복사하기
    • 리턴 값이 없는 경우, 서브 루틴 내에서 계산된 마지막 표현식이 리턴값


  • 표준 I/O
    • STDIN, STDOUT, STDERR

  • 파일 핸들
open(WORDLIST, "filename");
...

close(WORDLIST);
    • file을 열어서 WORDLIST에 저장
    • 연산 결과로 리턴되는 빈 문자열은 undef
    • undef 테스트
      • while( defined ($name = <WORDLIST>))

  • Example

wordlist

alice

bob

cindy

daniel

eve

fredo

granuality

haha


code
open(WORDSLIST, "wordlist");
while($name = <WORDSLIST>)
{
    chomp($name);
    $word = <WORDSLIST>;
    chomp($word);
    $words{$name} = $word;
    print ("name: $name, word: $word\n");
}

result
name: alice, word: bob
name: cindy, word: daniel
name: eve, word: fredo
name: granuality, word: haha



  • die 함수
    • 무언가 잘못될 경우 에러메시지와 함꼐 프로그램 종료

  • $! 변수
    • 시스템 호출이 실패한 경우, 시스템 에러 메시지를 담고 있음

  • -M 연산자
    • 파일 또는 파일 핸들이 최종적으로 수정된 이후 지난 날을 리턴
    • if (-M WORDLIST >= 7.0 )




*** 개요가 개요가 아닌 것 같아서... 이 정도로 하고 챕터 2부터 다시 살펴보기로!




'NOWS > Perl' 카테고리의 다른 글

day 6.  (0) 2016.02.02
day 5.  (0) 2016.02.01
day 4.  (0) 2016.01.27
day 3.  (0) 2016.01.07
day 1.  (0) 2016.01.05