1987년 Larry Wall에 의해 개발됨.
광역 네트워크 구축을 위한 시스템 관리 및 제어 프로그램을 개발하던 Larry가 상사에게 그동한 한일을 보고하기 위해 만든 언어.
Pearl (Practical Extraction And Report Language) ==> Perl
hello.pl
# 을 사용한다.
variable.pl
array.pl
array2.pl
>, <, >=, >= # 숫자의 비교. if ( $a > $b ) { print "O.K."; }
==, !=, <=> # <=>는 앞의 변수가 작으면 -1, 크면 1, 앞과 뒤의 변수가 같으면 0을 return합니다.
if의 반대 개념으로 unless가 있습니다. 즉, 조건식에 거짓으로 판명이 될 경우에만 블록내의 명령(들)을 실행시킵니다.
@a = 3;
unless ( @a == 5 ) {
print "Hey\n";
}
my @address;
my $friend = 0;
push @address, "joone";
push @address, "minsoo";
push @address, "jinsu" if $friend;
$friend = 1;
push @address, "john" if $friend;
foreach $elem (0..$#address)
{
print $address[$elem],"\n";
}
for ( $i = 0; $i < 100; $i++ )
{
print "test ";
}
for ( 1...100)
{
print "test2 ";
}
for.pl
@myArray = (A, B, C, D, E);
for ($elem = 0; $elem <= $#myArray; $elem++ )
{
print $myArray[$elem];
}
foreach.pl
sub mysubroutine
{
print "this is mysubroutine\n";
}
&mysubroutine;
input.pl
<>는 지정된 핸들로 부터 한줄을 입력받는 연산임.
| 구분 | 내용 |
| 읽기 핸들 | open(HANDLE_NAME,“ filename”); # 지정된 파일의 읽기 핸들 open(HANDLE_NAME,“ <filename”); # 위와 같음 (더 명확한 표현) |
| 쓰기 핸들 | open(HANDLE_NAME,“ >filename”); # 지정된 파일 생성, 쓰기 핸들 open(HANDLE_NAME,“ >>filename”); # 존재하는 파일에 덧붙여 쓰기 핸들 |
print STDOUT "Enter the source file: ";
$src = <STDIN>;
print STDOUT "Enter the target file name: ";
$target = <STDIN>;
open(INPUTFILE, "<$src");
$data = <INPUTFILE>;
close(INPUTFILE);
print $data;
open(OUTPUTFILE, ">$target");
print OUTPUTFILE $data;
close(OUTPUTFILE);
copyfile.pl
require는 라이브러리가 될 파일의 내용을 그 위치에다가 직접써넣는 C에서의 include 문과 같다고 보면됨.
코드를 로드하기보다는 삽입
## 삽입을 피해갈수 있다
if ( 0 ){
require "cgi_lib.pl";
}
## 포함할 스크립트의 이름을 동적으로 지정
$file = "cgi_lib.pl"
require $file;
use는 require와 다른 특성을 갖는데,
첫째, 중복로딩을 막습니다.
둘째, 로직흐름과 상관없이 새로운 영역에 로딩됩니다.
컴파일시에 문맥을 따지지않고 발견되는 use문을 단한번만 처리하게 된다.
perl -d aaa.pl