use strict;
  ## restrict unsafe use of variables for rest of block

use strict 'vars'; ## restrict unsafe use of variables for rest of block
 EX Code)
 use strict 'vars';
 use vars '$foe';
 
 $SomePack::fee = 1;
 my $file = 10;
 $foe = 7;
 $foo = 9;
 

use strict 'refs';  ## restrict unsafe use of references for rest of block
 EX Code)
 use strict 'refs';
 $ref = \$foo;
 print $$ref;
 $ref = "foo";
 print $$ref;

 
use strict 'subs';  ## restrict unsafe use of barewords for rest of block
 EX Code)
 use strict 'subs';
 $SIG{PIPE} = Plumber;
 # blows up (assuming Plumber sub not declared yet)
 $SIG{PIPE} = "Plumber";
 # okay, means "main::Plumber" really
 $SIG{PIPE} = \e&Plumber; # preferred form

no strict;

오늘은 여기까징~~


CGI-FastTemplate :
링크 : http://search.cpan.org/~jmoore/CGI-FastTemplate-1.09/FastTemplate.pm


HTML::DynamicTemplate :
링크 : http://search.cpan.org/~brianng/HTML-DynamicTemplate-0.95/DynamicTemplate.pm


일단 두개만..

PHP 에서 Smarty 등과 같은걸 찾을라 했는데 레퍼런스가 별로 없다.
영어가 안되니 참으로 답답허구나.. ㅜㅜ



## 변수 레퍼런스
$v = 10;
$rv = $$v;


## 배열 레퍼런스
@aArr = ("one", "two", "three");
$raArr = \@aArr;
print "arr reference ".$$raArr[0]."\n"; ## eq expression 'print $$raArr[0]'
print "arr reference ".$raArr->[0]."\n"; ## eq expression 'print $$raArr[0]'


## 해쉬 레퍼런스
%hHash = ("one","1","two","2");
$rhHash = \%hHash;
print "hash reference ".$$rhHash{'one'}."\n";
print "hash reference ".$rhHash->{'one'}."\n";

서브 루틴에서 사용(Subroutines)
@aArray = (1,2,3);

printArray(\@aArray);

sub printArray
{
    my ($raArray) = @_;
    for ($i = 0; $i<3); $i++)
    {
       print "array[$i] = $raArray->[$i]\n";
    }
}

파일제어
 open(),close()
 
 open(FILE,"> /etc/hosts");
 close(FILE);
 
 open(FILE, ">> /home/log/secure.log");
 close(FILE);
 
 '<' 읽기 모드(기본값 r)
 '>' 쓰기 모드(w)
 '>>' 내용더하기 (a)
 '+C<' 읽기쓰기 모드
 '+>' 읽기쓰기 모드
 '|'
 '|'

주의점
  open(파일핸들, "파일제어기호 파일명(경로포함)"); 에서 파일제어기호와 파일명에는 콤마등의 기호가 없어야 한다.


select()
TODO


eof,eof()
'()' 의 있고 없고의 차이는 파일의 끝의 대상이 하나인가 여러개인가의 차이인듯.. (영어가 딸려서)
아래는 perldoc 의 원문이다.
In a "while (<>)" loop, "eof" or "eof(ARGV)" can be used to detect the end of each file,
"eof()" will only detect the end of the last file.


 


 - 논리적 연산자
  && -> 일반적인 AND 연산자.
  || -> 일반적인 OR 연산자.
 
  $value > 5 || print "value는 5보다 크다"; ## $value 가 5보다 작아야 출력됨
  $value > 5 || print "value는 5바다 크다"; ## $value 가 5보다 커야 출력됨


 - 조건부 연산자 (Conditional Expression)
  ==  eq       같다
  !=  ne        다르다
  <=> cmp    C 에서 제공하는 strcmp 랑 비슷, 같으면 '0', 앞이 크면 1, 뒤가 크면 -1
  > gt           크다
  >= ge        크거나 같다
  < lt            작다
  <= le         작거나 같다


- 파일 테스트 연산자
  -e $a   $a 파일이 존재하면 참
  -r  $a   $a 파일이 읽기 가능하면 참
  -w $a   $a 파일이 쓰기 가능하면 참
  -d  $a   $a 가 디렉토리이면 참
  -f   $a   $a 가 일반 파일이면 참
  -T  $a   $a 가 텍스트파일이면 참
  
  
- 제어문(Flow Control)
 while
 $n = 50;
 while( $n > 0)
 {
     print $n."\n";
     $n--;
 }  ## $n 이 1이 될때까지 출력


 until ($a == 100)
 {
     print "until a  is 100";
 } ## $a 가 100이 되면 출력을 멈춤
 
  
 foreach
 @aArr = ("aaa","bbb","ccc");
 foreach $szTmp(@aArr)
 {
     print "$szTmp\n";
 }


 if...elsif...else
 $n = 1;
 if($n == 1)
 {
     print "n is $n\n";
 }
 elsif ($n == 2)
 {
     print "n is $n\n";
 }
 else
 {
     print "n is $n\n";
 }

 unless
 unless($destination eq $home)
 {
     print "im not going home.\n";
 }


  next, last
  next -> continue 와 비슷한..
  last -> break 와 비슷한..

  조금 더 정리를...

+ Recent posts