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부터 다시 살펴보기로!