Perl 5.44.0 변경 사항
Perl 5.44.0 변경 사항 (perl5440delta)
이 문서는 Perl 5.42.0 릴리스와 5.44.0 릴리스 사이의 차이를 설명해요.
핵심 개선 사항 (Core Enhancements)
시그니처의 명명 매개변수 (Named Parameters in Signatures)
서브루틴 시그니처에 큰 새 능력이 추가됐어요. 호출자가 매개변수를 위치가 아니라 이름/값 쌍으로 전달할 수 있게 됐어요.
sub f ($x, $y, :$alpha, :$beta = undef) { ... }
f( 123, 456, alpha => 789 );
원래 PPC0024에서 명세됐어요. 이 피처는 현재 실험적이며 perlsub/Signatures에 자세히 설명돼 있어요.
다중 변수 foreach가 이제 별칭 참조(alised reference)를 사용 가능
Perl 5.22가 각 foreach 루프 반복 변수가 참조에 대한 새 별칭을 만들 수 있게 하는 참조 별칭(reference aliases)을 도입했고, Perl 5.36이 각 반복에서 둘 이상의 입력 리스트 항목을 소비하는 다중 변수 foreach 루프를 도입했어요. 이 버전에서는 두 피처를 함께 쓸 수 있게 되어, 여러 반복 변수 중 어느 것이든 참조 별칭이 될 수 있어요.
use v5.44;
use feature qw( refaliasing declared_refs );
my %hash = (
one => [1],
two => [2, 2],
);
foreach my ( $key, \@items ) ( %hash ) {
say "The $key array contains: @items";
}
현재 refaliasing와 declared_refs 피처 모두 실험적이에요.
/xx 하에서 정규식 패턴의 향상된 동작
실험적으로, /xx 패턴 수정자는 대괄호 문자 클래스(예: [a-zA-Z])가 여러 줄에 걸쳐 확장되고 주석을 포함하게 하며, 패턴 일부가 의도한 것이 아니라 우연히 주석으로 취급된 잠재적 경우를 경고할 수 있어요. 이 동작은 use feature "enhanced_xx"로 켜져요. perlre의 x와 xx 항목을 참고해요.
Unicode 17.0 지원
Perl이 Unicode 17.0을 지원해요.
PRNG 시딩을 위한 새 엔트로피 소스
Perl은 이제 내부 PRNG 시딩에 적합한 난수 바이트를 가져오는 데 getentropy() 시스템 호출을 사용해요. 이전에는 /dev/urandom 장치에서 원시 바이트를 읽었어요. 이제 순서대로 시드하며 실패 시 다음으로 넘어가요:
- 이 호출을 지원하는 시스템의
getentropy()(Linux, BSD, MacOS) - 그게 있는 시스템의
/dev/urandom - 내부 상태 변수의 해시: Unix 시간, 프로세스 ID, 포인터 값
내부 PRNG는 여전히 보안 애플리케이션에 부적합하다는 점을 참고해요. 보안 논의는 perlfunc의 rand EXPR를 봐요.
보안 (Security)
CVE-2026-8376 - Perl_study_chunk의 버퍼 오버플로
regcomp_study.c의 Perl_study_chunk가 결합된 부분 문자열 버퍼의 크기를 바이트가 아니라 문자로 검사했어요. 32-bit 빌드에서는 버퍼 크기의 정수 오버플로로 이어져 경계 밖 쓰기가 발생할 수 있어요.
CVE-2026-57432 - S_measure_struct의 버퍼 오버플로
pack이나 unpack으로 계산된 크기가 메모리에 맞기엔 너무 큰 구조체를 대상으로 동작하면 정수 오버플로가 발생해 버퍼 오버플로가 될 수 있어요. 보통 항목의 반복 횟수로 큰 숫자를 임베드할 때 발생해요.
CVE-2026-13221 - 정규식 trie 16-bit 필드 오버플로
정규식 엔진의 trie 최적화가 ~65k보다 많은 분기(alternation)에서 오버플로할 수 있었어요. 이런 정규식에서 위양성과 위음성 모두를 일으킬 수 있어요.
비호환 변경 사항 (Incompatible Changes)
식별자·정규식 그룹 이름에 Unicode 규칙 완전 적용
Unicode 이전에는 Perl이 식별자나 다른 이름의 첫 문자가 숫자가 아닌 한 어떤 \w 문자도 받아들였어요. 나중에 Unicode가 이를 설명하는 두 속성을 만들었고, 그 속성들이 불충분하다는 걸 발견한 뒤 비슷한 두 속성을 더 만들었어요. Perl이 이후 사용하려고 한 것은 \p{XID_Start}와 \p{XID_Continue}예요.
(그리고 훨씬 나중에, Perl이 위 속성으로 식별자 규칙을 만든 뒤, Unicode는 합법 식별자 이름을 더 제한하는 권고를 추가했어요. 프로그래머가 다른 문자처럼 보이는 문자로 검토자를 속여 코드를 몰래 넣는 경우에 대응하기 위함이었어요. 그 두 속성은 Identifier_Status와 Identifier_Type이에요. Perl은 현재 이것들로 별것을 하지 않고, 정규식에서 쓸 수 있게만 해줘요.)
곧 XID_Start와 XID_Continue에 매치하지만 \w에는 맞지 않는 문자 14개가 있다는 걸 발견했어요. 오랫동안 \w에 의존해 온 코드를 깨뜨리지 않기 위해, 그것들을 허용 식별자 문자 목록에 추가하지 않기로 했어요.
\w에 맞지만 Unicode XID 속성에는 맞지 않는 문자는 약 160개로 밝혀졌어요. 따라서 Unicode에 따르면 불법이에요. 그것들이 이제 Perl 식별자와 정규식 그룹 이름 모두에서 명시적으로 금지돼요. 이전에는 식별자에서의 사용이 어차피 동작하지 않았을 가능성이 높았어요. 처음엔 합법으로 받아들여질 수 있지만 나중에 다른 코드가 거부하되 기본 문제와 무관한 메시지로 거부했어요. 그러나 정규식 패턴의 그룹 이름은 불법 연속 문자를 포함할 수 있고 잡히지 않을 확률이 더 높았어요. 이제 바뀌었어요.
use utf8를 쓰는 프로그램만 영향을 받고, 그것도 이름의 2번째 이후 위치에 나타나는 문자만 영향을 받아요. 식별자 이름이 시작할 수 있는 문자는 바뀌지 않았어요.
이제 허용되지 않는 문자 130개는 CIRCED LATIN CAPITAL LETTER N 같은 어떤 모양으로 둘러싸인 라틴 문자 26개의 5개 세트예요. 또 8개는 다른 문자 주위에 모양을 더하는 일반 수정자이고, 5개는 키릴 숫자의 수정자, 16개는 아랍어 합자와 독립 형태예요. 나머지 둘은 GREEK YPOGEGRAMMENI와 VERTICAL TILDE예요.
폐기 (Deprecations)
- 5.12부터 deprecated 됐던,
goto로 루프나 다른 블록 구조체의 본문 안으로 바깥에서 점프하는 것이 더 이상 허용되지 않아요. m/...[...].../xx에 새 제약 —/xx수정자로 컴파일되는 정규식 대괄호 문자 클래스에서 이스케이프되지 않은#나 리터럴 수직 공백을 사용하는 것이 이제 deprecated 돼요. 여전히 동작하지만 deprecation 경고가 나요:#는 백슬래시로 이스케이프 (m/ [ % \# ( ) ] /xx)- 리터럴 수직 공백 대신
\n같은 구조체 사용
성능 개선 사항 (Performance Enhancements)
- 오버플로하지 않는 단순 정수 덧셈(
+), 뺄셈(-), 곱셈(*)이, 충분한 C 컴파일러 지원이 있다면, 약간 빨라짐. - 키가 컴파일 타임에 알려진 상수 문자열 피연산자일 때 키/값 쌍 리스트로부터 해시를 채우는 것이 흔히 더 빨라짐.
signatures피처 하에서 서브루틴 시작의 시그니처 처리가 런타임에 더 효율적.
모듈과 프라그마 (Modules and Pragmata)
업그레이드된 모듈들: Archive::Tar 3.12 (CVE-2026-9538, CVE-2026-42496, CVE-2026-42497 수정), attributes 0.37, B 1.92, B::Concise 1.012, B::Deparse 1.89, charnames 1.51, Compress::Raw::Bzip2 2.218, Compress::Raw::Zlib 2.222, Config::Perl::V 0.39, CPAN::Meta 2.150013, CPAN::Meta::Requirements 2.145, DB_File 1.860, Encode 3.24, English 1.12, Errno 1.39, experimental 0.036, ExtUtils::CBuilder 0.280243, ExtUtils::MakeMaker 7.78, ExtUtils::Miniperl 1.15, ExtUtils::ParseXS 3.63, ExtUtils::Typemaps 3.63, feature 2.02, File::Copy 2.43, File::Fetch 1.08, File::Glob 1.44, File::Spec 3.95, File::stat 1.15, File::Temp 0.2312, Filter::Simple 0.97, Filter::Util::Call 1.65, Getopt::Std 1.15, HTTP::Tiny 0.096 (CVE-2026-7010, CVE-2026-7017 수정), IO 1.56, IO::Compress 2.223 (CVE-2025-15649, CVE-2026-48961, CVE-2026-48962, CVE-2026-48959 수정), IO::Socket::IP 0.44, Math::BigInt 2.005003, Module::CoreList 5.20260708, Module::Metadata 1.000039, mro 1.30, Net::Ping 2.77, Opcode 1.71, overloading 0.03, PerlIO::via 0.21, Pod::Html 1.36, Pod::Simple 3.48, POSIX 2.26, Scalar::Util 1.70, SelectSaver 1.03, SelfLoader 1.29, Socket 2.041 (CVE-2026-12087 수정), Storable 3.41 (CVE-2026-57433 수정), Term::Table 0.028, Test::Harness 3.52, Test::Simple 1.302219, Text::Balanced 2.07, threads 2.45, threads::shared 1.73, Time::HiRes 1.9780, Time::Piece 1.41, Unicode::UCD 0.83, UNIVERSAL 1.18, utf8 1.29, version 0.9934, warnings 1.78, XS::APItest 1.50, XS::Typemap 0.22.
문서 (Documentation)
- perlapi: 문서 자동 생성이 소스 코드의 줄 번호를 포함하게 됨. 어떤 Perl 릴리스가 API 요소를 처음 포함했는지 찾는 방법 정보 추가.
- perlexperiment: "New object system and
classsyntax" 새 항목. - perlxs: Perl XS 코드 작성 참조 매뉴얼이 완전히 재작성·현대화됨. 기존 파일의 약 두 배 크기이며 ANSI 시그니처 같은 더 현대적인 XS 문법을 권장.
진단 (Diagnostics)
바뀐 진단
Use of uninitialized value%s— 이진 연산자의 두 피연산자가 모두 초기화되지 않은 값일 때 경고가 역순(오른쪽에서 왼쪽)으로 발행됐는데, 피연산자 평가 순서와 일관되게 고쳐졌어요.- UTF-8 인코딩 문자를 구성해야 하지만 어떤 면에서 잘못된 바이트 시퀀스에 대한 특정 진단이 이제 그 판단과 무관한 바이트를 포함하지 않아요. 예:
Malformed UTF-8 character: \xc1\x27→\xc1만 표시. - 오류
Unrecognised parameters for "%s" constructor: %s→Unrecognized parameters ...로 변경. ^_로 시작하는 변수 이름이 리터럴Ctrl-_(보이지 않는 ASCII 문자)로 잘못 표시되던 것 수정. 캐럿으로 시작하고 두 문자보다 긴 변수 이름은 이제 소스에서처럼 중괄호로 감싸짐. 즉 undefined$ {^_FOO}는 이제Use of uninitialized value $ {^_FOO}로 올바르게 경고.import메서드가 없는 패키지에서import메서드를 호출하면 이제 deprecation 경고·오류가 아니라 일반 경고를 만들어요. 5.39.1부터 인자와 함께 호출 시 deprecation 경고가 났고, 5.43.6에서 오류로 승격됐지만 많은 코드를 깨뜨려 경고로 되돌아갔고 deprecation 상태가 제거됐어요. 범주는missing_import이며 기본 활성화.
새 오류
Can't redeclare catch variable as "%s"— (F)catch블록의 예외 변수에my,our,state키워드가 사용됨:catch (my $e).catch는 자동으로 어휘 선언되는 bare 변수 이름을 받으므로 이는 유효하지 않은 문법.Use of "goto" to jump into a construct is no longer permitted— (F) 루프나 다른 블록 구조체의 본문 안으로 바깥에서goto LABEL;/goto EXPR;을 시도. Perl 5.44부터 예외를 던짐.\x{%X} is a \w char that isn't valid in a name "%s"— 어차피 오류가 났을 대부분의 경우, 이제 문제를 찾는 데 도움이 되는 텍스트 제공.
새 경고
Possible attempt to escape whitespace in qw() list— (W qw)qw()리스트는 공백으로 분리된 항목을 포함. 백슬래시는 공백을 분리에서 "보호"하지 못하고 리터럴 데이터로 취급됨. 이 경고는 백슬래시 뒤에 실제 공백이 올 때만 발행.
구성과 컴파일 (Configuration and Compilation)
- C23
<stdckdint.h>와 연관 매크로가 가능하면 사용됨. - POSIX locale 카테고리 관련 값을
Configure에 전달할 수 있게 되어 크로스 컴파일이 동작.Configure에서 계산을 하는 C 프로그램을 추출해 대상 머신에서 실행 후 그 값을 다른 머신의Configure에 전달. PERL_CREATE_GVSV구성 매크로 제거 — 거의 문서화되지 않았고 Perl 5.10.0부터 기본으로 꺼져 있었음. 모든 GV가 생성 시 SV 슬롯을 초기화하도록 강제하는 용도였음.
테스트 (Testing)
- Karl Williamson이 TPRC 2025에서 더 이상 문제가 되지 않는 옛 이슈를 찾는 테스트와 알려진 잔존 버그 재현 케이스용 todo 테스트 기여를 요청하는 발표를 함. 새 저자들의 테스트 제출이 늘었음.
- 임베딩 테스트 시 연결하는
libperl이 빌드하는 perl과 일치하는지 확인하는 sanity check 추가.
플랫폼 지원 (Platform Support)
- Windows:
USE_IMP_SYS는 정의되고USE_ITHREADS는 정의되지 않은 빌드 수정. - OpenBSD: 임베딩 테스트 시 올바른 정적 libperl과 연결.
- AIX: 모든 릴리스에서 스레드 안전 locale 처리가 기본 OS 지원 버그로 꺼짐. AIX 7.2/7.3용 ibm-clang/ibm-clang_r IBM Open XL C/C++ 컴파일러 지원 (권장 컴파일러).
- z/OS: clang이 유일한 지원 컴파일러. 코어 테스트 스위트에 한 개 테스트 실패 잔존 (F<XS-APItest/t/utf8_warn00.t>의 잘못된 UTF-8 읽기 오지). 일부 코어 포함 cpan 모듈(Encode, ExtUtils-MakeMaker, HTTP-Tiny, IO-Compress, JSON-PP, libnet, MIME-Base64, PerlIO-via-QuotedPrint, Pod-Checker, podlators, Pod-Simple)에 알려진 문제. z/OS ASCII 모드 perl용 오픈 소스 프로젝트
https://github.com/zopencommunity/perlport존재.
내부 변경 사항 (Internal Changes)
- XS 파서
ExtUtils::ParseXS가 더 재구성됨. 잘못되거나 지원되지 않는 문법을 쓰던 XS 코드에 영향을 줄 수 있음. 몇 가지 버그 수정 포함. - 5.32부터 deprecated 됐던
sv_locking()과sv_unlocking제거. Perl_expected_size가 실험적 stub 매크로로 추가 — 바이트 크기를 넘기면 malloc 구현이 반환할 실제 사용 가능 할당 크기의 최선의 추측을 반환하는 것을 목표.SvPV_shrink_to_cur가 copy-on-write(COW)용 바이트를 포함하도록 수정 — 결과 문자열이 나중에 COW될 수 있음. 메모리 절약이 비현실적이면 재할당하지 않음.sv_vcatpvfn_flags()가 잘못된 입력에 NUL 대신 Unicode REPLACEMENT CHARACTER를 대체.embed.fnc문법 확장 — 파일에 이름이 있는 각 함수foo()에 대해PERL_ARGS_ASSERT_FOO매크로가 생성되고, 기본 sanity checking assert() 호출로 확장. 직접 assert 문 추가 가능.- 새 함수
valid_utf8_to_uv추가 —valid_utf8_to_uvchr와 동의어, 다른 UTF-8 변환 함수 이름과 철자 일관성 위해. newSVsv_flags_NN새 함수 — 새 SV를 만들고 기존 SV의 값을 할당.STATIC_ASSERT_DECL/STATIC_ASSERT_STMT/STATIC_ASSERT_EXPR— 컴파일 타임에 평가되는 assert. 이제 XS 작성자에게 공개.Perl_sv_backoff가 이제SvOK(sv)가 true일 때만 문자열 버퍼 내용을 버퍼 시작으로 이동 — defunct 내용 이동의 불필요한 비용 방지.sv_numeqAPI의 숫자("0+") 오버로딩 관련 버그 수정.sv_numne,sv_numle,sv_numlt,sv_numge,sv_numgt,sv_numcmpAPI 추가 — Perl과 같은 방식(오버로딩 포함)으로 숫자 비교.amagic_callAPI에AMGf_force_scalar(오버로드 호출을 스칼라 컨텍스트로 강제)와AMGf_force_overload(no overloading;컨텍스트에서도 오버로딩 강제) 플래그 추가.SvPCS_IMPORTED()와SvOOK()가 쓰는SvFLAGS비트가 같은 위치로 통합되어 플래그 비트 하나 확보.- 반복 연산자의 승수 피연산자에 상한 적용 —
PERL_FOLD_REPEAT_LIMIT위의 수치 상수이면 상수 폴딩 시도하지 않음. - 전용 체크 함수
Perl_ck_anonhash/Perl_ck_aassign추가, 컴파일 타임에 일부OP_CONST해시 키 hekify. fromCTRL매크로 추가 —toCTRL의 역.toCTRL('A')는 1,fromCTRL(1)은 'A'.Perl_check_hash_fields_and_hekify가 컴파일 타임·런타임 locale이 다를 수 있으면 NV를 HEK로 선제 변환하지 않음.- UTF-8 상수 문자열 해시 키 삽입 시 원래 인코딩 플래그(
HVhek_WASUTF8) 보존. - 상수 IV/NV 해시 키의 수치 값이 deparse에서 유실되던 문제 수정.
- 새 함수
defer_error추가 (컴파일 오류 보고).qerror는 deprecated 별칭. op_clear가 API의 일부가 됨.
선택된 버그 수정 (Selected Bug Fixes)
method시그니처의 보고된 인자 개수가 이제$self를 포함해 정확.- 두 피연산자가 모두 오버로딩된 객체이고 해당 연산자 메서드가 없고
0+메서드가 있고fallback이 TRUE일 때,use integer;가 적용되면0+메서드가 역순으로 호출되던 문제 수정. - v5.42.0에서 두 변수
for루프 관련 일부 구조체가 컴파일러를 크래시시키던 문제 수정:
for my ($x, $y) (Some::Class->foo()) { ... }
# 및 어휘 서브루틴 호출로부터의 리스트 포함
pack/unpack의 여러 오류 조건이 이제 감지됨.- XS의
INTERFACE키워드가 C23과 호환되게 됨. Perl 패키지 이름을 C 타입으로 지원 (Foo::Bar→Foo__Bar자동 변환). &CORE::__CLASS__가 더 이상 잘못된 결과를 반환하지 않음 — 런타임 호출 시&CORE::__CLASS__ cannot be called directly오류를 던짐.parse_subsignature()가 빈 서브루틴 시그니처를 처리 가능.-CA플래그(또는PERL_UNICODE=A)가-s옵션이 만든 전역 변수에도 적용되도록 수정 —-s가 파싱한 옵션도 UTF-8로 취급.- 비ASCII 문자를 쓰는 언어(예: 중국어, Osage)의 식별자 상한이 64자로 제한되던 것을 모든 언어에서 최소 255자로 수정.
use utf8;하의 큰따옴표형 컨텍스트에서 숫자로 시작하는 배열 이름 파싱 수정.use 5.42가 남은 줄(뒤따르는 줄뿐 아니라)에use source::encoding "ascii"를 켜도록 수정.- 5.32.0부터 3항 조건 연산자의 두 번째 분기가 올바른 autovivification 컨텍스트를 얻지 못하던 문제 수정.
- DIE-ing 중에는 구조체로 점프에 대해 경고하지 않음.
- 하위 패턴(예:
(??{...}),(?&FOO))과 cut(예:(?>...))을 모두 포함하는 정규식이 매치 중 다른 코드의 조기 스코프 종료를 일으킬 수 있던 문제 수정. - DB 패키지에서 오버로딩된 값을 위한 오버로드 sub 호출이
DB::sub호출을 낳던amagic_call()의 현재 패키지 검사 수정. - UV 범위에 안 맞는 지나치게 큰 significand를 가진 16진 부동소수점 리터럴 파싱 수정.
- Perl 5.42.0의 일광 절약 시간 전환 처리 회귀 수정 (5.42.1에서) —
POSIX::strftime,my_strftime,sv_strftime_ints,sv_strftime_tm에서 시간/타임존이 한 시간 어긋날 수 있었음. sort()가 비교 블록의 OP 트리 호출 대신 C 함수 호출로 최적화할 때, 비교 오버로드 없이 숫자("0+") 오버로드만 있는 큰 오버로드 정수 인자의 정밀도를 잃던 버그 수정.- 파일핸들 대상으로 쓰이는 스칼라 변수가 출력 중
undef되면 그 스칼라에 가비지 바이트가 남는 문제 수정. - 스칼라 변수가 파일핸들 대상으로 쓰이면서 그 자체에 출력되면 가비지나 세그멘테이션 오류가 날 수 있던 문제 수정 (
open $fh, '>', \$str; print $fh $str;). close(STDOUT)가 파이프로 열린 경우 Windows에서 자식이 종료할 때까지 제대로 기다리게 수정.- 정확히 하나의 값만 반환하지 않는 XSUB를 스칼라 컨텍스트에서 goto로 호출하면 반환 항목 수가 잘못되어 스택 손상 가능 — 수정.
- 디버깅 perl에서 빈 초기화 리스트를 가진 배열 field가 있는 클래스 인스턴스화 시
Perl_av_new_alloc: Assertion 'size > 0' failed오류 — 수정. - 메서드에서 클래스 field에 재할당(reassign)하면 메서드 종료 시 그 field의 SV가 해제될 수 있던 문제 수정 — 다음 접근에서 크래시/assert/임의 데이터 가능성 해결.
알려진 문제 (Known Problems)
없음.
부고 (Obituary)
Matt S. Trout
"WELL VOLUNTEERED!"는 회의실과 IRC 채널에 울려 퍼진 Matt S. Trout의 전투 구호였어요. 망설이던 자원봉사자를 커뮤니티 리더로 바꾼 구호였죠. 깊은 슬픔과 함께 Matt의 별세를 알리게 됐어요. 2000년대 초부터 Matt는 순수한 의지력으로 Perl을 형성했어요 — IRC operator, PAUSE 관리자, Shadowcat Systems 공동 창업자, DBIx::Class 설계자. 그의 의견은 욕설에 휩싸여 최대 볼륨으로 전달됐어요. 그는 바보를 참지 않았고, 때론 사과해야 한다는 걸 깨달았어요. 그러나 이 거친 외피 아래는 멘토링에 대한 열렬한 헌신이 숨어 있었고, 그가 자원봉사하도록 다그친 개발자들은 이제 커뮤니티를 직접 이끌고 있어요. Matt의 의도적으로 머리를 아프게 하는 코드는 Perl을 앞으로 밀었어요. 모든 현대 Perl 개발자는 매일 그의 유산을 만지고 있어요. 잘 자원봉사했어요, Matt. 편히 쉬세요.
감사의 말 (Acknowledgements)
Perl 5.44.0은 Perl 5.42.0 이후 약 12개월의 개발을 대표하며, 71명의 저자가 1,300개 파일에 걸쳐 약 270,000줄의 변경을 담고 있어요. 자동 생성 파일, 문서, 릴리스 도구를 제외하면 860개의 .pm/.t/.c/.h 파일에 약 110,000줄이 변경됐어요. (기여자 명단 생략)
버그 신고 (Reporting Bugs)
버그를 찾으면 https://github.com/Perl/perl5/issues의 perl 버그 데이터베이스에서 확인해 보세요. 신고되지 않은 버그라고 생각되면 작지만 충분한 테스트 케이스로 줄여서 이슈를 열어주세요. 보안 영향이 있는 버그는 perlsec의 SECURITY VULNERABILITY CONTACT INFORMATION을 참고해요.
감사 인사 전하기 (Give Thanks)
Perl 5에 대해 Perl 5 Porters에게 감사를 표하고 싶다면 perlthanks 프로그램을 실행하면 돼요.
SEE ALSO: 변경 사항 상세는 Changes, 빌드 방법은 INSTALL, 일반 사항은 README, 저작권 정보는 Artistic/Copying 파일.