프로그래밍 언어/Perl

Perl 프로그래밍 CPAN 모듈 설치와 Perl 패키지 활용법, 네임스페이스 충동 방지 방법 - Perl #8

eco7T 2024. 12. 4. 12:02
반응형

이번에는 Perl 프로그래밍의 모듈과 패키지에 대해 살펴보려 합니다. 코드를 구조화하고 재사용서울 높이는 방법에 대해 쉽게 이해할 수 있도록 정리하겠습니다.

Perl 프로그래밍 CPAN 모듈 설치와 Perl 패키지 활용법
Perl 프로그래밍 CPAN 모듈 설치와 Perl 패키지 활용법

 

Perl 프로그래밍 언어의 모듈과 패키지

모듈(Module)과 패키지(Package)는 Perl 프로그래밍에서 코드의 재사용성과 구조를 개선하기 위해 사용되는 개념입니다. 이 두 개념을 이해하면 코드를 좀 더 체계적으로 작성하고, 유지보수나 협업이 더 쉬워집니다. 모듈은 Perl 파일(.pm 파일)로서 특정 기능을 수행하는 코드 덩어리이고, 패키지는 모듈 내에서 변수와 함수들의 이름이 충돌하지 않도록 하는 네임스페이스입니다.

 

반응형

 

  모듈(Module)이란?

모듈은 여러 함수와 변수들을 정의해 놓은 파일로, 코드를 재사용할 수 있게 도와줍니다. 예를 들어 반복적으로 사용되는 기능을 모듈로 만들어 두면, 이를 여러 곳에서 재활용할 수 있어 코드의 효율성과 가독성을 높일 수 있습니다.

모듈의 파일명은 일반적으로 .pm 확장자를 가지며, 그 안에 있는 코드는 패키지로 정의되어 있습니다. 모듈을 사용함으로써 코드를 분리하고 재사용 가능하도록 하는 것이 목표입니다.

 

예시: 계산 기능을 모듈로 만들기

# MyMath.pm 파일 package MyMath; use strict; use warnings; sub add { my ($a, $b) = @_; return $a + $b; } sub subtract { my ($a, $b) = @_; return $a - $b; } 1; # 반드시 1을 반환해야 모듈로 사용할 수 있음

이렇게 MyMath.pm이라는 모듈을 작성하면, 다른 Perl 스크립트에서 다음과 같이 불러올 수 있습니다.

# main.pl 파일 use strict; use warnings; use MyMath; my $result1 = MyMath::add(5, 3); print "5 + 3 = $result1\n"; my $result2 = MyMath::subtract(10, 4); print "10 - 4 = $result2\n";

위 예제에서는 use MyMath;를 통해 MyMath.pm 모듈을 불러와 사용합니다. MyMath::add(5, 3)과 같이 모듈의 함수들을 호출할 수 있습니다.

 

 

  패키지(Package)란?

패키지는 네임스페이스를 제공하여, 변수나 함수 이름이 충돌하지 않도록 돕습니다. 큰 프로젝트에서는 같은 이름의 함수나 변수가 여러 곳에서 사용될 수 있기 때문에, 이를 구분해 주는 패키지가 필수적입니다. 패키지는 package 키워드를 사용해 정의하며, 모듈의 최상단에 위치합니다.

 

패키지 사용하기

package Animal; sub speak { my $name = shift; print "$name says Hello!\n"; } 1;

이렇게 패키지 이름을 Animal로 정의하면, 이 안의 함수들은 Animal::speak와 같이 호출됩니다. 다른 패키지에서 같은 이름의 함수를 정의하더라도, 네임스페이스 덕분에 충돌하지 않습니다.

 

 

 

  모듈과 패키지의 관계

모듈은 파일 단위로 저장되고, 그 안에는 하나 이상의 패키지가 있을 수 있습니다. 모듈 내에 패키지를 정의하는 이유는 네임스페이스를 구분하여 다른 모듈이나 코드와 충돌을 방지하기 위함입니다. 따라서 모듈은 하나의 패키지를 포함하거나, 필요에 따라 여러 패키지를 포함할 수 있습니다.

 

  실제 예시 - 간단한 유틸리티 모듈 만들기

이제 실제로 유용한 모듈을 만들어 보겠습니다. 문자열 처리를 위한 유틸리티 모듈을 만들어 보죠.

 

StringUtil.pm

package StringUtil; use strict; use warnings; sub to_upper { my $string = shift; return uc($string); } sub to_lower { my $string = shift; return lc($string); } 1;

이 모듈은 문자열을 대문자 혹은 소문자로 변환하는 함수들을 제공합니다.

 

main.pl

use strict; use warnings; use StringUtil; my $original = "Hello World"; my $upper = StringUtil::to_upper($original); print "Uppercase: $upper\n"; my $lower = StringUtil::to_lower($original); print "Lowercase: $lower\n";

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

Uppercase: HELLO WORLD Lowercase: hello world

이렇게 모듈과 패키지를 사용하여 코드를 재사용 가능하고 간결하게 만들 수 있습니다.

 

 

  모듈 설치 및 사용법

Perl에는 CPAN(Comprehensive Perl Archive Network)이라는 모듈 저장소가 있습니다. 여기에는 수많은 Perl 모듈들이 공유되어 있어, 필요한 기능을 쉽게 가져다 쓸 수 있습니다. CPAN을 통해 모듈을 설치하려면 터미널에서 다음과 같이 입력합니다.

cpan install Some::Module

설치 후에는 use Some::Module;을 통해 모듈을 사용할 수 있습니다. 예를 들어, 웹 요청을 처리하기 위해 LWP::UserAgent 모듈을 설치할 수 있습니다.

use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $response = $ua->get('http://www.example.com'); if ($response->is_success) { print $response->decoded_content; } else { die $response->status_line; }

 

반응형