[첫화면으로]Perl/Java프로그래머를위한Perl소개

마지막으로 [b]

2 번째 수정본

1. 개요

Perl과 자바는 많은 부분이 비슷하고, 많은 부분이 다르다. 둘 다 절차적이고, 비슷한 키워드와 구조를 가지고 있고, 기능은 서브루틴(메쏘드,함수)으로 분리되고, 객체지향과 예외처리, 패키지를 지원한다. 반면 펄은 문법이 매우 유동적이고, 기본 언어의 기능이 자바보다 훨씬 많다.

유동적인 문법이란 말은 펄은 같은 일을 하는 데 여러 가지 다른 방법을 지원한다는 뜻이다. 다음과 같은 자바 코드가 있다면,
if (!test)
  {
  throw new Exception ("aargh");
  }
펄에서는 똑같이 다음과 같이 쓸 수 있다:
if (!test)
  {
  die ("aargh");
  }
이것은 자바 버전과 매우 유사하다. 하지만 이것은 다음과 같이 쓸 수도 있다:
unless (test)
  {
  die ("aargh");
  }
unless는 '~가 아니라면'의 뜻이다. 그러나 더 보편적으로, 숙련된 펄 해커들은 다음과 같은 식으로 쓸 것이다:
test or die ("aargh");

왜 자바로는 똑같이 압축된 형태로 쓸 수 없는가? 자바는 문법 구조가 매우 경직되어 있다. 첫째로 논리 연산자 AND(&&)나 OR(||)는 불리언 타입을 갖는 피연산자에만 쑬 수 있다. test는 여기 해당된다고 가정해도 throw에서는 값을 얻을 수 없어서 논리값 비교에 쓸 수 없다. 두번째로 논리 연산자들로 구성된 구문은 그 자체가 불리언 타입을 반환해야 한다. 셋째로 논리 비교식은 독립적인 구문으로 존재할 수 없다. if (x || y) {};는 괜찮지만 x || y;는 불가능하다.

펄의 이러한 문법의 유연함이 더 좋은지 나쁜지는 스스로 판단할 문제이다. 펄의 문법은 매우 빈번한 연산을 짧은 형태로 표현할 수 있게 해 주는 반면 종종 펄 프로그래머가 아닌 사람들이 읽을 수 없게 된다.

기본 언어의 기능을 비교하면 펄이 자바보다 훨씬 풍부하다. 이것은 펄이 더 많은 일을 할 수 있다는 뜻이 아니라, 단지 기본 언어가 더 많은 일을 할 수 있다는 뜻이다. 자바의 철학은 언어 중추는 매우 간단하게 유지하고 다른 모든 기능을 표준 클래스 라이브러리에 넣는 것이었다. 따라서, 예를 들어, 펄은 연관 배열1을 언어의 일부로서 지원한다. 자바는 java.util 패키지에 있는 클래스들을 통하여 지원한다. 펄은 정규표현식을 프로그램 구문에 직접 적을 수 있는 반면 자바는 정규식이 클래스에 캡슐화되어 있을 것을 기대한다. 어느 쪽이 더 좋고 나쁜 건 아니며 그저 다를 뿐이다.

2. 기본 요소

2.1. 프로그램 구조와 철학

2.2. 컴파일과 실행

javac Test.java
java Test

perl Test.pl

#!/usr/bin/perl
그 다음 커맨드 라인에서 직접 실행하는 것이다.
Test.pl

이름:  
Homepage:
내용:
 

기타분류
각주:
1. 해시

이 수정본 편집일: 2013-11-8 9:16 pm (변경사항 [d])
1787 hits | Permalink | 변경내역 보기 [h] | 현재 수정본 보기 | 2 번째 수정본 소스 보기