영어프랑스어스페인어

온웍스 파비콘

perl5200delta - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 perl5200delta 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 명령 perl5200delta입니다.

프로그램:

이름


perl5200delta - perl v5.20.0의 새로운 기능

기술


이 문서에서는 5.18.0 릴리스와 5.20.0 릴리스 간의 차이점에 대해 설명합니다.

5.16.0과 같은 이전 릴리스에서 업그레이드하는 경우 먼저 perl5180delta를 읽으십시오.
5.16.0과 5.18.0의 차이점을 설명합니다.

핵심 개선


실험 서브 루틴 서명
인수 목록을 어휘 변수로 풀어내는 선언적 구문입니다. "하위 foo($a,$b)
{...}"는 인수의 개수를 확인하고 인수를 어휘 변수에 넣습니다.
서명은 "sub foo { my($a,$b) = @_; ... }"의 기존 관용구와 동일하지 않습니다.
서명은 기본이 아닌 기능을 활성화해야만 사용할 수 있으며 경고를 생성합니다.
실험적이라는 것에 대해. 프로토타입과의 구문 충돌은
서명이 활성화된 경우 짧은 프로토타입 구문.

자세한 내용은 perlsub의 "서명"을 참조하세요.

"하위" 지금 받아 a "원기" 속성
"sub"를 선언하거나 정의할 때 이제 프로토타입을
이름 뒤에 오는 괄호 대신 "prototype" 속성을 사용합니다.

예를 들어, "sub foo($$){}"는 "sub foo : 프로토타입($$){}"로 다시 작성할 수 있습니다.

더 보기 일관된 프로토 타입 파싱
서브루틴 프로토타입의 여러 세미콜론은 오랫동안 허용되었으며 다음과 같이 처리되었습니다.
단일 세미콜론. 이것이 발생하지 않은 경우가 하나 있었습니다. 서브루틴
"*" 또는 ";*"로 시작하는 프로토타입은 베어워드가 메소드로 간주되는지 여부에 영향을 줄 수 있습니다.
이름 또는 하위 호출. 이는 이제 ";;*"에도 적용됩니다.

서브루틴 프로토타입 내에서는 오랫동안 공백이 허용되었으므로 "sub( $ $ )"는
"sub($$)"와 동일하지만 지금까지는 서브루틴이 구문 분석될 때 제거되었습니다.
따라서 공백은 지원 "Scalar::Util::set_prototype"에 의해 설정된 프로토타입에서 허용됩니다. 지금
이는 허용되며 파서는 더 이상 공백을 제거하지 않습니다. 이는 "시제품"을 의미합니다.
&mysub"는 원래 프로토타입, 공백 및 모두를 반환합니다.

"랜드" 지금 사용 a 일관된 닥치는대로의 번호 발전기
이전에 Perl은 플랫폼별 난수 생성기를 사용했습니다.
libc의 랜드(), 랜덤 () or 드랜드48().

이는 Perl의 난수 품질이 플랫폼마다 다르다는 것을 의미합니다.
15비트 중에서 랜드() Windows에서는 Linux와 같은 POSIX 플랫폼에서는 48비트로
드랜드48().

Perl은 이제 자체 내부를 사용합니다. 드랜드48() 모든 플랫폼에서 구현. 이것은 그렇지 않습니다
Perl의 "rand"를 암호학적으로 안전하게 만듭니다. [펄 #115928]

신제품 일부분 구문
새로운 %hash{...} 및 %array[...] 구문은 키/값(또는 인덱스/값) 목록을 반환합니다.
한 쌍. perldata의 "키/값 해시 슬라이스"를 참조하세요.

실험 후위 역참조
"postderef" 기능이 활성화되면 다음과 같은 구문적 동등성이 설정됩니다.
쪽으로:

$sref->$*; # ${ $sref }와 동일 # 보간
$aref->@*; # @{ $aref }와 동일 # 보간
$href->%*; # %{ $href }와 동일
$cref->&*; # &{ $cref }와 동일
$gref->**; # *{ $gref }와 동일

$aref->$#*; # $#{ $aref }와 동일

$gref->*{ $슬롯 }; # *{ $gref }{ $slot }과 동일

$aref->@[ ... ]; # @$aref[ ... ] 와 동일 # 보간
$href->@{ ... }; # @$href{ ... }와 동일 # 보간
$aref->%[ ... ]; # %$aref[ ... ]와 동일
$href->%{ ... }; # %$href{ ... }와 동일

보간으로 표시된 것은 연관된 "postderef_qq" 기능이 다음인 경우에만 보간됩니다.
또한 활성화되었습니다. 이 기능은 실험 그리고 트리거됩니다
억제되지 않는 한 "experimental::postderef" 카테고리 경고가 사용됩니다.

자세한 내용은 perlref의 후위 역참조 구문 섹션을 참조하세요.

유니 코드 6.3 지금 되지 않습니다.
Perl은 이제 Unicode 6.3을 지원하고 함께 제공됩니다(Perl은 다른 버전으로 다시 컴파일될 수 있음).
이전 유니코드 릴리스도 마찬가지입니다). 유니코드 6.3 변경 사항의 자세한 목록은 다음을 참조하세요.
<http://www.unicode.org/versions/Unicode6.3.0/>.

신제품 "\p{유니코드}" 정규병 표현 무늬 재산
이는 "\p{Any}"의 동의어이며 유니코드 정의 코드 포인트 0 - 집합과 일치합니다.
0x10FFFF.

더 나은 64-bit SUPPORT
64비트 플랫폼에서 내부 배열 기능은 이제 64비트 오프셋을 사용하여 Perl을 허용합니다.
사용 가능한 메모리가 있는 경우 2**31개 이상의 요소를 보유할 수 있는 배열입니다.

정규식 엔진은 이제 2**31자보다 긴 문자열을 지원합니다. [펄
#112790, #116907]

이제 PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt 및 PerlIO_set_ptrcnt 함수
int가 아닌 SSize_t를 사용하여 값과 매개변수를 반환합니다.

"사용하다 장소" 지금 on UTF-8 지방의
이번 릴리스까지는 ISO 8859 시리즈와 같은 단일 바이트 로케일만 지원되었습니다.
이제 점점 더 일반화되는 멀티바이트 UTF-8 로캘도 지원됩니다. UTF-8 로케일
문자 집합이 유니코드이고 인코딩이 UTF-8인 것입니다. POSIX
"LC_CTYPE" 범주 작업(대소문자 변경(예: "lc()", "\U") 및 문자
이러한 로캘에서 분류("\w", "\D", "qr/[[:punct:]]/"))는 그렇지 않은 것처럼 작동합니다.
로케일 아래에 있지만 대신에 오염 규칙을 제외하고 "'unicode_strings' 기능 사용" 아래에 있는 것처럼 보입니다.
따라옵니다. 이번 릴리스에서는 정렬이 코드 포인트 순서로 유지됩니다. [펄 #56820].

"사용하다 장소" 지금 컴파일 on 시스템 없이 장소 능력
이전에는 이렇게 하면 프로그램이 컴파일되지 않았습니다. 해당 범위 내에서 프로그램
"C" 로캘에 있는 것처럼 동작합니다. 따라서 로케일을 지원하는 플랫폼용으로 작성된 프로그램
변경 없이 로케일 없는 플랫폼에서 실행될 수 있습니다. 로케일을 다른 곳으로 변경하려고 시도합니다.
물론 "C" 로캘은 실패합니다.

더 보기 장소 초기화 대체 옵션
Perl 시작 중 로케일에 오류가 있으면 즉시 포기하고 시도했습니다.
"C" 로케일을 사용합니다. 이제 먼저 환경에서 제공하는 다른 로케일을 사용해 봅니다.
perllocale의 "ENVIRONMENT"에 자세히 설명된 변수입니다. 예를 들어, "LC_ALL"이고
"LANG"이 둘 다 설정되어 있고 "LC_ALL" 로케일 사용이 실패하면 Perl은 이제 "LANG"을 시도합니다.
로케일이며, 실패하는 경우에만 "C"로 대체됩니다. Windows 시스템에서 Perl은
환경에서 제공하는 모든 로캘이 있는 경우 시스템 기본 로캘인 "C"를 사용하기 전에 시도해 보세요.
변수가 실패합니다.

"-DL" 런타임 선택권 지금 추가 for 트레이싱 장소 설정
이는 Perl 핵심 개발자가 다음과 관련된 현장 디버깅 버그를 돕기 위해 설계되었습니다.
지방의

-F 지금 의미하다 -a -a 의미하다 -n
이전 -F 없이 -a 무작동이었고, -a 없이 -n or -p 아무 일도 일어나지 않았어, 이걸로
변경(제공하는 경우) -F 그럼 둘 다 -a-n 암시적이며 귀하가 제공하는 경우 -a 그때 -n is
암시.

여전히 사용할 수 있습니다. -p 추가 행동 때문에. [펄 #116190]

$a $b 경고 면제
"정렬"에 사용된 특수 변수 $a 및 $b는 이제 "한 번 사용됨" 경고에서 제외됩니다.
"정렬"이 사용되지 않는 경우에도 마찬가지입니다. 이를 통해 CPAN 모듈이 기능을 더 쉽게 제공할 수 있습니다.
비슷한 목적으로 $a와 $b를 사용합니다. [펄 #120462]

보안


피하 가능한 읽기 of 무료()d 기억 ...동안 파싱
그럴 수도 있었어 무료()d 메모리는 비정상적인 구문 분석 중에 읽을 수 있습니다.
heredoc과 파일의 마지막 줄로 끝나는 Perl 프로그램의 상황
종료 개행 문자가 없는 디스크. 이제 이 문제가 해결되었습니다.

호환되지 않는 변경


"하다" 아니 이상 be 익숙한 전화 서브 루틴
Perl v5.0.0부터 "do SUBROUTINE(LIST)" 형식으로 인해 사용 중단 경고가 발생했습니다.
이제 구문 오류가 발생했습니다.

인용문 같은 탈출 변경
큰따옴표로 묶인 문자열("..." 또는 qq(...))에서 "\c" 뒤의 문자 또는 일반
이제 표현식은 인쇄 가능한 문자여야 하며 "{"가 될 수 없습니다.

"\B" 또는 "\b" 뒤의 리터럴 "{"는 이제 치명적입니다.

이는 Perl v5.14.0에서 더 이상 사용되지 않습니다.

오염 발생 아래에 배우기 상황; 지금 따르다 선적 서류 비치
이는 정규식 일치 및 문자열("lc", "\U",
.) "로케일 사용" 범위 내에서. 이제 결과는 작업에 따라 오염됩니다.
문서(perlsec, "SECURITY"
perllocale)은 그래야 함을 나타냅니다. 이전에는 대소문자 변경 작업의 경우
문자열에 로케일의 영향을 받을 수 있는 대소문자 변경 문자가 포함되어 있지 않습니다.
결과는 오염되지 않을 것입니다. 예를 들어, 빈 문자열에 대한 "uc()"의 결과 또는
위의 Latin1 코드 포인트만 포함하는 것은 이제 오염되었으며 이전에는 그렇지 않았습니다. 이로 인해
보다 일관된 오염 결과. 정규식 패턴은 바이너리가 아닌 패턴을 오염시킵니다.
패턴에 일치 항목이 의존하는 요소가 포함된 경우에만 결과(예: $&, $2)
현재(잠재적으로 오염된) 로케일에서. 케이스 변경 기능과 마찬가지로 실제
일치하는 문자열의 내용은 이전에는 중요했지만 지금은 중요하지 않습니다. 을 위한
예를 들어, 패턴에 "\w"가 포함되어 있으면 일치 항목이 있더라도 결과가 오염됩니다.
성공하거나 실패하기 위해 패턴의 해당 부분을 사용할 필요는 없습니다. 왜냐하면 "\w"
일치하는 항목은 로케일에 따라 다릅니다. 그러나 예를 들어 "." 패턴에서는 활성화되지 않습니다
오염(점은 단일 문자와 일치하고 현재 로케일이 무엇인지)
무엇이 일치하고 무엇이 일치하지 않는지는 전혀 변하지 않습니다.

"\피{}", "\피{}" 어울리는 변경 for 비유니코드 암호 포인트.
"\p{}" 및 "\P{}"는 유니코드 정의 코드 포인트("U+0000")에서만 유니코드로 정의됩니다.
"U+10FFFF"를 통해). 이러한 합법적인 유니코드 코드 포인트를 일치시키는 동작은 다음과 같습니다.
변경되지 않았지만 코드 포인트 0x110000 이상에 대한 변경 사항이 있습니다. 예전에는 펄
"\p{}" 및 "\P{}"를 이에 대해 일치시킨 결과를 "undef"로 처리했습니다.
"거짓"으로 번역됩니다. "\P{}"의 경우 이는 "true"로 보완되었습니다. 경고
이 일이 발생했을 때 제기되어야했습니다. 그러나 다양한 최적화가 가능합니다.
경고를 방지했으며 결과는 일치와 일치 모두에서 직관에 반하는 경우가 많았습니다.
그것의 보완적인 것처럼 보이는 것은 거짓입니다. 이제 유니코드가 아닌 모든 코드 포인트는 다음과 같이 처리됩니다.
일반적인 할당되지 않은 유니코드 코드 포인트입니다. 이것은 일반적으로 Do-What-I-Mean에 더 가깝습니다. 경고
결과가 엄격한 유니코드 접근 방식과 확실히 다른 경우에만 발생합니다.
Perl이 하던 일로부터. 엄격하게 유니코드와 호환되어야 하는 코드는 다음을 만들 수 있습니다.
경고가 치명적이면 Perl은 항상 경고를 발생시킵니다.

자세한 내용은 perlunicode의 "유니코드 코드 포인트 너머"에 있습니다.

"\물리다}" 확대하는 일치 모든 가능한 암호 전철기
CPAN에서 사용되지 않는 Perl 정의 정규식 패턴 요소 "\p{All}"은
유니코드 코드 포인트만 일치시킵니다. 이제 가능한 모든 코드 포인트와 일치합니다. 즉, 그것은
"qr/./s"와 동일합니다. 따라서 "\p{All}"은 더 이상 "\p{Any}"와 동의어가 아닙니다.
유니코드에서 요구하는 대로 유니코드 코드 포인트와 계속해서 일치합니다.

데이터::덤퍼의 출력 5월 이전 단계로 돌아가기
덤프된 데이터 구조와 Data::Dumper에 대해 설정된 설정에 따라 덤프된
이전 버전에서 출력이 변경되었을 수 있습니다.

Data::Dumper의 정확한 출력에 의존하는 테스트가 있는 경우 실패할 수 있습니다.

코드에서 이 문제를 방지하려면 평가에서 데이터 구조에 대해 테스트하십시오.
덤프 자체가 아닌 덤프된 구조입니다.

장소 소수 포인트 문자 아니 이상 누출 외부 of "사용하다 장소" 범위
이것은 실제로 버그 수정이지만 일부 코드는 존재하는 버그에 의존하게 되었기 때문에
이 변경 사항은 여기에 나열되어 있습니다. 프로그램이 실행되는 현재 로캘이 다음과 같습니다.
"사용 로케일" 범위 내를 제외하고는 Perl 코드에 표시되어야 합니다. 하지만,
지금까지 특정 상황에서 소수점(종종
쉼표)가 범위 외부로 유출되었습니다. 귀하의 코드가 이 변경 사항의 영향을 받는 경우 간단히
"로케일 사용".

할당 of Windows 소켓 오류 코드 $! 지금 취하다 오류 번호.h 위에
WSAGetLastError()
이전 버전의 Perl에서는 Windows 소켓 오류 코드가 반환되었습니다. WSAGetLastError()
$!에 할당되었으며 ECONNABORTED와 같은 일부 상수는 오류 번호.h VC++(또는
gcc의 다양한 Windows 포트)는 해당 WSAE* 값으로 정의되어 $!
Errno 및 POSIX에서 내보낸 E* 상수에 대해 테스트됩니다.

이는 값이 있는 새로운 E* 상수를 도입한 VC++ 2010 이상까지 잘 작동했습니다.
> 100으로 오류 번호.h, 일부는 Perl에 의해 WSAE* 값으로 (재)정의되는 것을 포함합니다. 그로 인해
원래 정의를 사용한 다른 라이브러리에 XS 코드를 연결할 때 발생하는 문제
of 오류 번호.h 상수.

이러한 비호환성을 피하기 위해 Perl은 이제 WSAE* 오류 코드를 E* 값에 매핑합니다.
가능하며 해당 값을 $!에 할당합니다. Errno 및 POSIX에서 내보낸 E* 상수
일치하도록 업데이트되어 $! 이전에 가능했던 곳에서는 그들에 대항하여
예상대로 계속 작동하고 모든 E* 상수는 오류 번호.h 이제 다음에서 수출됩니다.
원본이 있는 모듈 오류 번호.h values.

WSAE* 값을 $!에 할당하는 기존 Perl 코드의 손상을 방지하기 위해 perl
이제 할당을 가로채고 사용하는 것과 동일한 E* 값에 대한 매핑을 수행합니다.
내부적으로 $! 그 자체.

그러나 한 가지 이전 버전과의 비호환성이 남아 있습니다. 즉, $!를 비교하는 기존 Perl 코드입니다.
이전에 $!에 할당된 WSAE* 오류 코드의 숫자 값에 대해!
이제 해당 E* 값이 할당된 경우 깨집니다.
대신에. 이는 항상 다음에서 내보낸 E* 값 < 100에 대한 문제일 뿐입니다.
원래의 Errno 및 POSIX 오류 번호.h 값이므로 다음 용도로 사용할 수 없습니다.
WSAE* 오류 코드 테스트(예: WSAEINVAL은 10022이지만 해당 EINVAL은 22). (이자형*
100보다 큰 값(있는 경우)은 어쨌든 WSAE* 값으로 재정의되었으므로 호환성이 있을 수 있습니다.
이 변경 전후에 모두 작동하는 E* 상수를 사용하여 달성됩니다.
비록 내부적으로는 다른 숫자 값을 사용하고 있지만)

기능 "PerlIO_vsprintf" "PerlIO_sprintf" 있다 제거
문서화되지 않았고 CPAN에서 사용되지 않으며 문제가 있는 이 두 기능은 제거되었습니다.

지원 중단


이 어플리케이션에는 XNUMXµm 및 XNUMXµm 파장에서 최대 XNUMXW의 평균 출력을 제공하는 "/\씨/" 문자 수업
"/\C/" 정규식 문자 클래스는 더 이상 사용되지 않습니다. Perl 5.22부터는
경고를 생성하고 Perl 5.24부터는 정규식이 됩니다.
컴파일러 오류. UTF8로 인코딩된 파일을 구성하는 개별 바이트를 검사해야 하는 경우
문자를 입력한 다음 먼저 문자열(또는 복사본)에 "utf8::encode()"를 사용하세요.

정확한 제어 문자 in 변수 이름
이러한 지원 중단은 $\cT와 같은 항목에 영향을 미칩니다. 여기서 \cT는 문자 그대로의 컨트롤(예: "NAK")입니다.
또는 "NEGATIVE ACKNOWLEDGE" 문자)를 소스 코드에 포함해야 합니다. 놀랍게도 그런 것 같다.
원래 이것은 $^T와 같은 변수에 액세스하는 정식 방법으로 의도되었습니다.
캐럿 형식은 대안으로만 추가됩니다.

리터럴 제어 형식은 두 가지 주요 이유로 더 이상 사용되지 않습니다. 가능성이 있는 내용이 있습니다.
$\cI가 $^I의 별칭으로 작동하지 않고 사용법이
비ASCII 플랫폼으로 이식 가능: $^T는 모든 곳에서 작동하지만 \cT는 공백입니다.
EBCDIC. [펄 #119123]

참고자료 정수가 아닌 것 비양성 정수 in $/
$/를 XNUMX에 대한 참조 또는 음의 정수에 대한 참조로 설정하는 것은 이제 더 이상 사용되지 않습니다.
그리고 행동할 것이다 정확하게 마치 "undef"로 설정된 것처럼 말이죠. 후루룩거리는 행동 세트를 원하는 경우
$/를 명시적으로 "undef"로 설정합니다.

$/를 정수가 아닌 참조로 설정하는 것은 이제 금지되며 오류가 발생합니다. 펄
이 맥락에서 그리고 그것이 행동하는 동안 어떤 일이 일어날 것인지 문서화한 적이 없습니다.
나중에 참조 주소에 $/를 설정하는 것과 마찬가지로 다르게 동작할 수 있습니다.
그래서 우리는 이 사용을 금지했습니다.

캐릭터 어울리는 루틴 in POSIX
"POSIX" 모듈에서 다음 함수는 이제 더 이상 사용되지 않습니다: "isalnum",
"isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace",
"isupper" 및 "isxdigit". 함수에 버그가 있으며 UTF-8로 인코딩된 경우 작동하지 않습니다.
문자열. 자세한 내용은 POSIX의 해당 항목을 참조하세요.

코드의 각 위치에서 해당 항목을 처음 호출하면 경고가 발생합니다.
호출됩니다. (따라서 루프에서 반복되는 문은 하나의 경고만 발생시킵니다.)

통역사 기반 스레드 are 지금 낙담 한
Perl이 제공하는 "인터프리터 기반 스레드"는 빠르고 가벼운 시스템이 아닙니다.
기대하거나 바랄 수 있는 멀티태스킹. 스레드는 다음과 같은 방식으로 구현됩니다.
오용하기 쉽게 만드세요. 올바르게 사용하는 방법을 알고 있거나 사용할 수 있는 사람은 거의 없습니다.
도움을 제공하십시오.

Perl에서 인터프리터 기반 스레드를 사용하는 것은 공식적으로 권장되지 않습니다.

모듈 제거
다음 모듈은 향후 릴리스의 핵심 배포판에서 제거될 예정입니다.
그 때에는 CPAN에서 설치해야 합니다. 필요한 CPAN 배포판
이러한 모듈은 이를 전제 조건으로 나열해야 합니다.

이러한 모듈의 핵심 버전은 이제 "더 이상 사용되지 않음" 범주 경고를 발행하여 경고합니다.
당신은 이 사실에 대해 이러한 지원 중단 경고를 음소거하려면 해당 모듈을 설치하십시오.
CPAN에서.

코어에서 이러한 모듈을 제거할 계획은 판단을 반영하지 않습니다.
코드의 품질에 관한 것이므로 해당 코드를 사용한다는 제안으로 받아들여서는 안 됩니다.
중지되었습니다. 핵심에서 제외되는 것은 주로 부트스트래핑의 필요성에 달려 있습니다.
디자인에 대한 걱정 없이 완전한 기능을 갖춘 CPAN 가능 Perl 설치입니다.

CGI 및 관련 CGI:: 패키지
Inc::최신
패키지::상수
모듈::빌드 및 관련 모듈::빌드:: 패키지

유틸리티 제거
다음 유틸리티는 향후 릴리스의 핵심 배포판에서 제거될 예정입니다.
그 때에는 CPAN에서 설치해야 합니다.

find2perl
s2p
a2p

퍼포먼스 개선


· Perl에는 내부 파일을 복사할 필요가 없는 새로운 쓰기 중 복사 메커니즘이 있습니다.
한 스칼라에서 다른 스칼라로 할당할 때 문자열 버퍼입니다. 이렇게 하면 복사 용량이 커집니다.
문자열이 훨씬 빠르게 나타납니다. 두 개 이상의 문자열 중 하나를 수정합니다.
할당하면 내부적으로 복사본이 강제로 생성됩니다. 이렇게 하면 문자열을 전달할 필요가 없습니다.
효율성을 위한 참고 자료입니다.

이 기능은 5.18.0에서 이미 사용 가능했지만 기본적으로 활성화되지 않았습니다. 그것은
이제 기본값이므로 더 이상 다음을 사용하여 Perl을 빌드할 필요가 없습니다. 구성 논의:

-Accflags=-DPERL_NEW_COPY_ON_WRITE

다음을 사용하여 Perl 빌드에서 (지금은) 비활성화할 수 있습니다.

-Accflags=-DPERL_NO_COW

일부 운영 체제에서는 Perl을 다음과 같은 방식으로 컴파일할 수 있습니다.
여러 SV가 공유하는 문자열 버퍼를 수정하면 충돌이 발생합니다. XS 작성자가 테스트할 수 있는 방법은 다음과 같습니다.
해당 모듈이 쓰기 중 복사 스칼라를 올바르게 처리하는지 확인하세요. "쓰기 시 복사"를 참조하세요.
자세한 내용은 perlguts를 참조하세요.

· Perl에는 정규식 패턴에 대한 최적화 프로그램이 있습니다. 패턴을 분석하여
문자열이 일치해야 하는 최소 길이 등과 같은 항목을 찾습니다. 이제
Latin1 범위보다 높은 코드 포인트를 더 잘 처리합니다.

· "^" 앵커(또는 "/m" 플래그 아래의 변형)를 포함하는 정규식 실행
여러 상황에서 훨씬 더 빨라졌습니다.

· 이제 미리 계산된 해시 값이 메서드 조회 중에 더 많은 위치에서 사용됩니다.

· 지속적인 해시 키 조회($hash{$key}와 반대되는 $hash{key})는 오랫동안
조회 속도를 높이기 위해 컴파일 타임에 계산된 내부 해시 값입니다. 이 최적화
이제는 해시 슬라이스에도 적용되었습니다.

· "and"와 "or"를 결합한 연산자("unless"에 대해 생성된 것과 같은)
($a && $b)" 및 "if ($a || b)"는 이제 명령문의 끝으로 직접 단락됩니다.
[펄 #120128]

· 특정 상황에서 "return"이 서브루틴 메인의 마지막 문인 경우
범위가 최적화될 것입니다. 이는 다음과 같은 코드를 의미합니다.

하위 baz { $cat 반환; }

이제 다음과 같이 동작합니다:

하위 baz { $cat; }

특히 더 빠릅니다.

[펄 #120765]

· 다음과 같은 코드:

내 $x; # 또는 @x, %x
내 $y;

이제 다음과 같이 최적화되었습니다.

내 ($x, $y);

v5.18.0에 도입된 패드레인지 최적화와 결합하면 이는 더 긴 시간을 의미합니다.
초기화되지 않은 내 변수 문도 최적화되어 있으므로 다음과 같습니다.

내 $x; 내 @y; 내 %z;

다음과 같이됩니다.

내 ($x, @y, %z);

[펄 #121077]

· 배열 및 해시 슬라이스를 포함한 특정 종류의 목록 생성이 이제 가능해졌습니다.
빠릅니다.

· 이제 작은 상수 정수로 인덱싱된 배열에 대한 최적화가 적용됩니다.
128..127가 아닌 -0..255 범위의 정수입니다. 이렇게 하면 Perl 코드 속도가 빨라집니다.
$x[-1]과 같은 표현식을 사용하는 대신 (아마도 훨씬 더 드물지만) 코드를 사용하는 대신
$x[200]과 같은 표현.

· 대규모 해시("키" 또는 "각각" 사용)에 대한 첫 번째 반복이 이제 더 빨라졌습니다. 이것은
게으르지 않고 해시의 내부 반복자 상태를 사전 할당하여 달성됩니다.
해시가 처음 반복될 때 생성됩니다. (작은 해시의 경우 반복자는 여전히
처음 필요할 때만 생성됩니다. 가정은 작은 해시가 더 가능성이 높다는 것입니다.
객체로 사용되므로 할당되지 않습니다. 큰 해시의 경우에는 그보다 적습니다.
사실일 가능성이 높으며 반복자를 할당하는 비용은
해시 자체에 공간을 할당합니다.)

· "readline" 또는 "<>"에서 나온 문자열에 대해 전역 정규식 일치를 수행하는 경우
연산자를 사용하면 데이터가 더 이상 불필요하게 복사되지 않습니다. [펄 #121259]

· 이제 $obj가
오버로드된 메서드가 있지만 어떤 것도 오버로드하지 않는 클래스의 인스턴스
"@{}", "%{}" 등의 메서드를 역참조합니다.

· Perl의 최적화 프로그램은 더 이상 특정 "eval {}" 뒤에 오는 최적화 코드를 건너뛰지 않습니다.
표현식(명백한 무한 루프가 있는 표현식 포함).

· 이제 구현은 런타임에 의미 없는 작업을 피하는 작업을 더 잘 수행합니다.
내부 효과가 없는 "null" 작업(Perl 구문 분석의 부작용으로 생성됨)
프로그램)은 일반적으로 컴파일 중에 삭제됩니다. 해당 삭제는 이제 다음에 적용됩니다.
이전에 처리되지 않았던 일부 상황.

· Perl은 이제 다음을 포함하는 유니코드 속성을 처리할 때 더 적은 디스크 I/O를 수행합니다.
세 가지 범위의 연속 코드 포인트.

모듈 프라그 마타


신제품 모듈 프라그 마타
· 실험용 0.007이 Perl 코어에 추가되었습니다.

· IO::Socket::IP 0.29가 Perl 코어에 추가되었습니다.

업데이트 모듈 프라그 마타
· Archive::Tar가 버전 1.90에서 1.96로 업그레이드되었습니다.

· arybase가 버전 0.06에서 0.07로 업그레이드되었습니다.

· 속성::Handlers가 버전 0.94에서 0.96로 업그레이드되었습니다.

· 속성이 버전 0.21에서 0.22으로 업그레이드되었습니다.

· autodie가 버전 2.13에서 2.23으로 업그레이드되었습니다.

· AutoLoader가 버전 5.73에서 5.74로 업그레이드되었습니다.

· autouse가 버전 1.07에서 1.08로 업그레이드되었습니다.

· B가 버전 1.42에서 1.48로 업그레이드되었습니다.

· B::Concise가 버전 0.95에서 0.992으로 업그레이드되었습니다.

· B::Debug가 버전 1.18에서 1.19으로 업그레이드되었습니다.

· B::Deparse가 버전 1.20에서 1.26으로 업그레이드되었습니다.

· 기본 버전이 2.18에서 2.22로 업그레이드되었습니다.

· 벤치마크가 버전 1.15에서 1.18로 업그레이드되었습니다.

· bignum이 버전 0.33에서 0.37로 업그레이드되었습니다.

· 잉어가 버전 1.29에서 1.3301으로 업그레이드되었습니다.

· CGI가 버전 3.63에서 3.65로 업그레이드되었습니다. 참고: CGI는 더 이상 사용되지 않으며
Perl의 향후 버전에서는 제거되었습니다.

· charnames가 버전 1.36에서 1.40으로 업그레이드되었습니다.

· Class::Struct가 버전 0.64에서 0.65로 업그레이드되었습니다.

· Compress::Raw::Bzip2가 버전 2.060에서 2.064으로 업그레이드되었습니다.

· Compress::Raw::Zlib가 버전 2.060에서 2.065으로 업그레이드되었습니다.

· Config::Perl::V가 버전 0.17에서 0.20로 업그레이드되었습니다.

· 상수가 버전 1.27에서 1.31로 업그레이드되었습니다.

· CPAN이 버전 2.00에서 2.05로 업그레이드되었습니다.

· CPAN::Meta가 버전 2.120921에서 2.140640으로 업그레이드되었습니다.

· CPAN::Meta::Requirements가 버전 2.122에서 2.125로 업그레이드되었습니다.

· CPAN::Meta::YAML이 버전 0.008에서 0.012로 업그레이드되었습니다.

· 데이터::Dumper가 버전 2.145에서 2.151로 업그레이드되었습니다.

· DB가 버전 1.04에서 1.07로 업그레이드되었습니다.

· DB_File이 버전 1.827에서 1.831로 업그레이드되었습니다.

· DBM_Filter가 버전 0.05에서 0.06로 업그레이드되었습니다.

· 더 이상 사용되지 않는 버전이 0.02에서 0.03으로 업그레이드되었습니다.

· Devel::Peek이 버전 1.11에서 1.16로 업그레이드되었습니다.

· Devel::PPPort가 버전 3.20에서 3.21로 업그레이드되었습니다.

· 진단이 버전 1.31에서 1.34로 업그레이드되었습니다.

· Digest::MD5가 버전 2.52에서 2.53로 업그레이드되었습니다.

· Digest::SHA가 버전 5.84에서 5.88로 업그레이드되었습니다.

· DynaLoader가 버전 1.18에서 1.25으로 업그레이드되었습니다.

· 인코딩이 버전 2.49에서 2.60로 업그레이드되었습니다.

· 인코딩이 버전 2.6_01에서 2.12로 업그레이드되었습니다.

· 영어 버전이 1.06에서 1.09로 업그레이드되었습니다.

$OLD_PERL_VERSION이 $]의 별칭으로 추가되었습니다.

· Errno가 버전 1.18에서 1.20_03으로 업그레이드되었습니다.

· 내보내기가 버전 5.68에서 5.70로 업그레이드되었습니다.

· ExtUtils::CBuilder가 버전 0.280210에서 0.280216로 업그레이드되었습니다.

· ExtUtils::Command가 버전 1.17에서 1.18로 업그레이드되었습니다.

· ExtUtils::Embed가 버전 1.30에서 1.32로 업그레이드되었습니다.

· ExtUtils::Install이 버전 1.59에서 1.67으로 업그레이드되었습니다.

· ExtUtils::MakeMaker가 버전 6.66에서 6.98로 업그레이드되었습니다.

· ExtUtils::Miniperl이 버전에서 1.01로 업그레이드되었습니다.

· ExtUtils::ParseXS가 버전 3.18에서 3.24으로 업그레이드되었습니다.

· ExtUtils::Typemaps가 버전 3.19에서 3.24로 업그레이드되었습니다.

· ExtUtils::XSSymSet이 버전 1.2에서 1.3으로 업그레이드되었습니다.

· 기능이 버전 1.32에서 1.36으로 업그레이드되었습니다.

· 필드가 버전 2.16에서 2.17로 업그레이드되었습니다.

· 파일::Basename이 버전 2.84에서 2.85로 업그레이드되었습니다.

· 파일::복사(File::Copy)가 버전 2.26에서 2.29으로 업그레이드되었습니다.

· 파일::DosGlob이 버전 1.10에서 1.12로 업그레이드되었습니다.

· 파일::가져오기가 버전 0.38에서 0.48로 업그레이드되었습니다.

· 파일::찾기가 버전 1.23에서 1.27로 업그레이드되었습니다.

· 파일::Glob이 버전 1.20에서 1.23로 업그레이드되었습니다.

· 파일::Spec이 버전 3.40에서 3.47으로 업그레이드되었습니다.

· 파일::온도가 버전 0.23에서 0.2304로 업그레이드되었습니다.

· FileCache가 버전 1.08에서 1.09로 업그레이드되었습니다.

· 필터::단순이 버전 0.89에서 0.91으로 업그레이드되었습니다.

· Filter::Util::Call이 버전 1.45에서 1.49로 업그레이드되었습니다.

· Getopt::Long이 버전 2.39에서 2.42로 업그레이드되었습니다.

· Getopt::Std가 버전 1.07에서 1.10으로 업그레이드되었습니다.

· Hash::Util::FieldHash가 버전 1.10에서 1.15로 업그레이드되었습니다.

· HTTP::Tiny가 버전 0.025에서 0.043로 업그레이드되었습니다.

· I18N::Langinfo가 버전 0.10에서 0.11로 업그레이드되었습니다.

· I18N::LangTags가 버전 0.39에서 0.40으로 업그레이드되었습니다.

· 버전 0.0602에서 0.0603로 업그레이드된 경우.

· inc::latest가 버전 0.4003에서 0.4205로 업그레이드되었습니다. 참고: inc::latest는
더 이상 사용되지 않으며 Perl의 향후 버전에서는 제거될 수 있습니다.

· 정수가 버전 1.00에서 1.01로 업그레이드되었습니다.

· IO가 버전 1.28에서 1.31로 업그레이드되었습니다.

· IO::Compress::Gzip과 그 친구들이 버전 2.060에서 2.064로 업그레이드되었습니다.

· IPC::Cmd가 버전 0.80에서 0.92으로 업그레이드되었습니다.

· IPC::Open3이 버전 1.13에서 1.16로 업그레이드되었습니다.

· IPC::SysV가 버전 2.03에서 2.04으로 업그레이드되었습니다.

· JSON::PP가 버전 2.27202에서 2.27203으로 업그레이드되었습니다.

· List::Util이 버전 1.27에서 1.38로 업그레이드되었습니다.

· 로캘이 버전 1.02에서 1.03으로 업그레이드되었습니다.

· Locale::Codes가 버전 3.25에서 3.30로 업그레이드되었습니다.

· Locale::Maketext가 버전 1.23에서 1.25로 업그레이드되었습니다.

· Math::BigInt가 버전 1.9991에서 1.9993로 업그레이드되었습니다.

· Math::BigInt::FastCalc가 버전 0.30에서 0.31로 업그레이드되었습니다.

· Math::BigRat이 버전 0.2604에서 0.2606으로 업그레이드되었습니다.

· MIME::Base64가 버전 3.13에서 3.14로 업그레이드되었습니다.

· 모듈::빌드가 버전 0.4003에서 0.4205로 업그레이드되었습니다. 참고: 모듈::빌드는
더 이상 사용되지 않으며 Perl의 향후 버전에서는 제거될 수 있습니다.

· Module::CoreList가 버전 2.89에서 3.10으로 업그레이드되었습니다.

· 모듈::로드가 버전 0.24에서 0.32로 업그레이드되었습니다.

· 모듈::로드::조건부가 버전 0.54에서 0.62로 업그레이드되었습니다.

· 모듈::메타데이터가 버전 1.000011에서 1.000019로 업그레이드되었습니다.

· mro가 버전 1.11에서 1.16으로 업그레이드되었습니다.

· Net::Ping이 버전 2.41에서 2.43로 업그레이드되었습니다.

· Opcode가 버전 1.25에서 1.27로 업그레이드되었습니다.

· 패키지::상수는 버전 0.02에서 0.04로 업그레이드되었습니다. 메모:
Package::Constants는 더 이상 사용되지 않으며 Perl의 향후 버전에서는 제거될 수 있습니다.

· Params::Check가 버전 0.36에서 0.38로 업그레이드되었습니다.

· 상위 버전이 0.225에서 0.228로 업그레이드되었습니다.

· Parse::CPAN::Meta가 버전 1.4404에서 1.4414로 업그레이드되었습니다.

· Perl::OSType이 버전 1.003에서 1.007로 업그레이드되었습니다.

· perlfaq이 버전 5.0150042에서 5.0150044로 업그레이드되었습니다.

· PerlIO가 버전 1.07에서 1.09로 업그레이드되었습니다.

· PerlIO::encoding이 버전 0.16에서 0.18로 업그레이드되었습니다.

· PerlIO::scalar가 버전 0.16에서 0.18으로 업그레이드되었습니다.

· PerlIO::via가 버전 0.12에서 0.14로 업그레이드되었습니다.

· Pod::Escapes가 버전 1.04에서 1.06으로 업그레이드되었습니다.

· Pod::Functions가 버전 1.06에서 1.08로 업그레이드되었습니다.

· Pod::Html이 버전 1.18에서 1.21로 업그레이드되었습니다.

· Pod::Parser가 버전 1.60에서 1.62로 업그레이드되었습니다.

· Pod::Perldoc가 버전 3.19에서 3.23으로 업그레이드되었습니다.

· Pod::Usage가 버전 1.61에서 1.63으로 업그레이드되었습니다.

· POSIX가 버전 1.32에서 1.38_03로 업그레이드되었습니다.

· re가 버전 0.23에서 0.26으로 업그레이드되었습니다.

· 금고가 버전 2.35에서 2.37로 업그레이드되었습니다.

· Scalar::Util이 버전 1.27에서 1.38로 업그레이드되었습니다.

· SDBM_File이 버전 1.09에서 1.11로 업그레이드되었습니다.

· 소켓이 버전 2.009에서 2.013로 업그레이드되었습니다.

· Storable이 버전 2.41에서 2.49로 업그레이드되었습니다.

· strict가 버전 1.07에서 1.08로 업그레이드되었습니다.

· 구독자가 버전 1.01에서 1.02로 업그레이드되었습니다.

· Sys::Hostname이 버전 1.17에서 1.18으로 업그레이드되었습니다.

· Sys::Syslog가 버전 0.32에서 0.33로 업그레이드되었습니다.

· Term::Cap이 버전 1.13에서 1.15로 업그레이드되었습니다.

· Term::ReadLine이 버전 1.12에서 1.14로 업그레이드되었습니다.

· 테스트::하네스가 버전 3.26에서 3.30으로 업그레이드되었습니다.

· Test::Simple이 버전 0.98에서 1.001002로 업그레이드되었습니다.

· Text::ParseWords가 버전 3.28에서 3.29로 업그레이드되었습니다.

· 텍스트::탭이 버전 2012.0818에서 2013.0523으로 업그레이드되었습니다.

· Text::Wrap이 버전 2012.0818에서 2013.0523으로 업그레이드되었습니다.

· 스레드가 버전 3.02에서 3.04로 업그레이드되었습니다.

· Thread::Queue가 버전 3.02에서 3.05로 업그레이드되었습니다.

· 스레드가 버전 1.86에서 1.93으로 업그레이드되었습니다.

· 스레드::공유가 버전 1.43에서 1.46으로 업그레이드되었습니다.

· Tie::Array가 버전 1.05에서 1.06으로 업그레이드되었습니다.

· Tie::파일이 버전 0.99에서 1.00으로 업그레이드되었습니다.

· Tie::Hash가 버전 1.04에서 1.05로 업그레이드되었습니다.

· Tie::Scalar가 버전 1.02에서 1.03으로 업그레이드되었습니다.

· Tie::StdHandle이 버전 4.3에서 4.4로 업그레이드되었습니다.

· Time::HiRes가 버전 1.9725에서 1.9726으로 업그레이드되었습니다.

· Time::Piece가 버전 1.20_01에서 1.27로 업그레이드되었습니다.

· Unicode::Collate가 버전 0.97에서 1.04로 업그레이드되었습니다.

· Unicode::Normalize가 버전 1.16에서 1.17로 업그레이드되었습니다.

· 유니코드::UCD가 버전 0.51에서 0.57로 업그레이드되었습니다.

· utf8이 버전 1.10에서 1.13으로 업그레이드되었습니다.

· 버전이 0.9902에서 0.9908로 업그레이드되었습니다.

· vmsish가 버전 1.03에서 1.04로 업그레이드되었습니다.

· 경고가 버전 1.18에서 1.23로 업그레이드되었습니다.

· Win32가 버전 0.47에서 0.49로 업그레이드되었습니다.

· XS::Typemap이 버전 0.10에서 0.13로 업그레이드되었습니다.

· XSLoader가 버전 0.16에서 0.17으로 업그레이드되었습니다.

문서


신제품 문서
펄 저장소

이 문서는 Perl에서 제거되었습니다(실제로는 perlgit으로 이름이 바뀌고 대대적인 점검이 이루어졌습니다).
v5.14, Perl 문서 웹사이트에 Perl의 최신 버전이 표시되지 않음
v5.12를 최신 버전으로 사용하세요. 이제 스텁 형식으로 복원되어 독자에게 다음을 안내합니다.
현재 정보.

변경 현존하는 문서
펄데이터

· 새로운 인덱스/값 배열 슬라이스 및 키/값을 문서화하기 위해 새로운 섹션이 추가되었습니다.
해시 슬라이스 구문.

Perldebguts

· "DB::goto" 및 "DB::lsub" 디버거 서브루틴이 이제 문서화되었습니다. [펄 #77680]

실험

· "\cK"와 일치하는 "\s"는 실험용으로 표시됩니다.

· ithread는 v5.8.0에서 허용되었습니다(그러나 v5.20.0에서는 권장되지 않음).

· 긴 복식은 실험적인 것으로 간주되지 않습니다.

· 정규식의 코드, 정규식 역추적 동사 및 lvalue
서브루틴은 더 이상 실험적인 것으로 나열되지 않습니다. (이것은 Perlre에도 영향을 미치며
펄서브.)

perlfunc

· 이제 "chop" 및 "chomp"는 해시 반복자를 재설정할 수 있음을 알 수 있습니다.

· "exec"의 인수 처리가 이제 더욱 명확하게 문서화되었습니다.

· "eval EXPR"에는 이제 일부 로케일에서 부동 소수점 수 확장에 대한 주의 사항이 있습니다.

· 이제 코드로 평가되는 표현식을 처리하기 위해 "goto EXPR"이 문서화되었습니다.
마치 "goto &$coderef"인 것처럼 참조합니다. 이런 행동은 적어도 XNUMX년은 된 것입니다.

· Perl v5.10부터 @INC의 서브루틴이 참조를 반환하는 것이 가능해졌습니다.
파일 앞에 추가할 초기 소스 코드를 보유하는 스칼라로 변환합니다. 지금은
문서화.

· "ref" 문서가 "blessed", "isa" 사용을 권장하도록 업데이트되었습니다.
그리고 축복받은 객체에 대한 참조를 다룰 때 "reftype"을 사용합니다.

펄거츠

· Perl 내부 변경 사항을 반영하기 위해 여러 가지 사소한 변경이 이루어졌습니다.
이번 릴리스.

· 읽기 전용 값 및 쓰기 시 복사에 대한 새 섹션이 추가되었습니다.

펄핵

· 슈퍼 퀵 패치 가이드 섹션이 업데이트되었습니다.

펄핵팁

· "gdb" 사용에 대한 몇 가지 예를 더 포함하도록 문서가 업데이트되었습니다.

펄렉스경고

· 경고 범주의 계층 구조를 설명하는 데 사용되는 perllexwarn 문서
경고 pragma로 이해됩니다. 해당 설명은 이제 경고로 이동되었습니다.
문서 자체를 가리키는 스텁으로 perllexwarn을 남겨 둡니다. 이 변화
어휘 경고에 대한 모든 문서를 한 곳에 통합합니다.

펄로케일

· 이제 문서에는 다음이 언급됩니다. FC() 및 "\F"가 포함되어 있으며 많은 설명과
일반적으로 수정합니다.

퍼롭

· Perl의 언어 설계에서는 항상 단일형 연산자가 필요했습니다. 지금은
명시적으로 언급했습니다.

펠로펜투트

· "개방형" 튜토리얼은 Tom Christiansen에 의해 완전히 재작성되었으며 이제 초점을 맞췄습니다.
모든 내용을 종합적으로 설명하기보다는 기본적인 부분만 다루도록 하겠습니다.
열 수 있는 것들. 이 재작성은 다음에 대한 활발한 토론의 결과로 이루어졌습니다.
Perl5-porters는 Alexander Hartmaier가 작성한 일련의 개선 사항으로 시작되었습니다.
기존의 펠로펜투트. ""열린"" 문서에 대해 당신이 알고 싶었던 것보다 더 많은 것
Perl의 후속 버전에서 따를 수 있습니다.

Perlre

· 정규식 엔진이 (?{}) 및 (??{}) 구문을 호출하려고 노력하지 않는다는 사실
지정된 횟수만큼(성공적인 경우 기본적으로 DWIM되지만)
일치)이 문서화되었습니다.

· "/r" 수정자(비파괴 대체용)가 이제 문서화되었습니다. [펄 #119151]

· "/x" 및 "(?# 주석)"에 대한 문서가 확장되고 명확해졌습니다.

Perlreguts

· 최근 변경 사항을 반영하여 문서가 업데이트되었습니다. regcomp.c.

펄서브

· 프로토타입을 만들기 위해서는 프로토타입과 함께 재귀 함수를 미리 선언해야 할 필요성
재귀 호출에서 존중받는 것이 이제 문서화되었습니다. [펄 #2726]

· Perl 구현에 사용되는 서브루틴 이름 목록이 이제 포함되었습니다. [펄
#77680]

펄트랩

· 이제 JavaScript 섹션이 있습니다.

퍼루니코드

· 유니코드 6.3의 "Bidi_Class" 변경 사항을 반영하도록 설명서가 업데이트되었습니다.

펄바

· 다음을 포함하여 $`, $& 및 $'의 성능 문제를 설명하는 새로운 섹션
다양한 버전의 Perl에 대한 해결 방법 및 변경 사항이 추가되었습니다.

· 오랫동안 문서화되었지만 실제로는 존재하지 않는 세 가지 영어 변수 이름
문서에서 제거되었습니다. 이는 $OLD_PERL_VERSION, $OFMT 및
$ARRAY_BASE.

(실제로는 "OLD_PERL_VERSION" 하지 이 개정판부터 존재하지만 남아 있습니다.
Perl 5.22.0까지는 문서화되지 않았습니다.)

Perlxs

· "MY_CXT" 예제의 몇 가지 문제가 수정되었습니다.

진단


경고를 포함하여 진단 출력에 다음과 같은 추가 또는 변경 사항이 적용되었습니다.
치명적인 오류 메시지. 진단 메시지의 전체 목록은 perldiag를 참조하십시오.

신제품 진단
신제품 오류

· 삭제 인수는 인덱스/값 배열 슬라이스입니다. 배열 슬라이스를 사용하세요.

(F) "삭제"에 대한 인수로 인덱스/값 배열 슬라이스 구문(%array[...])을 사용했습니다.
대신 @ 기호가 있는 @array[...]를 의미했을 것입니다.

· 삭제 인수는 키/값 해시 슬라이스입니다. 해시 슬라이스를 사용하세요.

(F) "삭제"에 대한 인수로 키/값 해시 슬라이스 구문(%hash{...})을 사용했습니다.
대신 @ 기호가 있는 @hash{...}를 의미했을 것입니다.

· 마법 목록 상수는 지원되지 않습니다.

(F) 마법 배열을 숨김 요소에 할당한 다음
동일한 슬롯의 서브루틴. 당신은 Perl이 할 수 없는 일을 하도록 요구하고 있습니다.
세부 사항은 Perl 버전마다 변경될 수 있습니다.

· %s 참조에 $/ 설정이 금지되어 있음을 추가했습니다.

신제품 경고

· 참조의 %s은(는) 실험적입니다.

"자동 해제" 기능은 실험적입니다.

v5.14.0부터 push, pop, key 등 내장된 기능을 사용할 수 있게 되었습니다.
집계 유형뿐만 아니라 해당 유형에 대한 참조에 대해서도 기능합니다. 기능은 아니었습니다
원래 의도된 사양으로 배포되었으며 이제는 중복될 수 있습니다.
후위 역참조. 이는 항상 실험적인 기능으로 분류되어 왔으며
v5.20.0에서는 이와 같은 경고가 표시됩니다.

이제 이러한 작업이 감지되면 컴파일 타임에 경고가 표시됩니다.

$] >= 5.01908인 경우 아니요, 경고 => "experimental::autoderef";

그러나 동작이 변경될 수 있으므로 이러한 기능의 사용을 바꾸는 것을 고려하십시오.
안정되기 전에 다시.

· charnames 별칭 정의의 여러 공백 시퀀스는 더 이상 사용되지 않습니다.

charnames 별칭 정의의 후행 공백은 더 이상 사용되지 않습니다.

"\N{...}"과 관련된 두 가지 지원 중단 경고가 잘못 구현되었습니다. 그들
기본적으로 경고하지 않았으며(지금은 경고하고 있음) "경고 사용"을 통해 치명적일 수 없습니다.
FATAL => '더 이상 사용되지 않음'"(이제 가능합니다).

· 속성 프로토타입(%s)은 동일한 하위의 이전 프로토타입 속성을 삭제합니다.

(W 기타) 하위가 "sub foo : 프로토타입(A) : 프로토타입(B) {}"로 선언되었습니다.
예. 각 하위에는 하나의 프로토타입만 있을 수 있으므로 이전 선언은 다음과 같습니다.
마지막 항목이 적용되는 동안 삭제됩니다.

· %s의 %s에 잘못된 \0 문자: %s\0%s

(W syscalls) 경로 이름이나 기타 시스템 호출 인수에 포함된 \0 문자
5.20부터 경고를 생성합니다. \0 이후의 부분은 이전에 시스템에서 무시되었습니다.
전화.

· 유니코드 속성에 대해 유니코드가 아닌 코드 포인트 0x%X와 일치합니다. 휴대가 불가능할 수 있습니다.

이는 "코드 포인트 0x%X가 유니코드가 아닙니다. 모든 \p{} 일치가 실패합니다. 모두 실패합니다"라는 메시지를 대체합니다.
\P{} 일치가 성공했습니다."

· %s의 프로토타입에 ']'가 없습니다: %s

(W 불법프로토) 그룹화가 "["로 시작되었지만 "]"로 닫히지 않았습니다.

· 제어 흐름 연산자의 우선순위 문제 가능성

(W 구문) 제어 흐름 연산자를 혼합하면 문제가 발생할 수 있습니다.
(예: "return") 및 "or"와 같은 우선순위가 낮은 연산자입니다. 고려하다:

하위 { $a 또는 $b를 반환합니다. }

이는 다음과 같이 구문 분석됩니다.

sub { ($a 반환) 또는 $b; }

이는 사실상 다음과 같습니다.

하위 { $a를 반환; }

괄호를 사용하거나 우선순위가 높은 연산자를 사용하세요.

이는 다음과 같은 구성에 대해서도 트리거될 수 있습니다.

하위 { 죽으면 1; }

· 후위 역참조는 실험적입니다.

(S Experiment::postderef) 이 경고는 실험을 사용하는 경우 발생합니다.
접미사 역참조 구문. 다음을 사용하려면 경고를 억제하기만 하면 됩니다.
하지만 그렇게 하면 실험적인 방법을 사용할 위험이 있다는 점을 알아두세요.
향후 Perl 버전에서 변경되거나 제거될 수 있는 기능:

경고 없음 "experimental::postderef";
"postderef", "postderef_qq" 기능을 사용하세요.
$ref->$*;
$aref->@*;
$aref->@[@indices];
... 기타 ...

· '%s' 프로토타입이 %s의 'prototype(%s)' 속성에 의해 재정의되었습니다.

(W 프로토타입) 하위 이름 뒤의 괄호 안에 프로토타입이 선언되었으며,
프로토타입 속성을 통해. 괄호 안의 프로토타입은 쓸모가 없습니다.
사용되기 전에 속성의 프로토타입으로 대체됩니다.

· 스칼라 값 @%s[%s]은 $%s[%s]로 쓰는 것이 더 좋습니다.

(W 구문) 스칼라 컨텍스트에서는 배열 인덱스/값 슬라이스(%로 표시)를 사용했습니다.
배열의 단일 요소를 선택합니다. 일반적으로 스칼라를 요청하는 것이 더 좋습니다.
값($로 표시). 차이점은 $foo[&bar]는 항상 다음과 같이 동작한다는 것입니다.
반환되는 값과 인수를 평가할 때 모두 스칼라입니다.
%foo[&bar]는 아래 첨자에 목록 컨텍스트를 제공합니다.
당신은 단 하나의 아래 첨자를 기대하고 있습니다. 목록 컨텍스트에서 호출되면 다음도 반환합니다.
값 외에 색인(&bar가 반환하는 것).

· 스칼라 값 @%s{%s}는 $%s{%s}로 쓰는 것이 더 좋습니다.

(W 구문) 스칼라 컨텍스트에서는 해시 키/값 슬라이스(%로 표시)를 사용했습니다.
해시의 단일 요소를 선택합니다. 일반적으로 스칼라 값을 요청하는 것이 더 좋습니다.
($로 표시). 차이점은 $foo{&bar}는 항상 스칼라처럼 동작한다는 것입니다.
반환되는 값과 인수를 평가할 때 @foo{&bar} 및
아래 첨자에 목록 컨텍스트를 제공합니다. 그러면 이상한 일을 할 수 있습니다.
아래 첨자가 하나만 필요합니다. 목록 컨텍스트에서 호출되면 다음의 키도 반환됩니다.
가치에 더해.

· $/를 %s에 대한 참조로 후루룩 형태로 설정하는 것은 더 이상 사용되지 않으며 undef로 처리됩니다.

· 예기치 않은 종료 %u

(S) 출구() 호출되었거나 스크립트가 정상적으로 종료되었을 때
"PERL_EXIT_WARN"이 "PL_exit_flags"에 설정되었습니다.

· 예기치 않은 종료 실패 %d

(S) 잡히지 않은 ) (다이 "PL_exit_flags"에 "PERL_EXIT_WARN"이 설정되었을 때 호출되었습니다.

· 변수 이름에 리터럴 제어 문자를 사용하는 것은 더 이상 사용되지 않습니다.

(D 더 이상 사용되지 않음) 소스에서 리터럴 제어 문자를 사용하여 ^FOO 참조
$^X 및 ${^GLOBAL_PHASE}와 같은 변수는 이제 더 이상 사용되지 않습니다. 이는 코드에만 영향을 미칩니다.
$\cT와 같습니다. 여기서 \cT는 소스 코드의 컨트롤(예: "SOH")입니다. ${"\cT"} 및 $^T
유효한 상태로 유지됩니다.

· 탐욕 수식어의 쓸모없는 사용

이는 [Perl #42957]을 수정합니다.

변경 현존하는 진단
· 정규 표현식 엔진의 경고 및 오류가 이제 UTF-8로 정리되었습니다.

· "알 수 없는 스위치 조건" 오류 메시지가 약간 변경되었습니다. 이 오류
"(?(foo))" 조건에 알 수 없는 조건이 있을 때 트리거됩니다. 오류
읽는 데 사용된 메시지:

알 수 없는 스위치 조건(?(정규식의 %s;

하지만 %s의 결과는 대부분 운에 달려 있습니다. "(?(foobar))"에 대해 본 적이 있을 것입니다.
"fo" 또는 "f". 유니코드 문자의 경우 일반적으로 문자열이 손상됩니다. 그만큼
메시지가 다음과 같이 변경되었습니다.

정규식에 알 수 없는 스위치 조건(?(...))이 있습니다.

또한 오류의 '<-- HERE' 표시가 이제 올바른 위치를 가리킵니다.
정규식.

· "%s "\x%X"는 유니코드로 매핑되지 않습니다." 경고가 이제 심각한 오류로 올바르게 나열됩니다.
치명적인 오류가 아니라 경고입니다.

· 드문 경우지만 "읽기 전용 REF를 문자열로 강제할 수 없습니다."라는 메시지가 나타날 수 있습니다.
관례적인 "읽기 전용 값 수정" 대신. 이 대체 오류
메시지가 제거되었습니다.

· "*의 모호한 사용은 연산자 *로 해결되었습니다.": "%" 및 "%"에 대한 이와 유사한 경고
"&"는 인용된 유형의 연산자가 없는 일부 상황에서 발생했습니다.
그래서 경고는 완전히 잘못되었습니다. 이 문제는 수정되었습니다[perl #117535, #76910].

· 기형의 서브루틴 프로토타입에 대한 경고가 이제 더 일관되게 표시됩니다.
프로토타입이 렌더링됩니다. 이러한 경고 중 일부는 다음을 포함하는 프로토타입을 잘라냅니다.
널. 다른 경우에는 하나의 경고가 다른 경고를 억제합니다. 불법에 대한 경고
프로토타입의 문자는 잘못된 문자가 앞에 온 경우 더 이상 "'_' 이후"라고 표시되지 않습니다.
밑줄.

· Perl 접기 규칙은 0x%X에 대해 최신이 아닙니다. Perlbug 유틸리티를 사용하여
보고서; 정규식에서; <-- 여기 m/%s/에 표시됨

이 메시지는 이제 regexp 카테고리에만 있고 더 이상 사용되지 않는 카테고리에는 없습니다.
이는 여전히 기본(즉, 심각한) 경고입니다[perl #89648].

· 스칼라 문맥의 %%s[%s]는 $%s[%s]로 쓰는 것이 더 좋습니다.

이 경고는 이제 스칼라에 있는 것으로 알려진 모든 %array[$index] 또는 %hash{key}에 대해 발생합니다.
컴파일 타임의 컨텍스트. 이전에는 "스칼라 값 %%s[%s]이(가) 더 좋습니다.
$%s[%s]"로 작성되었습니다.

· 정규 표현식에서 스위치 조건이 인식되지 않습니다. <-- 여기 m/%s/에 표시됨:

이 진단에 대한 설명은 다음과 같은 모든 경우를 포함하도록 확장되었습니다.
경고가 발생할 수 있습니다. 화살표 표시 위치 문제도 해결되었습니다.
해결되었습니다.

· "my($a?$b$c)" 및 "my(do{})"에 대한 오류 메시지에 이제 "조건부"가 언급됩니다.
'Null을 선언할 수 없습니다'를 읽는 대신 각각 'expression' 및 'do block'
"내"'에서 작업합니다.

· "use re "debug""가 역참조가 포함된 정규식을 실행하면 디버깅
이제 출력에는 일치하는 문자열이 표시됩니다.

· 이제 치명적인 오류 메시지 ""\c" 다음의 문자는 ASCII여야 합니다"가 바뀌었습니다.
""\c" 다음의 문자는 인쇄 가능한 ASCII여야 합니다"로 "\c"에서 이를 강조합니다.X", X
~이어야합니다. 인쇄할 수있는 (비대조) ASCII 문자.

유틸리티 변경


a2p

· 시작하기 전에 액세스하려고 할 때 off-by-one 오류로 인해 충돌이 발생할 수 있습니다.
버퍼의 문제가 해결되었습니다. [펄 #120244]

bisect.pl

자식 양분 도구 포팅/bisect.pl 많은 개선이 이루어졌습니다.

소스 배포판의 일부로 제공되지만 그렇지 않기 때문에 설치되지 않습니다.
git 체크아웃 내에서 실행되기 때문에 독립적입니다. 그것도 참고하세요
테스트를 수정하거나 런타임 버그를 수정하거나 설치에 유용한 것을 만들려는 시도를 하지 않습니다.
그 목적은 관심 있는 역사적 개정판을 구축하기 위해 최소한의 변경을 수행하는 것입니다.
가능한 한 "as-was"에 가깝게 실행하여 "git bisect"를 사용하기 쉽게 만듭니다.

· 선택적으로 시간 제한이 있는 테스트 사례를 실행할 수 있습니다.

· 이제 깨끗한 Git 체크아웃에서 내부 실행이 가능합니다.

· "valgrind"에서 테스트 케이스를 실행할 수 있습니다.

· 빌드하기 전에 소스 체크아웃에 사용자 제공 패치 및 수정 사항을 적용할 수 있습니다.

· 이제 bleadperl의 역사적 범위를 더 많이 구축할 수 있는 수정 사항이 있습니다.
버그나 동작 변경의 원인을 찾아내는 데 유용할 수 있습니다.

find2perl

· find2perl은 이제 "?"를 처리합니다. 와일드카드를 올바르게 사용하세요. [펄 #113054]

펄버그

· 펄버그 이제 버그 보고서와 함께 패치를 첨부하기 위한 "-p" 옵션이 있습니다.

· perlbug는 CRLF 줄 끝이 있는 보고서 템플릿을 제공하도록 수정되었습니다.
윈도우. [펄 #121277 ]

· Perlbug는 이제 보고서 인코딩에 대해 가능한 한 적은 가정을 합니다.
이는 기본적으로 UTF-8을 가정하도록 향후 변경될 가능성이 높지만 사용자는
우세하다.

구성 편집


· 메이크파일.PL SDBM_File의 경우 이제 더 나은 결과를 생성합니다. Makefile, 경주를 피하는 것
병렬 제작 중에 발생하는 조건으로 인해 빌드가 실패할 수 있습니다. 이것이
마지막으로 알려진 병렬 연결 문제(*nix 플랫폼에서), 따라서 우리는
병렬 make는 이제 항상 오류가 없어야 합니다.

· 인스톨펄설치기사의 옵션 처리가 Getopt::Long을 사용하도록 리팩터링되었습니다.
둘 다 다음에서 사용됩니다. Makefile "설치" 대상이 설치되지 않았으므로 이러한
변경 사항은 사용자 정의 설치 스크립트에만 영향을 미칠 수 있습니다.

· 이제 단일 문자 옵션에도 긴 이름이 있습니다.

· 이제 잘못된 옵션은 거부됩니다.

· 옵션이 아닌 명령줄 인수는 이제 거부됩니다.

· 이제 각각에는 사용법 메시지를 표시하는 "--help" 옵션이 있습니다.

문서화된 모든 유효한 호출의 동작은 변경되지 않습니다.

· 가능한 경우 빌드는 이제 재귀 호출을 방지합니다. 확인 순수하게 구축할 때
빌드에서 병렬 처리를 제거하지 않고 Perl 확장. 현재 80정도
확장 프로그램은 다음에서 직접 처리할 수 있습니다. make_ext.pl 도구, 즉 80을 의미합니다.
호출 확인 160번의 호출 미니펄 더 이상 만들어지지 않습니다.

· 이제 링크 타임을 사용하여 GCC 또는 Clang에서 컴파일할 때 빌드 시스템이 올바르게 작동합니다.
최적화가 활성화되었습니다("-flto" 옵션). [펄 #113022]

· "d_libname_unique"를 사용한 고유한 라이브러리 기본 이름.

이 옵션을 사용하여 Perl을 컴파일할 때 XS 모듈용 라이브러리 파일의 이름은 다음과 같습니다.
"고유한" 것 -- 예를 들어 Hash/Util/Util.so는 다음과 같습니다.
해시/Util/PL_Hash__Util.so. 이 동작은 현재 발생하는 동작과 유사합니다.
VMS이며 Android 포트의 기반 역할을 합니다.

· "sysroot" 옵션은 gcc 및 clang 아래의 논리적 루트 디렉터리를 나타냅니다.

이 옵션 세트를 사용하여 빌드할 때 구성과 컴파일러는 모두 다음을 검색합니다.
대신 이 새로운 sysroot 아래의 헤더와 라이브러리 /.

이는 크로스 컴파일의 경우 시간을 크게 절약해 주지만 다음과 같은 경우 네이티브 빌드에도 도움이 될 수 있습니다.
도구 체인의 파일에 비표준 위치가 있습니다.

· 크로스 컴파일 모델이 개편되었습니다. 몇 가지 새로운 옵션이 있으며 일부는
이전 버전과 호환되지 않는 변경 사항:

이제 호스트에서 사용할 miniperl 및 generate_uudmap용 바이너리를 빌드합니다.
대상에서 모든 miniperl 호출을 실행하는 것보다; 이는 'make test'가 부족하다는 것을 의미합니다.
구성이 완료되면 더 이상 대상 시스템에 액세스할 필요가 없습니다. 당신은 제공할 수 있습니다
"hostperl" 및 "hostgenerate" 옵션을 통해 이미 빌드된 바이너리를 구성합니다.

또한 ASCII 호스트에서 EBCDIC 플랫폼을 대상으로 하거나 그 반대로 대상을 지정하는 경우
generate_uudmap이 다음을 수행해야 함을 나타내려면 "-Uhostgenerate"를 사용하여 구성을 실행해야 합니다.
대상에서 실행됩니다.

마지막으로, 구성을 구축한 직후에 일찍 구성을 종료하는 방법도 있습니다.
"targethost"를 지정하지 않고 크로스 컴파일하여 호스트 바이너리.

호환되지 않는 변경 사항에는 더 이상 xconfig.h, xlib 또는 Cross.pm을 사용하지 않는 것이 포함됩니다.
미리 준비된 구성 파일과 Makefile을 업데이트해야 합니다.

· 위와 관련하여 이제 sh(또는
이에 상응하는) 대상 시스템: "targetsh".

예를 들어 Android의 sh는 /system/bin/sh에 있으므로 more
sh가 포함된 일반 Unixy 시스템 / 빈 / SH, "targetsh"는 /system/bin/sh로 끝나고,
"sh"는 /bin/sh입니다.

· 기본적으로, GCC 4.9에서는 Perl을 손상시키는 몇 가지 최적화를 수행합니다. 그만큼 -fwrapv 선택권
이러한 최적화(및 아마도 다른 것)를 비활성화하므로 GCC 4.3 이상(이후
이전 버전에도 비슷한 문제가 숨어있을 수 있지만 -fwrapv 였다
4.3 이전에는 문제가 있었고 최적화는 아마도 사라지지 않을 것입니다) 구성 이제 추가
-fwrapv 사용자가 요청하지 않는 한 -fno-wrapv, 이는 비활성화됩니다. -fwrapv
-fsanitize=정의되지 않음, 이는 오버플로를 전환합니다. -fwrapv 런타임 오류를 무시합니다.
[펄 #121505 ]

지원


· 이제 "test.valgrind" make 타겟을 사용하여 테스트를 병렬로 실행할 수 있습니다. 이 목표
특정 종류의 C를 감지하는 Valgrind에서 Perl의 테스트 스위트를 실행할 수 있습니다.
프로그래밍 오류로 인해 실행 시간에 상당한 비용이 발생합니다. 적합한 하드웨어에서는
병렬 실행을 허용하면 많은 추가 비용을 회수할 수 있습니다. [펄 #121431]

· 다양한 테스트 t/이식/ Perl이 실행될 때 더 이상 건너뛰지 않습니다. .git 디렉토리는
Perl 트리 외부에 있으며 $GIT_DIR이 가리킵니다. [펄 #120505]

· 사용자의 대화형 셸이 $PWD를 유지할 때 테스트 스위트가 더 이상 실패하지 않습니다.
환경 변수이지만 / 빈 / SH 테스트를 실행하는 데 사용되지 않습니다.

플랫폼 고객 지원


신제품 플랫폼
Android
이제 Perl은 기본적으로 또는 크로스 컴파일을 통해 Android용으로 구축될 수 있습니다.
현재 사용 가능한 세 가지 아키텍처(ARM, MIPS 및 x86) 모두 다양한 범위에서
버전.

비트리그
OpenBSD의 포크인 Bitrig에 대한 컴파일 지원이 추가되었습니다.

프리민트
Atari ST 시스템용 무료 오픈 소스 OS인 FreeMiNT에 대한 지원이 추가되었습니다.
Atari가 공식적으로 채택한 최초의 MiNT를 기반으로 한 후속 제품입니다.

는 Synology
Synology는 상대적으로 저렴한 가격에 린 Linux 배포판(DSM)이 포함된 NAS 상자를 배송합니다.
CPU(예: Marvell Kirkwood mv6282 - ARMv5tel 또는 Freescale QorIQ P1022 ppc -
e500v2)는 워크스테이션이나 개발용이 아닙니다. 이제 이 상자를 만들어야 합니다. 그만큼
기본적인 문제는 도구의 비표준 위치입니다.

단종 플랫폼
"스피오"
"sfio" I/O 시스템 지원과 관련된 코드가 제거되었습니다.

Perl 5.004에는 AT&T의 안전/빠른 I/O인 "sfio"의 기본 API를 사용하기 위한 지원이 추가되었습니다.
도서관. 이 코드는 많은 회귀 테스트가 실패했음에도 불구하고 여전히 v5.8.0으로 빌드되었습니다.
하지만 v5.8.1 릴리스 이전에 실수로 손상되어 작동하지 않았음을 의미합니다.
그 이후 출시된 모든 Perl 버전에서. XNUMX년 넘게 버그가 접수되지 않았습니다.
이에 대해 보고하므로 어느 누구도 이 기능을 사용하지 않는다는 것이 분명합니다.
여전히 어느 정도 지원되는 Perl 버전입니다.

AT&T 3b1
AT&T Unix PC(및 유사한 AT&T)로도 알려진 3b1에 대한 지원을 구성합니다.
7300)이 삭제되었습니다.

DG/UX
DG/UX는 Data General이 판매한 Unix였습니다. 마지막 릴리스는 2001년 XNUMX월이었습니다.
Data General의 자체 하드웨어에서 실행됩니다.

EBCDIC
정기적인 연기 보고서 소스가 없는 경우 기본 지원을 위한 코드
EBCDIC 플랫폼은 5.22.0 이전에 Perl에서 제거됩니다.

플랫폼별 노트
Cygwin에서
· recv () 연결된 핸들에서 반환된 보낸 사람 주소를 다음과 같이 채웁니다.
작업 버퍼에 발생한 모든 것. recv () 이제 해결 방법을 사용합니다
Win32와 유사 recv () 래퍼는 다음과 같은 경우 빈 문자열을 반환합니다. recvfrom(2)
제공된 주소 길이를 수정하지 않습니다. [펄 #118843]

· Cygwin 1.7.28에서 cygwin.c의 빌드 오류를 수정했습니다.

이제 테스트는 "cygserver"가 실행되지 않을 때 발생하는 오류를 처리합니다.

GNU / 허드
BSD 호환성 라이브러리 "libbsd"는 더 이상 빌드에 필요하지 않습니다.

Linux
이제 힌트 파일은 "libgdbm" 자체도 원하는 경우에만 "libgdbm_compat"를 찾습니다.
전자는 후자 없이는 결코 유용하지 않으며, 후자를 포함한 일부 상황에서는
실제로 건물을 막을 수 있습니다.

맥 OS
이제 빌드 시스템은 실행 중인 사용자가 제공한 "ld" 설정을 따릅니다. 구성.

자정 BSD
"objformat"은 MidnightBSD 버전 0.4-RELEASE에서 제거되었으며
이전 버전에서는 더 이상 사용되지 않습니다. 이로 인해 빌드 환경이 잘못되었습니다.
"elf"가 아닌 "a.out"으로 구성되었습니다. 이제 이 문제가 수정되었습니다.

혼합 엔디안 플랫폼
혼합 엔디안 플랫폼에서 "압축" 및 "압축 해제" 작업을 지원하는 코드는 다음과 같습니다.
제거됨. 우리는 Perl이 오랫동안 혼합 엔디안을 기반으로 구축할 수 없었다고 믿습니다.
아키텍처(예: PDP-11)이므로 이 변경 사항이 어떤 아키텍처에도 영향을 미칠 것이라고 생각하지 않습니다.
v5.18.0을 구축할 수 있었던 플랫폼입니다.

VMS
· Perl 시작 시 %ENV 채우기를 제어하는 ​​"PERL_ENV_TABLES" 기능
Perl 5.16.0에서는 문제가 발생했으나 이제 수정되었습니다.

· 리모컨에 대한 액세스 확인 건너뛰기 오픈 디렉토리(). [펄 #121002]

· "glob()" 연산자에 의해 반환된 경로의 glob 메타 문자에 대한 검사는 다음과 같습니다.
VMS 와일드카드 문자 확인으로 대체되었습니다. 이렇게 하면 상당한 비용이 절약됩니다.
일부 간단한 glob 작업을 수행하는 불필요한 "lstat()" 호출 수
60-80% 더 빠릅니다.

Win32
· Win32의 "이름 바꾸기" 및 "링크"는 이제 $로 설정됩니다! 적절한 경우 ENOSPC 및 EDQUOT에 적용됩니다.
[펄 #119857]

· 일부 또는 (거의) 전체를 연결하기 위한 BUILD_STATIC 및 ALL_STATIC makefile 옵션
정적으로 확장(perl520.dll 및 별도의 perl-static.exe에도)
MinGW 빌드에서 문제가 발생했습니다. 이제 이 문제가 해결되었습니다.

ALL_STATIC 옵션도 Encode 및 Win32를 포함하도록 개선되었습니다.
확장(VC++ 및 MinGW 빌드 모두용).

· Visual C++ 2013을 사용한 빌드 지원이 추가되었습니다. 현재 두 가지가 있습니다.
가능한 테스트 실패(perlwin32의 "Windows에서 Perl 테스트" 참조)
곧 해결되기를 바랍니다.

· Intel C++ 컴파일러를 사용한 빌드에 대한 실험적 지원이 추가되었습니다. 그만큼
nmake makefile(win32/Makefile) 및 dmake makefile(win32/makefile.mk)은 다음과 같습니다.
사용된. 현재로서는 "nmake 테스트"가 통과되지 않습니다. cpan/CGI/t/url.t.

· perlfunc에서 "kill" 및 음수 신호를 사용하여 프로세스 트리를 죽이는 기능이 손상되었습니다.
5.18.0부터. 이 버그에서 "kill"은 음수 신호에 대해 항상 0을 반환했습니다.
유효한 PID의 경우에도 프로세스가 종료되지 않았습니다. 이것은 수정되었습니다 [펄
#121230].

· Windows에서 Perl을 빌드하는 데 걸리는 시간이 상당히 단축되었습니다(시간
일반적으로 30~40% 정도의 절감 효과가 나타납니다.
일반적으로 실패하며 각 "require()"에 대한 I/O 호출( miniperl.exe 오직). [펄
#121119 ]

· "make test" 실행에서 약 15분간의 유휴 수면 시간이 제거되었습니다.
테스트에 사용된 시간 초과 모니터가 한 번 실행되면 취소할 수 없는 버그
테스트가 완료되고 다음 테스트를 실행하기 전에 전체 시간 초과 기간이 경과되었습니다.
파일. [펄 #121395 ]

· 의사 포크 없이 빌드된 Perl에서(의사 포크 빌드는 이에 영향을 받지 않았습니다.)
버그) "kill()"을 사용하여 프로세스 트리를 종료하고 음수 신호가 발생하면
"kill()"은 반환된 값을 반전시킵니다. 예를 들어, "kill()"이 프로세스 1개를 종료한 경우
트리 PID는 0 대신 1을 반환하고 "kill()"이 2로 전달되면 유효하지 않습니다.
PID는 2 대신 0를 반환했습니다. 이는 아마도
프로세스 트리 종료 기능이 Win32에서 구현되었습니다. 지금은 다음과 같이 수정되었습니다.
문서화된 행동을 따르십시오. [펄 #121230
]

· 64비트 Perl을 구축할 때 초기화되지 않은 메모리가 읽혀집니다. miniperl.exe, 사용 된
빌드 프로세스 중에 4GB가 발생할 수 있습니다. wperl.exe 생성되고 있습니다. 이것은
이제 수정되었습니다. (참고하세요 펄.exe 그 자체는 영향을 받지 않았지만 분명히
wperl.exe 완전히 깨졌을 것입니다.) [perl #121471
]

· 이제 Perl을 다음과 같이 구축할 수 있습니다. GCC 버전 4.8.1부터http://www.mingw.org>. 이것
이전에는 잘못된 정의로 인해 손상되었습니다. DLL메인() Perl 중 하나에서
소스 파일. 더 일찍 GCC 버전 4를 사용할 때도 영향을 받았습니다.
w32api 패키지. 버전 GCC 에서 제공
<http://mingw-w64.sourceforge.net/> 영향을 받지 않았습니다. [펄 #121643
]

· 이제 Perl이 다음과 같은 FAT 드라이브에 구축될 때 테스트 도구에 오류가 발생하지 않습니다.
NTFS 드라이브의 Windows OS. [펄 #21442
]

· 컨텍스트 스택을 복제할 때 포크() 에뮬레이션, Perl_cx_dup() 충돌할 것이다
다음을 포함하지 않는 컨텍스트 스택 항목에 대한 매개변수 정보에 액세스
"&foo;"와 같은 매개변수입니다. [펄 #121721
]

· Perl #113536에 의해 도입됨
, 모든 메모리 누수
32부터 대부분의 Win5.18.0 Perls에서 "system" 및 백틱(" `` ") 호출
수정되었습니다. 메모리 누수는 가상 포크를 활성화한 경우에만 발생했습니다.
Win32 Perl을 빌드했으며 Server 2003 R2 또는 최신 OS에서 해당 빌드를 실행하고 있었습니다.
WinXP SP3에서는 누출이 나타나지 않습니다. [펄 #121676
]

질겁
· XS 모듈의 건물이 대부분 복원되었습니다. 몇몇은 여전히 ​​(아직) 할 수 없습니다
빌드할 수 있지만 이제 몇 가지만 사용하여 WinCE에서 Perl을 빌드하는 것이 가능합니다.
추가 패치(Socket 및 ExtUtils::MakeMaker에 대한), 통합되기를 바랍니다.
곧.

· Perl은 이제 다음을 실행하여 WinCE에서 사용자 개입 없이 한 번에 구축할 수 있습니다.
"nmake -f Makefile.ce 모두".

EVC(Embedded Visual C++) 4를 사용한 빌드 지원이 복원되었습니다. 펄은 할 수 있다
Visual C++ 2005 또는 2008용 스마트 장치를 사용하여 구축할 수도 있습니다.

내부의 변경


· 일치 변수 $1, $2 등 $`, $&에 대한 내부 표현이 변경되었습니다.
$', ${^PREMATCH}, ${^MATCH} 및 ${^POSTMATCH}. 약간 적은 양의 메모리를 사용하므로
조회 중 문자열 비교 및 ​​숫자 변환을 수행하며 23개 더 적은 줄을 사용합니다.
C. 이 변경 사항은 외부 코드에 영향을 주어서는 안 됩니다.

· 배열은 이제 &PL_sv_undef 대신 사용되지 않은 슬롯을 나타내기 위해 내부적으로 NULL을 사용합니다.
&PL_sv_undef는 더 이상 특수 값으로 처리되지 않으므로 av_store(av, 0, &PL_sv_undef)
해당 배열의 요소 0이 정의되지 않은 읽기 전용 스칼라를 보유하게 됩니다. "$배열[0] =
everything"은 삐걱거리고 "\$array[0]"은 "\undef"와 같은 것으로 비교됩니다.

· 반환된 SV HeSVKEY_force() 이제 UTF8 특성을 올바르게 반영합니다.
해당 키가 SV로 저장되지 않은 경우 기본 해시 키입니다. [펄 #79074]

· XS 코드에서 거의 사용되지 않는 특정 기능과 매크로는 이제 더 이상 사용되지 않습니다.
"utf8_to_uvuni_buf"(대신 "utf8_to_uvchr_buf" 사용),
"valid_utf8_to_uvuni"(대신 "utf8_to_uvchr_buf" 사용), "NATIVE_TO_NEED"(이것은
어쨌든 제대로 작동하지 않음) 및 "ASCII_TO_NEED"(어쨌든 제대로 작동하지 않음).

이번 릴리스부터는 애플리케이션 코드에서 구별할 필요가 거의 없습니다.
플랫폼의 문자 집합과 Latin1 사이에서 가장 낮은 256자
유니코드를 기반으로 합니다. 새 코드에서는 "utf8n_to_uvuni"를 사용하면 안 됩니다("utf8_to_uvchr_buf" 사용).
대신) 또는 "uvuni_to_utf8"(대신 "uvchr_to_utf8" 사용),

· 거의 사용되지 않거나 거의 사용되지 않는 테스트 및 프로파일링을 위한 Makefile 바로 가기 대상
대상이 제거되었거나 다음을 사용하는 유일한 다른 Makefile 대상으로 병합되었습니다.
그들을. 특히 이러한 대상은 다음을 참조한 문서와 함께 사라졌습니다.
그것들을 사용하거나 사용 방법을 설명했습니다.

check.third check.utf16 check.utf8 coretest minitest.prep
minitest.utf16 perl.config.dashg perl.config.dashpg
perl.config.gcov perl.gcov perl.gprof perl.gprof.config
perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
perl.third perl.third.config perl.valgrind.config purecovperl
pureperl Quantperl test.deparse test.taintwern test.third
test.torture test.utf16 test.utf8 test_notty.deparse
test_notty.제XNUMX test_notty.valgrind test_prep.제XNUMX
test_prep.valgrind 고문테스트 ucheck ucheck.third ucheck.utf16
ucheck.valgrind utest utest.third utest.utf16 utest.valgrind

관련 명령을 "손으로" 실행하는 것은 여전히 ​​가능합니다.
기능이 제거되었습니다.

· 이제 Perl이 로케일 처리를 초기화하지 못하게 할 수 있습니다. 대부분의 경우,
Perl은 로케일에 주의를 기울이지 않습니다. (perlllocale을 참조하세요.) 그럼에도 불구하고 지금까지는
시작할 때 만일을 대비해 항상 로케일 처리를 시스템 기본값으로 초기화했습니다.
실행되는 프로그램은 결국 로케일을 사용하게 됩니다. (이것은 가장 먼저 해야 할 일 중 하나입니다.
Perl이 실제로 필요한지 여부를 알기 훨씬 전에 로케일 인식 프로그램이 이를 수행해야 합니다.
또는 그렇지 않습니다.) 이는 Perl이 다른 응용 프로그램에 내장된 경우를 제외하고는 잘 작동합니다.
시스템 기본값이 아닌 로캘을 원합니다. 이제 환경 변수가
"PERL_SKIP_LOCALE_INIT"는 Perl이 시작될 때 설정되며, 이 초기화 단계는
건너뜁니다. 이전에는 Windows 플랫폼에서 이 문제에 대한 유일한 해결 방법은
내부 Perl 코드의 해킹된 복사본을 사용하는 것이 부족했습니다. 필요한 애플리케이션
이전 Perl을 사용하려면 사용 중인 내장 Perl에 다음이 필요한지 여부를 확인할 수 있습니다.
C 전처리기 기호 "HAS_SKIP_LOCALE_INIT"가 아닌지 테스트하여 해결 방법
한정된. [RT #38193]

· "BmRARE" 및 "BmPREVIOUS"가 제거되었습니다. 그들은 어디에도 사용되지 않았으며 그렇지 않습니다.
API의 일부입니다. XS 모듈의 경우 이제 #0으로 정의됩니다.

· 일반적으로 읽기 전용 값을 사용하는 "sv_force_normal"은 읽기 전용을 허용하는 데 사용됩니다.
컴파일 타임에 수정될 값. 읽기 전용에서 croak으로 변경되었습니다.
가치에 관계없이. 이 변경으로 인해 몇 가지 핵심 버그가 발견되었습니다.

· Perl의 새로운 쓰기 시 복사 메커니즘(현재는 기본적으로 활성화되어 있음)은
복사 시 복사 시 복사 스칼라로 자동으로 업그레이드되는 "SvPOK" 스칼라. ㅏ
문자열 버퍼의 참조 횟수는 문자열 버퍼 자체에 저장됩니다.

예 :

$ 펄 -MDevel::Peek -e'$a="abc"; $b = $a; $a를 덤프하세요; $b' 덤프
SV = PV(0x260cd80) at 0x2620ad8
REFCNT = 1
플래그 = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
현재 = 3
렌 = 16
COW_REFCNT = 1
SV = PV(0x260ce30) at 0x2620b20
REFCNT = 1
플래그 = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
현재 = 3
렌 = 16
COW_REFCNT = 1

두 스칼라 모두 동일한 PV 버퍼를 공유하고 COW_REFCNT가 다음보다 큽니다.
제로.

이는 SV의 "SvPVX()" 버퍼를 수정하려는 XS 코드가
"SvPV_force()" 또는 이와 유사한 것을 먼저 호출하여 유효한(그리고 공유되지 않은) 버퍼를 확인하고
나중에 "SvSETMAGIC()"을 호출하십시오. 사실 이는 항상 그래왔습니다(예를 들어
해시 키는 이미 쓰기 중 복사되었습니다); 이 변화는 단지 COW 행동을
더욱 다양한 SV.

한 가지 중요한 차이점은 5.18.0 이전에는 공유 해시 키 스칼라가
"SvREADONLY" 플래그가 설정되었습니다. 이것은 더 이상 사실이 아닙니다.

이 새로운 동작은 다음을 실행하여 비활성화할 수 있습니다. 구성
-Accflags=-DPERL_NO_COW. 이 옵션은 아마도 Perl 5.22에서 제거될 것입니다.

· "PL_sawampersand"는 이제 상수입니다. 이 변수가 제공하는 스위치(
$& 표시 여부에 따라 경기 전 사본을 활성화/비활성화합니다)
제거되고 쓰기 중 복사로 대체되어 몇 가지 버그가 제거되었습니다.

이전 동작은 다음을 실행하여 계속 활성화할 수 있습니다. 구성
-Accflags=-DPERL_SAWAMPERSAND.

· "my_swap", "my_htonl" 및 "my_ntohl" 기능이 제거되었습니다. 불분명하다
왜 이러한 기능이 다음과 같이 표시되었는지 A, API의 일부입니다. XS 코드로 호출할 수 없습니다.
직접적으로, 컴파일되는 것에 의존할 수 없기 때문입니다. 당연히 CPAN에는 코드가 없습니다.
그들을 참조합니다.

· "Perl_re_intuit_start()" 정규식 함수의 서명이 변경되었습니다. 함수
정규식 엔진 플러그인 구조의 "intuit" 포인터도 이에 따라 변경되었습니다. ㅏ
새로운 매개변수 "strbeg"가 추가되었습니다. 이것은 동명과 같은 의미를 갖는다.
"Perl_regexec_flags"의 매개변수입니다. 이전에는 직관이 시작을 추측하려고 시도했습니다.
전달된 SV(있는 경우)의 문자열이며 때로는 잘못된 경우가 있습니다(예:
과부하된 SV).

· "Perl_regexec_flags()" 정규식 함수의 서명이 변경되었습니다. 함수
정규식 엔진 플러그인 구조의 포인터 "exec"도 일치하도록 변경되었습니다. 그만큼
"minend" 매개변수는 이제 64비트 시스템을 더 잘 지원하기 위해 "SSize_t" 유형을 갖습니다.

· XS 코드는 문자나 코드 포인트의 대소문자를 변경하기 위해 다양한 매크로를 사용할 수 있습니다.
예: "toLOWER_utf8()"). 지금까지 이들 중 몇 개만 문서화되었습니다. 그리고 지금
기본 함수를 호출하는 것보다 우선적으로 사용해야 합니다. '캐릭터'를 참고하세요.
Perlapi의 대소문자 변경"

· 코드는 uid와 gid를 다소 일관성 없이 처리했습니다. 일부 장소에서는 다음과 같이 가정했습니다.
UV에 안전하게 저장될 수 있고, 다른 것들은 IV에, 다른 것들은 int에 안전하게 저장될 수 있습니다. XNUMX개의 새로운 매크로는 다음과 같습니다.
도입: SvUID(), sv_setuid(), SvGID()sv_setgid()

· "sv_pos_b2u_flags"가 API에 추가되었습니다. "sv_pos_b2u"와 비슷하지만
64비트 플랫폼에서 긴 문자열을 지원합니다.

· "PL_exit_flags"는 이제 Perl 임베더 또는 다른 XS 코드에서 Perl "경고"를 갖는 데 사용할 수 있습니다.
또는 종료 시도를 "중단"합니다. [펄 #52000]

· 이제 "-Accflags=-PERL_BOOL_AS_CHAR"로 컴파일하면 C99 및 C++ 컴파일러에서 다음을 수행할 수 있습니다.
Perl이 C89 컴파일러에 대해 수행하는 "bool"의 "char"에 대한 앨리어싱을 에뮬레이트합니다. [펄
#120314]

· perlapi의 "sv_2pv_flags"에 있는 "sv" 인수, perlapi의 "sv_2iv_flags",
perlapi의 "sv_2uv_flags" 및 perlapi 및 이전 래퍼의 "sv_2nv_flags"
sv_2pv, sv_2iv, sv_2uv, sv_2nv는 이제 NULL이 아닙니다. 이제 NULL을 전달하면 충돌이 발생합니다. 언제
NULL이 아닌 마커는 5.9.3에서 한꺼번에 도입되었으며 함수는 NULL이 아닌 것으로 표시되었습니다.
NULL이지만 5.0 알파 2에서 SV API가 생성된 이후로 NULL이 전달된 경우
함수는 0 또는 false 유형 값을 반환했습니다. "sv" 인수를 지원하는 코드는 다음과 같습니다.
NULL이 아닌 날짜는 5.0 alpha 2에 직접적으로 적용되고 Perl 1.0(5.0 이전 API)에 간접적으로 적용됩니다. 그만큼
함수가 NULL "sv"를 허용한다는 문서 부족이 5.11.0에서 수정되었습니다.
5.11.0과 5.19.5 사이에서 함수는 NULLOK로 표시되었습니다. 최적화로는
이제 NULLOK 코드가 제거되었으며 함수는 다시 NULL이 아닌 것으로 표시되었습니다.
핵심 getter 유형 매크로는 이러한 함수에 NULL을 전달하지 않으며 충돌이 발생하기 때문입니다.
NULL을 전달하기 전에.

NULL "sv"가 sv_2*v* 함수에 전달될 수 있는 유일한 방법은 XS 코드를 직접 전달하는 것입니다.
sv_2*v*를 호출합니다. XS 코드가 Sv*V* 매크로를 사용하여 기본 결과를 가져오기 때문에 이는 거의 발생하지 않습니다.
SV에서 가치를 얻습니다. NULL "sv"가 전달되는 한 가지 가능한 상황
sv_2*v* 함수는 XS 코드가 자체 게터 유형 Sv*V* 매크로를 정의하는 경우입니다.
NULL의 경우 전에 공개 API Sv*OK*를 통해 SV 플래그 역참조 및 확인
매크로를 사용하거나 개인 API "SvFLAGS"를 직접 사용하고 "sv"가 NULL인 경우
sv_2*v는 NULL 리터럴로 작동하거나 NULL 값을 포함하는 "sv"를 전달합니다.

· newATTRSUB은 이제 매크로입니다.

공개 API newATTRSUB는 이전에 비공개 함수에 대한 매크로였습니다.
Perl_newATTRSUB. Perl_newATTRSUB 함수가 제거되었습니다. newATTRSUB은 이제 매크로입니다.
내부 기능이 다릅니다.

· "utf8n_to_uvchr()"에 의해 발생한 경고 변경

이 최하위 수준 함수는 UTF-8 문자열의 첫 번째 문자를 코드로 디코딩합니다.
가리키다. "XS" ​​레벨 코드로 접근이 가능하지만 사용을 권장하지 않습니다.
곧장. 이를 호출하는 더 높은 수준의 함수를 사용해야 합니다.
대신 perlapi의 "utf8_to_uvchr_buf"와 같이 사용하세요. 그러나 완전성을 위해 이것은
일부 변경 사항을 문서화합니다. 이제 모든 테스트 전에 기형 테스트가 완료됩니다.
다른 잠재적인 문제에 대해서는 이러한 문제 중 하나는 코드 포인트가 너무 커서
어떤 공식 표준에도 등장한 적이 없습니다(현재 표준은
이전 버전에서 허용되는 가장 높은 코드 포인트를 반환합니다. 가능합니다(그래도
CPAN에서는 수행되지 않음) 이러한 코드 포인트를 경고 및/또는 금지하는 동시에 더 작은 코드 포인트를 허용합니다.
여전히 법적 유니코드 최대값보다 높은 코드 포인트입니다. 다음에 대한 경고 메시지
이제 머신에서 표현할 수 있는 경우 코드 포인트가 포함됩니다. 이전에는
항상 원시 바이트를 표시합니다. 이는 표현할 수 없는 코드에 대해 여전히 수행되는 작업입니다.
포인트.

· 플러그형 정규식 엔진 인터페이스에 영향을 미치는 정규식 엔진 변경 사항

regexp.h를 통해 노출되고 extflags를 채우는 데 사용되는 많은 플래그
struct regexp의 멤버가 제거되었습니다. 이 필드는 기술적으로 비공개였습니다.
Perl의 자체 정규 표현식 엔진은 처음부터 거기에 노출되어서는 안 됩니다.

영향을 받는 플래그는 다음과 같습니다.

RXf_NOSCAN
RXf_CANY_SEEN
RXf_GPOS_SEEN
RXf_GPOS_FLOAT
RXf_ANCH_BOL
RXf_ANCH_MBOL
RXf_ANCH_SBOL
RXf_ANCH_GPOS

다음 플래그 마스크도 있습니다:

RXf_ANCH_SINGLE
RXf_ANCH

모두 PREGf_ 해당 항목으로 이름이 바뀌었고 regcomp.h로 이동되었습니다.

RXf_ANCH_ 플래그 중 하나 이상을 설정하여 이전에 달성한 동작입니다.
RXf_ANCH 마스크)는 이제 extflags의 *단일* 플래그 비트로 대체되었습니다.

RXf_IS_ANCHORED

이전에 이러한 플래그를 설정하는 데 사용되었던 플러그형 정규식 엔진은 이제 이를 설정해야 합니다.
혼자 플래그를 지정합니다.

· Perl 코어는 이제 "av_tindex()"("배열의 최상위 인덱스")를 일관되게 사용합니다.
"av_len()"에 대한 더 명확한 이름의 동의어입니다.

· 모호한 해석기 변수 "PL_timesbuf"는 초기에 제거될 것으로 예상됩니다.
5.21.x 개발 시리즈이므로 Perl 5.22.0은 XS 작성자에게 이를 제공하지 않습니다.
5.20.0에도 변수가 여전히 존재하지만, 이번 사전 경고가
지원 중단은 해당 변수를 사용하는 모든 사람에게 도움이 될 것입니다.

선택된 곤충 수정


정규병
· 일치하지 않거나 충돌할 수 있는 소수의 정규식 구성을 수정했습니다.
Perl 일치 대상 문자열이 2비트에서 32GB 라인 위에 할당된 경우
시스템. [RT #118175]

· "(?[...])" 정규식 구문 분석과 관련된 다양한 메모리 누수
구조가 수정되었습니다.

· "(?[...])"는 이제 "(?[...])"로 구성된 미리 컴파일된 패턴의 보간을 허용합니다.
("$pat = qr/(?[ [a] ])/; /(?[ $pat ])/") 안에 괄호로 묶인 문자 클래스가 있습니다.
이전에는 대괄호가 정규식 구문 분석기를 혼동했습니다.

· "길이가 XNUMX인 표현식에서 예상치 못한 수량자" 경고 메시지가 나타날 수 있습니다.
대체 항목도 포함하는 정규식에 대해 Perl v5.10에서 두 번 시작
(예: "a|b") 트리 최적화를 트리거합니다.

· Perl v5.18은 위아래가 혼합된 보간법을 실수로 도입하는 버그를 도입했습니다.
정규식의 등급이 지정된 UTF-8 문자열은 다음 패턴의 잘못된 UTF-8을 초래할 수 있습니다.
특히 "\x80..\xff" 범위의 다운그레이드된 문자가 UTF-8 뒤에 오는 경우
문자열, 예:

utf8::upgrade( my $u = "\x{e5}");
utf8::downgrade(my $d = "\x{e5}");
/$u$d/

[RT #118297]

· 여러 코드 블록을 포함하는 정규식에서 $1, $2 등의 값은
중첩된 정규식 호출로 설정하면 한 블록에서 다음 블록으로 누출됩니다. 지금
이러한 변수는 항상 시작 부분의 외부 정규식을 참조합니다.
임베디드 블록 [perl #117917].

· "/$qr/p"는 Perl 5.18.0에서 깨졌습니다. "/p" 플래그가 무시되었습니다. 이 문제가 해결되었습니다.
[펄 #118213]

· Perl 5.18.0부터 "/[#](?{})/x"와 같은 구문의 "#"이 잘못되었습니다.
코멘트로 해석됩니다. 코드 블록은 건너뛰고 구문 분석되지 않습니다. 이것은
수정되었습니다.

· Perl 5.001부터 "/[#$a]/x" 또는 "/[#]$a/x"와 같은 정규식은 다음과 같습니다.
"#"이 주석으로 잘못 해석되어 변수가 보간되지 않습니다.
이 문제가 수정되었습니다. [펄 #45667]

· Perl 5.18.0에서는 역참조된 정규식("${ qr// }")을 실수로 false로 만들었습니다.
부울. 이 문제가 해결되었습니다.

· 패턴의 시작 부분이 아닌 정규식에서 "\G"를 사용하는 것은
이제 버그가 약간 줄어들었습니다(여전히 문제가 있기는 하지만).

· 정규식이 코드 블록("/(?{...})/")을 포함하는 경우 및
지속적인 오버로딩으로 인해 코드 블록의 재컴파일이 발생했습니다.
컴파일은 외부 어휘 범위를 보지 못했습니다. 이것은 Perl 5.18.0의 회귀였습니다.

· 문자열 표현이 변경되면 "pos"로 설정된 문자열 위치가 바뀔 수 있습니다.
내부적으로 utf8로 또는 utfXNUMX에서. 예를 들어 다음과 같은 객체를 참조할 때 이런 일이 발생할 수 있습니다.
문자열 오버로딩.

· 동일한 인수를 사용하여 두 개의 "pos" 호출의 반환 값에 대한 참조를 가져옵니다.
그런 다음 하나에 참조를 할당하고 다른 하나에 "undef"를 할당하면 어설션이 발생할 수 있습니다.
실패 또는 메모리 누수.

· 이제 존재하지 않는 캡처를 참조할 때 @- 및 @+ 요소가 올바르게 업데이트됩니다.
이전에는 참조된 요소("$ref = \$-[1]")가 잘못된 일치 항목을 참조할 수 있었습니다.
후속 경기 후.

· \123과 같은 정규식 역참조(또는 모호한 역참조/XNUMX진수)를 구문 분석하는 코드는 다음과 같습니다.
간편한 설치 아토이(), 긴 숫자 문자열에서 음수 값으로 반올림할 수 있으며
분할 오류가 발생합니다. 이제 이 문제가 해결되었습니다. [펄 #119505]

· "*^R"에 다른 typeglob을 할당해도 더 이상 정규식 엔진이 작동하지 않습니다.
크래시.

· 중괄호 없이 사용될 경우 "\N" 정규식 이스케이프(
"[^\n]"), /x 아래 공백이 뒤에 오는 경우 "*"를 무시했습니다. 그것은 있었다
"[^\n]"을 의미하는 "\N"이 5.12.0에서 도입된 이후로 이런 식으로 사용되었습니다.

· "s///", "tr///" 및 "y///"는 이제 와이드 문자를 구분 기호로 사용할 때 작동합니다.
[펄 #120463]

· 정규식에서 종료되지 않은(?...) 시퀀스의 일부 경우(예: "/(?</")
"panic: memory Wrap" 대신 적절한 오류 메시지를 생성하도록 수정되었습니다.
다른 경우(예: "/(?(/")는 아직 수정되지 않았습니다.

· 오버로드된 개체에 대한 참조에 대한 참조가 일반 개체에서 반환된 경우
표현식 "(??{...})" 코드 블록에서 잘못된 암시적 역참조가 발생할 수 있습니다.
내부 참조가 이전에 코드 블록에 의해 반환된 경우.

· "(??{...})"에서 반환된 묶인 변수는 일치 변수의 내부 값을 봅니다.
(즉, 블록 내부 일치 항목의 $1 등)을 FETCH 메서드에서 사용합니다. 이했다
오버로드된 개체에 대한 참조가 개체에 할당된 마지막 항목인 경우에는 그렇지 않습니다.
묶인 변수. 대신에 일치 변수는 외부 패턴을 참조했습니다.
FETCH 호출.

· 로케일을 사용하는 정규 표현식을 통해 예상치 못한 오염을 수정합니다. 이전에는 특정 조건에서
문자 클래스를 사용하면 안되는 경우에 오염이 발생할 수 있습니다. 일부 캐릭터
클래스는 로케일에 따라 다르지만 이번 패치 이전에는 때때로 오염이 발생했습니다.
로케일에 의존하지 않는 문자 클래스의 경우에도 마찬가지입니다. [펄 #120675]

· 특정 조건에서 Perl은 Lookbehind 단언문에서 오류를 발생시킵니다.
regexp, 명명된 하위 패턴을 참조하는 주장, 뒤돌아보기가 다음과 같다고 불평함
그렇지 않은 경우 변수입니다. 이 문제가 해결되었습니다. [펄 #120600], [펄 #120618]. 그만큼
현재 수정 사항은 향후 개선될 수 있습니다.

· $^R은 이를 초기화한 정규식 외부에서는 사용할 수 없습니다. [펄
#121070]

· 다음을 위한 대규모 수정 및 리팩토링 re_intuit_start() 병합되었습니다. 하이라이트
위치 :

· 정규 표현식 "/\x{100}[xy]\x{100}{2}/"를 컴파일할 때 발생하는 패닉을 수정했습니다.

· 전역 패턴 일치를 수행할 때 성능 회귀를 수정했습니다.
UTF-8 문자열. [펄 #120692]

· 다음과 같은 정규식과 일치하는 또 다른 성능 문제를 수정했습니다.
긴 UTF-1,2 문자열에 대한 "/ab.{8}x/"는 불필요하게 바이트를 계산합니다.
문자열의 큰 부분에 대한 오프셋입니다. [펄 #120692]

· HP에서 GCC로 빌드할 때 정규식을 컴파일할 때 정렬 오류가 수정되었습니다.
UX 64비트.

· 64비트 플랫폼에서 이제 "pos"를 2**31-1보다 높은 값으로 설정할 수 있습니다. [펄
#72766]

5 디버거 -d
· 디버거의 "man" 명령이 수정되었습니다. v5.18.0 릴리스에서는 문제가 발생했습니다. 그만큼
"man" 명령은 "doc" 및 "perldoc"라는 이름으로 별명이 지정되었습니다. 이제 모두 다시 작동합니다.

· @_는 이제 디버거에서 올바르게 표시되며,
v5.18.0의 디버거. [RT #118169]

· 쓰기 중 복사 빌드(5.20.0의 기본값)에서 "${'_<-e'}[0]"은 더 이상 가져오지 않습니다.
망가졌다. 이것은 단일 라이너에 대한 디버거 사용을 위해 저장된 첫 번째 입력 줄입니다.
[펄 #118627].

· 스레드되지 않은 빌드에서 "${"_<filename"}"을 더 이상 참조 또는 typeglob으로 설정하지 않습니다.
"__FILE__" 및 일부 오류 메시지로 인해 손상된 문자열이 생성되고 더 이상 발생하지 않습니다.
문자열 평가의 "#line" 지시문이 소스 라인을 제공하는 것을 방지합니다.
디버거. 스레드 빌드는 영향을 받지 않았습니다.

· Perl 5.12부터 다음과 같은 경우 줄 번호가 XNUMX씩 빠졌습니다. -d 스위치는 에서 사용되었습니다.
#! 선. 이제 그 말이 맞습니다.

· "*DB::DB = sub {} if 0"은 더 이상 Perl의 디버깅 모드에서 "DB::DB"를 찾는 것을 중지하지 않습니다.
이후에 선언된 잠수함.

· "%{'_<...'}" 해시는 이제 대신 해당 "@{'_<...'}"에 중단점을 설정합니다.
@DB::dbline의 별칭이 지정된 배열입니다. [펄 #119799]

· $DB::sub를 설정할 때 set-magic을 호출합니다. [펄 #121255]

· 디버거의 "n" 명령은 이제 lvalue 서브루틴을 존중하고 이를 무시합니다. [perl
#118839].

어휘 서브루틴
· 어휘 상수("my sub a() { 42 }")가 인라인될 때 더 이상 충돌이 발생하지 않습니다.

· 이제 컴파일 시 어휘 서브루틴에 연결된 매개변수 프로토타입이 적용됩니다.
괄호 없는 하위 호출. 이전에는 프로토타입이 다음에 대해서만 영광을 받았습니다.
통화 괄호. [RT #116735]

· 동일한 서브루틴에 대한 호출과 결합된 어휘 서브루틴의 구문 오류
더 이상 컴파일 타임에 충돌이 발생하지 않습니다.

· 심층 재귀 경고로 인해 더 이상 어휘 서브루틴이 충돌하지 않습니다. [RT #118521]

· dtrace 하위 항목 프로브는 이제 [perl 충돌 대신 어휘 하위와 함께 작동합니다.
#118305].

· inlinable 어휘 서브루틴("my sub foo() { 42 } undef &foo")을 정의 해제하면 다음과 같습니다.
경고가 켜져 있으면 충돌이 발생합니다.

· 상속된 메서드로 사용되는 정의되지 않은 어휘 하위가 더 이상 충돌하지 않습니다.

· "CORE"라는 어휘 하위가 있어도 더 이상 CORE:: 접두사가 중지되지 않습니다.
일.

모두 다른
· 이제 OP 할당 코드는 "struct"에 대한 모든 경우에 올바르게 정렬된 메모리를 반환합니다.
pmop". 이전에는 4바이트 경계로 정렬된 메모리만 반환할 수 있었습니다.
일부 64비트 플랫폼에서 32비트 IV를 사용하는 itthreads 빌드에는 올바르지 않습니다. 특히,
이로 인해 sparc GNU/Linux에서 빌드가 완전히 실패했습니다. [RT #118055]

· 이제 스칼라 컨텍스트에서 대규모 해시를 평가하는 것이 훨씬 더 빨라졌습니다.
해시의 체인은 이제 더 큰 해시에 대해 캐시됩니다. 더 작은 해시는 계속해서 그렇지 않습니다.
이를 저장하고 필요할 때 계산하면 IV 하나가 절약됩니다. 그것은 1 IV가 될 것입니다
해시로 구축된 모든 객체에 대한 오버헤드. [RT #114576]

· Perl v5.16에는 표시되지 않는 XSUB에 대한 호출이 발생하는 버그가 실수로 도입되었습니다.
컴파일 타임에 lvalue로 처리되어 할당될 수 있습니다.
서브루틴은 lvalue 하위가 아닙니다. 이 문제가 해결되었습니다. [RT #117947]

· 문자열 부분에 빈 문자열이 있지만 5.18.0이 아닌 Perl vXNUMX 이중 변수에서
숫자 부분의 숫자가 true로 처리되기 시작합니다. 이전 버전에서는
false로 처리되며 문자열 표현이 우선합니다. 오래된
동작이 복원되었습니다. [RT #118159]

· Perl v5.12부터 동일한 내장 키워드를 재정의하는 상수 인라인
name이 "use subs"를 반대하여 상수에 대한 후속 언급이 사용되도록 했습니다.
대신 내장 키워드를 사용하세요. 이 문제가 해결되었습니다.

· "-l $handle"에 의해 생성된 경고는 이제 IO 참조 및 glob에 적용됩니다.
글로브 심판. 해당 경고는 이제 UTF8-clean입니다. [RT #117595]

· "로컬 $ENV{nonexistent_env_var} 삭제"로 인해 더 이상 메모리가 누출되지 않습니다.

· "CORE::" 접두사가 붙은 키워드 앞에 "sort" 및 "require"를 입력하면 이제 이를
서브루틴이나 모듈 이름이 아닌 키워드입니다. [RT #24482]

· 특정 난제를 통해 현재 패키지를 해제할 수 있습니다.
특정 연산자("bless", "reset", "open", "eval")는 대처할 수 없어 충돌이 발생했습니다.
그들은 더욱 탄력적으로 만들어졌습니다. [RT #117941]

· glob-to-glob 할당을 통해 파일 핸들에 별칭을 지정하면 내부 메서드가 업데이트되지 않습니다.
파일 핸들과 동일한 이름의 패키지가 존재하면 올바르게 캐시됩니다.
대신 패키지로 이동하는 파일 핸들 메서드 호출. 이 문제가 해결되었습니다.

· "./Configure -de -Dusevendorprefix"가 기본값이 아닙니다. [RT #64126]

· "도달할 수 없는 설명" 경고가 perldiag에 다음과 같이 나열되었습니다.
"exec" 카테고리 경고가 있지만 "구문" 카테고리에 의해 활성화 및 비활성화되었습니다. ~에
반면에 "exec" 범주는 치명적인 정도를 제어했습니다. 이제는 완전히
"exec" 카테고리에 의해 처리됩니다.

· "tr///" 및 "y///"에 대한 "대체 목록이 검색 목록보다 깁니다" 경고 없음
"/c" 플래그가 있으면 더 이상 발생합니다. [RT #118047]

· NV의 문자열화는 캐시되지 않으므로 어휘 로캘이 제어됩니다.
소수점 문자열화. [펄 #108378] [펄 #115800]

· Perl의 로케일 처리와 관련된 몇 가지 수정 사항이 있었습니다. 펄 #38193은
위의 "내부 변경 사항"에 설명되어 있습니다. 또한 #118197도 수정되었습니다. 여기서 기수는
(소수점) 문자는 ASCII 문자여야 합니다(일부에서는 작동하지 않음).
비서구 언어); 및 #115808(실패 시 "POSIX::setlocale()"이 반환됨)
해당 경고가 정의되지 않은 경우에도 경고하지 않은 "undef"
사용하도록 설정되었습니다.

· 세 번째 인수가 0으로 평가되는 명명된 상수인 "분할" 연산자 컴파일
더 이상 상수 값이 변경되지 않습니다.

· "index"의 두 번째 인수로 사용되는 명명된 상수는 더 이상
참조, 정규 표현식, Dualvar 등인 경우 문자열입니다.

· 정의되지 않은 값을 평가하는 명명된 상수는 두 번째 인수로 사용됩니다.
"인덱스"는 더 이상 컴파일 타임에 "초기화되지 않은" 경고를 생성하지 않습니다. 그것은 여전히
런타임에 생성합니다.

· @INC의 서브루틴에서 스칼라가 반환되었을 때 참조된 스칼라는
마술처럼 IO 사물로 변환되어 다음과 같은 경우 "기괴한 복사" 오류가 발생할 수 있습니다.
그 스칼라는 다른 곳에서도 계속 사용되었습니다. 이제 Perl은
대신 스칼라.

· "정렬" 연산자의 특정 용도는 다음과 같이 배열을 수정하는 데 최적화되어 있습니다.
"@a = @a 정렬". 정렬하는 동안 배열은 읽기 전용으로 설정됩니다. 정렬 블록인 경우
죽어야 하는 경우 배열은 "정렬" 외부에서도 읽기 전용으로 유지됩니다. 이것
수정되었습니다.

· 정렬 블록 내부의 $a 및 $b는 "정렬"에 대한 실제 인수에 별칭이 지정되어 있습니다.
이 두 변수를 통해 수정할 수 있습니다. 예를 들어 다음과 같은 경우에는 항상 작동하지 않았습니다.
lvalue subs 및 $#ary, 그리고 아마도 다른 많은 연산자들일 것입니다. 이제 작동합니다.

· "정렬"에 대한 인수는 이제 모두 목록 컨텍스트에 있습니다. "정렬" 자체가 호출된 경우
void 또는 스칼라 컨텍스트에서는 일부, 그러나 전부는 아니었지만, 이전에 무효였던 주장의 전부는 아닙니다.
또는 스칼라 컨텍스트.

· U+00FF 이상의 유니코드 문자가 포함된 서브루틴 프로토타입이 도중에 손상되었습니다.
폐쇄 복제. 이는 어휘 변수를 닫는 서브루틴에서 발생합니다.
외부에서 선언되고 어휘 하위로 선언됩니다.

· "UNIVERSAL::can"은 이제 메소드 호출과 동일한 방식으로 첫 번째 인수를 처리합니다.
비어 있지 않은 IO 슬롯이 있는 Typeglob 및 glob 참조는 핸들로 처리됩니다.
해당 이름의 핸들이 있는 경우 문자열은 패키지가 아닌 파일 핸들로 처리됩니다.
존재합니다 [perl #113932].

· typeglob을 문자열화하는 데 사용되는 typeglob에 대한 메소드 호출(예: "*ARGV->getline")
그럼 다시 찾아보세요. Perl 5.18.0의 변경 사항과 결합하여 "*foo->bar"가 허용되었습니다.
"foo->bar"와 같은 "foo" 패키지의 메소드를 호출합니다. 어떤 경우에는 다음이 발생할 수 있습니다.
잘못된 핸들에서 호출되는 메서드입니다. 이제 typeglob 인수는 다음과 같이 처리됩니다.
핸들("(\*foo)->bar"와 유사) 또는 IO 슬롯이 비어 있으면 오류가 발생합니다.

· 연결된 변수 또는 별칭이 지정된 서브루틴 인수에 vstring 할당
존재하지 않는 해시 또는 배열 요소는 이제 vstring을 평면화하지 않고도 작동합니다.
일반 문자열.

· "pos", "tie", "tied" 및 "untie"가 앨리어싱된 서브루틴 인수에서 제대로 작동하지 않았습니다.
존재하지 않는 해시 및 배열 요소 [perl #77814, #27010].

· "=>" 굵은 화살표 연산자는 이제 내장 키워드가
다음 줄을 사용하여 다른 베어워드를 처리하는 방식과 일관성을 유지합니다.

· "\&$glob"을 통해 서브루틴 스텁을 자동 활성화하면 Perl 5.18.0에서 충돌이 발생하기 시작했습니다.
$glob이 단지 실제 glob의 복사본인 경우, 즉 glob이 있는 스칼라인 경우
그것에 할당되었습니다. 이 문제가 해결되었습니다. [펄 #119051]

· Perl은 반환을 참조할 때 구현 세부 사항을 유출하곤 했습니다.
특정 연산자의 값. "for ($a+$b) { 경고 \$_; 경고 \$_ }"는 두 개를 표시하는 데 사용됩니다.
"\" 연산자가 변수를 복사했기 때문에 메모리 주소가 다릅니다. 아래에
스레드 빌드에서는 상수("for (1) { ... }"). 이는
결정된. [펄 #21979, #78194, #89188, #109746, #114838, #115388]

· 범위 연산자 ".."는 호출할 때마다 동일한 수정 가능한 스칼라를 반환했습니다.
"foreach" 루프 헤더에 있는 유일한 것이 아니라면 말이죠. 이는 다음과 같이 변경됨을 의미합니다.
반환된 목록 내의 값은 다음에 연산자를 사용할 때 표시됩니다.
실행. [펄 #3105]

· 상수 폴딩 및 서브루틴 인라인은 더 이상 다음과 같은 작업을 발생시키지 않습니다.
대신 읽기 전용 값을 반환하려면 일반적으로 새로운 수정 가능한 스칼라를 반환합니다.

· "sub () { $some_variable }" 형식의 클로저는 더 이상 인라인되지 않습니다.
서브루틴 호출자가 무시하도록 변수를 변경합니다. [펄 #79908]

· "ref"와 같은 특정 연산자의 반환 값은 때때로 서로 공유됩니다.
동일한 서브루틴에 대한 재귀 호출로 인해 내부 호출이 값을 수정하게 됨
외부 호출에서 "ref"에 의해 반환됩니다. 이 문제가 해결되었습니다.

· "__PACKAGE__" 및 패키지 이름이나 해시 키를 반환하는 상수는 이제 일관되게 사용됩니다.
읽기 전용. 다양한 이전 Perl 릴리스에서는 특정 환경에서 변경 가능해졌습니다.
상황.

· "한 번 사용" 경고를 활성화해도 더 이상 생성된 숨김 순환에 충돌이 발생하지 않습니다.
컴파일 타임에 ("*Foo::Bar::Foo:: = *Foo::").

· 해시 키에 사용되는 Undef 상수("상수 u => undef; $h{+u}" 사용)는 더 이상 사용되지 않습니다.
컴파일 타임에 "초기화되지 않은" 경고를 생성합니다.

· 대체 교체 내에서 대체 대상을 수정해도 더 이상 문제가 발생하지 않습니다.
충돌.

· 잘못된 pragma 설정을 사용하는 데 사용된 문자열 평가 내부의 첫 번째 문
때로는 계속 접는 동안. "eval 'uc chr 0xe0'"은 다음 중에서 무작위로 선택합니다.
유니코드, 바이트 및 로캘 의미 체계. 이 문제가 해결되었습니다.

· @INC 필터의 반환 값 처리(서브루틴이 반환한 서브루틴)
@INC)가 다양한 방법으로 수정되었습니다. 이전에 묶인 변수가 잘못 처리되었습니다.
$_를 참조 또는 typeglob으로 설정하면 충돌이 발생할 수 있습니다.

· "SvPVbyte" XS 함수가 반환되는 묶인 스칼라와 작동하도록 수정되었습니다.
문자열이 아닌 다른 것. "SvPV"가 있는 경우 utf8을 반환했습니다.
할 것이다.

· Perl 5.18.0에서 역참조된 일반 항목에서 실수로 "--" 및 "++" 충돌이 발생했습니다.
표현식을 사용하고 vstring을 병합하는 "++"를 중지했습니다.

· 첫 번째 인수가 다음인 경우 "bless"는 더 이상 "비참조 값을 축복할 수 없음"으로 죽지 않습니다.
묶인 참조.

· 인수가 포함된 "재설정"은 더 이상 쓰기 시 복사 스칼라, 정규식,
typeglob 복사본 및 vstring. 또한 해당 값이나 읽기 전용 값이 나타나면
더 이상 같은 이름의 배열이나 해시를 건너뛰지 않습니다.

· 인수가 포함된 "reset"은 이제 typeglobs에 별칭이 지정된 스칼라를 건너뜁니다("for $z (*foo) {
"z" }" 재설정). 이전에는 메모리가 손상되거나 충돌이 발생했습니다.

· "ucfirst" 및 "lcfirst"는 바이트 pragma를 준수하지 않았습니다. 이건 회귀였어
펄 5.12부터. [펄 #117355]

· "UNIVERSAL::DESTROY"에 대한 변경 사항은 이제 모든 클래스의 DESTROY 캐시를 업데이트합니다.
이미 객체가 파괴된 클래스가 이전 하위를 계속 사용하도록 합니다.
이것은 Perl 5.18의 회귀였습니다. [펄 #114864]

· 사용 중단 경고 "'\'의 쓸모없는 사용;
Perl 5.18.0에 추가된 메타문자 '%c''를 이스케이프 처리하지 않습니다. [perl
#119101]

· $^E 값은 이제 Windows의 신호 처리기에 저장됩니다. [펄 #85104]

· 어휘적 파일 ​​핸들("open my $fh..."와 같은)은 일반적으로 다음을 기반으로 이름이 지정됩니다.
현재 패키지와 변수 이름(예: "메인::$fh". 재귀에서는
filehandle에서 이름의 "$fh" 부분이 손실되었습니다. 이 문제가 해결되었습니다.

· XSUB에서 반환된 초기화되지 않은 값은 더 이상 초기화되지 않은 값에서 면제되지 않습니다.
경고. [펄 #118693]

· "elsif ("")"는 더 이상 무효 컨텍스트에 대한 경고를 잘못 생성하지 않습니다. [펄
#118753]

· 이제 서브루틴에 "undef"를 전달하면 @_에 동일한 읽기 전용 undefine이 포함됩니다.
"undef"가 반환하는 스칼라입니다. 또한, "exists $_[0]"은 이제 다음과 같은 경우 true를 반환합니다.
"undef"가 첫 번째 인수였습니다. [펄 #7508, #109726]

· 존재하지 않는 배열 요소를 서브루틴에 전달해도 일반적으로 자동 활성화되지 않습니다.
서브루틴이 인수를 수정하지 않는 한. 이것은 제대로 작동하지 않았습니다
음수 인덱스 및 배열 내에 존재하지 않는 요소가 있습니다. 요소는
즉시 생기를 얻습니다. 지연된 활성화가 다음 작업으로 확장되었습니다.
저것들. [펄 #118691]

· @foo 배열이 지정된 후 $#foo가 반환한 스칼라에 참조 또는 glob을 할당합니다.
해제되어도 더 이상 빌드 디버깅 시 어설션 오류가 발생하지 않으며 메모리 누수가 발생하지 않습니다.
일반 빌드.

· 64비트 플랫폼에서는 1..1000000000000과 같은 큰 범위가 더 이상 충돌하지 않지만 소모됩니다.
대신에 당신의 모든 기억을. [펄 #119161]

· "__DATA__"는 이제 "DATA" 핸들을 올바른 패키지에 넣습니다.
glob 할당을 통해 패키지 이름이 변경되었습니다.

· "die", "last", "next", "redo", "goto", "exit" 시 스코프 해제가 가능
현재 진행 중인 서브루틴이나 형식을 재귀적으로 호출하기 위한 "DESTROY"
나갔다. 그런 경우 때로는 하위 내부의 어휘 변수가 시작됩니다.
정의되지 않은 대신 외부 호출의 값을 갖습니다. 이것
수정되었습니다. [펄 #119311]

· ${^MPEN}은 더 이상 ${^MATCH}의 동의어로 처리되지 않습니다.

· Perl은 이제 "(발신자)[2]"에서 올바른 줄 번호를 반환하기 위해 좀 더 열심히 노력합니다.
[펄 #115768]

· 여러 줄의 따옴표 같은 연산자 내부의 줄 번호가 이제 올바르게 보고됩니다. [펄
#3643]

· 이제 따옴표 같은 연산자에 포함된 코드 내부의 "#line" 지시문이 존중됩니다.

· 이제 두 개의 here-doc 마커가 있을 때 두 번째 here-doc 내에서 줄 번호가 정확합니다.
같은 라인에서 발생합니다.

· Perl 5.18의 최적화로 인해 잘못된 가정이 생겨서 Perl과의 잘못된 상호 작용이 발생했습니다.
Devel::CallParser CPAN 모듈. 모듈이 로드된 경우 어휘 변수
"my(...)" 목록 뒤에 오는 별도의 문에서 선언된 항목은 삭제되지 않을 수 있습니다.
범위 종료.

· &xsub 및 "goto &xsub" 호출을 사용하면 호출된 서브루틴이 다음 요소를 자동 활성화할 수 있습니다.
@_.

· *_이 정의되지 않았고 ARRAY 항목이 없는 경우 &xsub 및 "goto &xsub"가 더 이상 충돌하지 않습니다.
(즉, @_이 존재하지 않습니다.)

· &xsub 및 "goto &xsub"는 이제 묶여 있는 @_와 함께 작동합니다.

· 너무 긴 식별자로 인해 더 이상 버퍼 오버플로(및 충돌)가 발생하지 않습니다. 그들은 시작했다
Perl 5.18에서는 그렇게 합니다.

· 이제 "스칼라 값 @hash{foo}는 $hash{foo}로 작성하는 것이 더 좋습니다."라는 경고는 이제 훨씬 더 많은 결과를 생성합니다.
오탐률이 적습니다. 특히 @hash{+function_returning_a_list} 및 @hash{ qw
"foo bar baz" } 더 이상 경고하지 않습니다. 배열 슬라이스에도 동일하게 적용됩니다. [펄 #28380,
#114024]

· "$! = EINVAL; waitpid(0, WNOHANG);" 더 이상 내부 무한 루프에 빠지지 않습니다.
[펄 #85228]

· 파일핸들 중복에서 발생할 수 있는 분할 오류가 수정되었습니다.

· @INC의 서브루틴은 초기 값을 포함하는 스칼라에 대한 참조를 반환할 수 있습니다.
파일의 내용. 그러나 해당 스칼라는 참조되지 않으면 조기에 해제되었습니다.
다른 곳에서는 무작위 결과를 제공합니다.

· "last"는 더 이상 동일한 문이 지금까지 누적한 값을 반환하지 않습니다.
무엇보다도 "push @a, last"가 반환을 시도하는 오랜 버그가 있습니다.
@a를 프로세스에서 스칼라처럼 복사하면 "Bizarre"라는 오류가 발생합니다.
마지막에 ARRAY의 복사본입니다." [perl #3112]

· 어떤 경우에는 프로세스와의 파이프를 위해 열린 파일 핸들을 닫는 경우가 있었습니다.
표준 핸들에 복제되면 Perl의 내부 waitpid 래퍼를 호출합니다.
pid는 85228입니다. [perl #XNUMX]에 대한 수정으로 이 XNUMX pid가 다음으로 전달되었습니다.
"waitpid", 프로세스를 차단할 수 있습니다. 더 이상 프로세스 XNUMX을 기다리지 않습니다.
발생합니다. [펄 #119893]

· "select"는 네 번째(시간 초과) 인수에서 마법을 무시하여 효과를 발생시키는 데 사용됩니다.
예를 들어 "선택"은 예상되는 수면 시간이 아닌 무기한 차단됩니다. 이것은
이제 수정되었습니다. [펄 #120102]

· "for my class $foo"의 클래스 이름이 이제 올바르게 구문 분석됩니다. 의 경우
클래스 이름의 두 번째 문자 뒤에 숫자(예: 'a1b')가 옵니다.
"루프 변수에 $ 누락" 오류가 발생합니다. [펄 #120112]

· Perl 5.18.0에서는 "엄격한 사용" 및 "정수 사용"에서 "-bareword"를 실수로 허용하지 않았습니다.
이것은 수정되었습니다. [펄 #120288]

· 줄 시작 부분에 "-a"(또는 filetest가 아닌 단일 문자가 포함된 하이픈)
연산자)는 더 이상 잘못된 '괄호 없이 "-a"를 사용하면 됩니다.
모호하다' 경고. [펄 #120288]

· Lvalue 컨텍스트가 이제 기본 블록과 "if" 및 "else" 블록으로 올바르게 전파됩니다.
lvalue 서브루틴에서. 이전에는 배열과 해시가 때때로 잘못되었습니다.
lvalue 목록 컨텍스트에서 반환될 때 평면화되거나 "Bizarre copy" 오류가 발생할 수 있습니다.
[펄 #119797]

· Lvalue 컨텍스트는 이제 "||" 분기로 전파됩니다. 그리고 "&&" (그리고 그들의
알파벳 등가물, "or" 및 "and"). 이는 "foreach (pos $x || pos $y)"를 의미합니다.
{...}"는 이제 $_를 통해 "pos"를 수정할 수 있도록 허용합니다.

· "stat" 및 "readline"은 마지막으로 사용된 핸들을 기억합니다. 전자는 특수 "_"에 대한 것입니다.
파일 핸들, 후자는 "${^LAST_FH}"입니다. "eval "*foo if 0"" 여기서 *foo가 마지막이었습니다.
"stat" 또는 "readline"에 전달된 핸들은 다음과 같은 경우 해당 핸들을 잊어버릴 수 있습니다.
핸들은 아직 열리지 않았습니다. 이 문제가 해결되었습니다.

· 충돌을 일으키는 "$::{a} 삭제", "$::{ENV} 삭제" 등의 다양한 사례가 발생했습니다.
결정된. [펄 #54044]

· $ 설정! "require"를 호출하기 전에 EACCESS에 연결하면 "require"의 동작에 영향을 미칠 수 있습니다.
이 문제가 해결되었습니다.

· "표현식에서 $1을 의미하기 위해 \1을 사용할 수 없습니다." 경고 메시지는 이제
교체의 오른쪽(교체) 부분. 이전에는 코드에서 이런 일이 발생할 수 있었습니다.
왼쪽이나 다른 따옴표 같은 연산자에 포함됩니다.

· 참조에 대한 축복("bless $thisref, $thatref")은 오랫동안 허용되지 않았지만
$/와 같은 두 번째 마법 스칼라와 동점인 경우는 제외되었습니다. 그들은 더 이상
이다. [펄 #119809]

· 클래스 인수가 다음과 같은 경우 참조에 대한 축복이 5.18에서 실수로 허용되었습니다.
오래된 메소드 캐시가 있는 축복받은 참조(즉, 해당 클래스에 하위 항목이 정의되어 있음)
마지막 메소드 호출 이후). 5.16에서와 같이 다시 한 번 허용되지 않습니다.

· $x가 "my Class $x"로 선언된 "$x->{key}"는 다음과 같은 경우 더 이상 충돌하지 않습니다.
클래스::FIELDS 서브루틴 스텁이 선언되었습니다.

· @$obj{'key'} 및 "${$obj}{key}"는 컴파일 시간 필드 검사에서 제외되었습니다.
("해당 클래스 필드 없음", 필드 참조) 그러나 더 이상 그렇지 않습니다.

· 큰 인덱스가 있는 존재하지 않는 배열 요소가 다음과 같은 서브루틴에 전달되었습니다.
배열을 찾은 다음 해당 요소에 액세스하려고 하면 더 이상 충돌이 발생하지 않습니다.

· NEGATIVE_INDICES라는 서브루틴 스텁을 선언해도 더 이상 음수 배열이 생성되지 않습니다.
현재 패키지가 묶인 배열 클래스인 경우 인덱스가 충돌합니다.

· CORE::GLOBAL:: 패키지에서 "require", "glob" 또는 "do" 서브루틴 스텁 선언
더 이상 해당 함수에 대한 호출 컴파일이 충돌하지 않습니다.

· CORE::GLOBAL:: 상수에 대한 별칭 함수는 Perl 5.10에서 작동이 중지되었지만
이제 수정되었습니다.

· "`...`" 또는 "qx/.../"가 "readpipe" 재정의를 호출하는 경우 큰따옴표 보간
재정의가 없는 경우와 마찬가지로 이제 이런 일이 발생합니다. 이전에는
재정의를 사용하면 이러한 따옴표 같은 연산자가 "q{}"처럼 작동하여 억제됩니다.
보간. [펄 #115330]

· "<<<`...`" 여기 문서(백틱을 구분 기호로 사용)는 이제 "readpipe" 재정의를 호출합니다.
[펄 #119827]

· "&CORE::exit()" 및 "&CORE::die()"는 이제 vmsish 힌트를 존중합니다.

· 이제 동일한 glob을 정의 해제하는 DESTROY 메서드를 트리거하는 glob 정의를 해제할 수 있습니다.
안전한. "참조되지 않은 glob 포인터를 해제하려고 합니다"라는 경고를 생성하는 데 사용되었습니다.
메모리 누수.

· 서브루틴 재정의("eval 'sub foo{}'" 또는 XS 코드의 경우 "newXS")가
재정의되는 하위에 대한 DESTROY 메서드와 해당 메서드는
동일한 슬롯에 대한 서브루틴("*foo = sub {}"), $_[0]은 더 이상
해제된 스칼라. 이제 새로운 서브루틴이 설치될 때까지 DESTROY가 지연됩니다.

· Windows에서 Perl은 더 이상 호출하지 않습니다. 닫기핸들() 소켓 손잡이에. 이것은 만든다
관련 없는 특정 잘못된 핸들 예외를 제거하여 Windows에서 더 쉽게 디버깅할 수 있습니다. 그것
또한 Perl 프로세스에서 소켓 기능이 무작위로 실패하게 만드는 경쟁 조건을 수정합니다.
여러 OS 스레드가 있고 테스트 실패 가능성이 있습니다.
dist/IO/t/cachepropagate-tcp.t. [펄 #120091/118059]

· UTF-8로 인코딩된 문자열이나 연결, 오버로드 또는 이상한 변수와 관련된 형식
문자열화된 참조(및 최근 Perls에서는 순수 NOK 변수)는 일반적으로 잘못된 작업을 수행합니다.
다음과 같이 var가 문자열로 처리되고 반복적으로 잘려지는 형식의 문제입니다.
"^<<<~~" 및 유사합니다. 이제 이 문제가 해결되었습니다. [펄
#33832/45325/113868/119847/119849/119851]

· "semctl(..., SETVAL, ...)"은 세마포어를 제공된 상위 32비트로 설정합니다.
32비트 빅엔디안 시스템에서 하위 64비트 대신 정수입니다. [펄 #120635]

· "readdir()"은 이제 $만 설정합니다! 오류가 발생했습니다. $! 그러면 더 이상 "EBADF"로 설정되지 않습니다.
시스템 호출이 $!를 설정하지 않는 한 "undef" 종료는 디렉토리에서 읽혀집니다. [펄
#118651]

· &CORE::glob은 더 이상 Perl의 스택 가져오기로 인해 간헐적인 충돌을 일으키지 않습니다.
손상되었습니다. [펄 #119993]

· 모듈(예: "<:encoding(utf8)")을 로드하는 레이어를 사용하는 "열기"는 더 이상
스택 손상으로 인한 충돌 위험.

· Perl 5.18은 AUTOLOAD를 검색하여 "->SUPER::foo" 메소드 호출을 통한 자동 로딩을 중단했습니다.
현재 패키지의 슈퍼클래스가 아닌 현재 패키지에서 가져옵니다. 이것은
결정된. [펄 #120694]

· 상수가 true를 유지하는 "conSTANT까지 {} 수행"을 유발하는 오랜 버그
할당되지 않은 메모리를 읽는 값이 해결되었습니다. 이는 대개 다음 이후에 발생합니다.
구문 오류. 이전 버전의 Perl에서는 간헐적으로 충돌이 발생했습니다. [펄 #72406]

· HP-UX $를 수정하세요! 실패. HP-UX 스트러러() 알 수 없는 오류에 대해 빈 문자열을 반환합니다.
암호. 이로 인해 DEBUGGING 빌드에서 어설션이 실패했습니다. 이제 대신에
"$!"에 대한 문자열을 반환했습니다. 알 수 없는 오류에 대한 코드임을 나타내는 텍스트가 포함되어 있습니다.

· @INC의 개별적으로 연결된 요소(예: "tie $INC[0]...")가 이제 올바르게 처리됩니다.
이전에는 이렇게 묶인 요소에 의해 반환된 서브가 서브로 처리되는지 여부
이전에 FETCH가 발생했는지 여부에 따라 달라집니다.

· utf8에서 동일한 "getc" 연산자가 사용된 후 바이트 크기 핸들의 "getc"
바이트를 utf8로 처리하는 데 사용되는 핸들로 인해 비정상적인 동작(예: 잘못된 형식)이 발생합니다.
UTF-8 경고).

· 형식 인수 줄 시작 부분의 초기 "{"는 항상 다음과 같이 해석되었습니다.
v5.18 이전 블록의 시작. Perl v5.18에서는 다음과 같이 취급되기 시작했습니다.
모호한 토큰. 파서는 그것이 익명이어야 하는지 추측합니다.
해시 생성자 또는 내용을 기반으로 하는 블록입니다. 이제 이전 동작은
복원되었습니다. [펄 #119973]

· Perl v5.18에서는 "undef *_; goto &sub" 및 "local *_; goto &sub"가 충돌하기 시작했습니다. 이것
수정되었습니다. [펄 #119949]

· Win32에서 여러 스레드와 결합된 백틱(" `` " 또는 " qx// ")은 다음과 같은 결과를 초래할 수 있습니다.
외부 명령의 백틱에 의해 캡처되는 하나의 스레드에서 stdout으로 전송된 출력
다른 스레드에서.

Win32의 의사 포크는 다음과 같이 의사 포크 프로세스에서도 발생할 수 있습니다.
스레드 측면에서 구현됩니다. [펄 #77672]

· "open $fh, ">+", undef"는 TMPDIR이 설정되어 있을 때 더 이상 메모리 누수를 일으키지 않지만
임시 파일을 만들 수 없는 디렉터리입니다. [perl #120951]

· " for ( $h{k} || '' ) "는 더 이상 $h{k}를 자동 활성화하지 않습니다. [펄 #120374]

· Windows 시스템에서 Perl은 이제 로케일에 대한 환경의 POSIX 사용을 에뮬레이트합니다.
초기화. 이전에는 환경이 무시되었습니다. "환경"을 참조하세요.
perllocale.

· 자체 참조 GLOB를 삭제할 때 발생하는 충돌을 수정했습니다. [펄 #121242]

알려진 문제


· IO::Socket은 AIX 5.3에서 테스트에 실패하는 것으로 알려져 있습니다. 패치가 있습니다
요청 추적기 #120835,
이는 향후 릴리스에 적용될 수 있습니다.

· 다음 모듈은 이 버전의 Perl에서 테스트 실패가 있는 것으로 알려져 있습니다.
패치가 제출되었으므로 곧 새 릴리스가 나올 것으로 예상됩니다.

· 데이터::구조::Util 버전 0.15

· HTML::StripScripts 버전 1.05

· 목록::수집 버전 0.08.

사망 기사


리우데자네이루 출신의 다이아나 로사(27세)는 10년 2014월 XNUMX일 오랜 휴식을 취했다.
그녀는 항상 컴퓨터 화면에 봉제 낙타를 걸어 두었습니다. 그녀는 열정적이었습니다
언어와 커뮤니티를 사랑하고 Rio.pm 이벤트를 한 번도 놓치지 않은 Perl 해커입니다.
그녀는 진정한 예술가였으며 코드 작성, 아리아 노래, 낙서에 열광했습니다.
벽. 우리는 당신을 결코 잊지 않을 것입니다.

그렉 맥캐롤은 28년 2013월 XNUMX일에 사망했습니다.

그렉은 여러 가지 좋은 이유로 잘 알려져 있었습니다. 그는 첫 번째 조직자 중 한 명이었습니다.
YAPC::유럽은 예정에 없던 경매로 마무리됐고, 그곳에서 그는 미친 듯이 노력했다.
회의가 손실을 입지 않도록 추가 자금을 모으십시오. 실수로 그렉이었어
london.pm 회의에 일주일 늦게 도착했습니다. 몇 년 후 그 사람이 그 물건을 팔았어.
YAPC::Europe 경매에서 공식 회의 날짜를 선택하고 결국 영광스러운 결과를 얻었습니다.
london.pm의 리더인 그는 자신이 만들어낸 불경스러운 혼란을 물려받게 되었습니다.

항상 도움이 되고, 친절하고, 유쾌하고 낙관적입니다. 여러분을 그리워하게 될 것입니다. 그러나 결코 여러분을 그리워하지는 않을 것입니다.
잊혀졌다.

감사의 글


Perl 5.20.0은 Perl 12 이후 약 5.18.0개월의 개발 기간을 나타냅니다.
470,000명의 작성자가 작성한 2,900개 파일에 걸쳐 약 124줄의 변경 내용이 포함되어 있습니다.

자동 생성된 파일, 문서 및 릴리스 도구를 제외하면 대략
280,000개의 .pm, .t, .c 및 .h 파일에 대한 1,800줄의 변경.

Perl은 활발한 사용자 커뮤니티 덕분에 세 번째 XNUMX년 동안 계속해서 번창하고 있습니다.
그리고 개발자. 다음 사람들은 개선에 기여한 것으로 알려져 있습니다.
Perl 5.20.0이 되었습니다.

Aaron Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan Hourihane,
알렉산더 보로노프, 알렉산드르 치오르니, 앤디 도허티, 아노 시겔, 아리스토텔레스 파갈치스,
아서 액셀 'fREW' 슈미트, 브래드 길버트, 브렌단 버드, 브라이언 차일즈, 브라이언 프레이저, 브라이언
고트루, 크리스 'BinGOs' 윌리엄스, 크리스티안 밀러, 콜린 쿠스키, 크레이그 A. 베리, 다브리앙
'Dabe' 머피, Dagfinn Ilmari Mannsaaker, Daniel Dragan, Darin McBride, David Golden,
데이비드 리드비터, 데이비드 미첼, 데이비드 니콜, 데이비드 스타인브루너, 데니스 카어스메이커,
도미닉 하그리브스, 에드 아비스, 에릭 브라인, 에반 잭스, 크리소스토모스 신부, 플로리안 라그비츠,
Francois Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, Graham Knop, H.Merijn
브랜드, Hauke ​​D, Heiko Eissfeldt, 하야시 히로오, 윤호정, James E Keenan, Jarkko
히에타니에미, 제리 D. 헤든, 제스 로빈슨, 제시 루어스, 요한 브로만스, 존 가디너
마이어스, 존 굿이어, 존 P. 린더만, 존 피콕, 카프카, 류강민, 카렌
에더리지, 칼 윌리엄슨, 김기디, 켄트 프레드릭, 케빈 도슨, 케빈 팔콘, 케빈
라이드, 레온 티머만스, 루카스 마이, 마크 심슨, 마르셀 그루나워, 마르코 피어붐, 마커스
홀랜드-모리츠, 마크 제이슨 도미누스, 마틴 맥그래스, 매튜 호스폴, 맥스 마이셰인, 마이크
도허티, 모리츠 렌츠, 네이선 글렌, 네이선 트라푸자노, 닐 바워스, 닐 윌리엄스,
니콜라스 클라크, 닐스 티키에르, 니코 타이니, 올리비에 멩그, 오웨인 G. 에인스워스, 폴 그린,
폴 존슨, 피터 존 애클램, 피터 마티니, 피터 래빗슨, 페트르 피사X, 필립
불랭, 필립 귄터, 피오트르 로자티츠키, 라파엘 가르시아-수아레즈, 레이니 우르반, 루벤
토마스, 리카르도 시그네스, 루슬란 자키로프, 세르게이 알렉세예프, 시라카타 켄타로, 쉴로미 피시,
Slaven Rezic, Smylers, Steffen Mueller, Steve Hay, 설리반 벡, Thomas Sibley, Tobias
리치, 토비 잉크스터, 마츠노 토쿠히로, 톰 크리스티안센, 톰 허킨스, 토니 쿡, 빅터
Efimov, Viktor Turskyi, Vladimir Timofeev, YAMASHINA Hio, Yves Orton, Zefram, Zsban
Ambrus, AEvar Arnfjoer` Bjarmason.

위의 목록은 다음에서 자동으로 생성되므로 거의 확실히 불완전합니다.
버전 제어 기록. 특히, (대부분)의 이름을 포함하지 않습니다.
감사합니다) Perl 버그 추적기에 문제를 보고한 기여자.

이 버전에 포함된 많은 변경 사항은 다음에 포함된 CPAN 모듈에서 비롯되었습니다.
펄의 핵심. Perl이 번창할 수 있도록 도와준 전체 CPAN 커뮤니티에 감사드립니다.

Perl의 역사적 기여자 전체 목록을 보려면 다음을 참조하십시오. 작가
Perl 소스 배포판의 파일.

통계 보고서 버그


버그라고 생각되는 것을 찾으면 최근에 게시된 기사를 확인할 수 있습니다.
comp.lang.perl.misc 뉴스 그룹 및 perl 버그 데이터베이스 http://rt.perl.org/perlbug/ .
에도 정보가 있을 수 있습니다. http://www.perl.org/ , Perl 홈 페이지.

보고되지 않은 버그가 있다고 생각되면 포함된 perlbug 프로그램을 실행하십시오.
당신의 석방. 버그를 작지만 충분한 테스트 케이스로 줄이십시오. 당신의 버그
보고서는 "perl -V"의 출력과 함께 다음으로 전송됩니다. [이메일 보호]
Perl 포팅 팀에서 분석했습니다.

보고하는 버그에 보안 관련 사항이 있어 보고하는 것이 부적절할 경우
공개적으로 보관된 메일링 리스트로 보낸 다음 다음 주소로 보내주십시오.
[이메일 보호]. 이것은 닫힌 구독 보관되지 않은 메일링을 가리킵니다.
영향을 평가하는 데 도움을 줄 수 있는 모든 핵심 커미터를 포함하는 목록
해결 방법을 파악하고 패치 릴리스를 조정할 수 있도록 지원합니다.
Perl이 지원되는 모든 플랫폼에서 문제를 완화하거나 수정합니다. 제발만
모듈 독립적이 아닌 Perl 코어의 보안 문제에 대해 이 주소를 사용하십시오.
CPAN에 배포됩니다.

onworks.net 서비스를 사용하여 온라인으로 perl5200delta 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

  • 1
    인증
    인증
    AuthPass는 오픈 소스 비밀번호입니다.
    인기있는 지원 관리자
    입증된 Keepass(kdbx 3.x AND kdbx 4.x ...
    인증 패스 다운로드
  • 2
    자 비츠
    자 비츠
    Zabbix는 엔터프라이즈급 개방형
    소스 분산 모니터링 솔루션
    모니터링 및 추적하도록 설계
    네트워크의 성능 및 가용성
    서버, 장치...
    자빅스 다운로드
  • 3
    KDiff3
    KDiff3
    이 저장소는 더 이상 유지 관리되지 않습니다.
    보관 목적으로 보관됩니다. 보다
    https://invent.kde.org/sdk/kdiff3 for
    최신 코드와
    https://download.kde.o...
    KDiff3 다운로드
  • 4
    USB로더GX
    USB로더GX
    USBLoaderGX는 GUI입니다.
    Waninkoko의 USB 로더를 기반으로
    libwiigui. 목록을 허용하고
    Wii 게임, 게임큐브 게임 출시 및
    Wii와 WiiU의 홈브류...
    USBLoaderGX 다운로드
  • 5
    파이어 버드
    파이어 버드
    Firebird RDBMS는 ANSI SQL 기능을 제공합니다.
    & Linux, Windows에서 실행 &
    여러 유닉스 플랫폼. 특징
    뛰어난 동시성 및 성능
    & 힘...
    파이어버드 다운로드
  • 6
    KompoZer
    KompoZer
    KompoZer는 다음을 사용하는 wysiwyg HTML 편집기입니다.
    Mozilla Composer 코드베이스. 같이
    Nvu의 개발이 중단되었습니다.
    2005년 KompoZer는 많은 버그를 수정하고
    f를 추가합니다...
    KompoZer 다운로드
  • 더»

Linux 명령

Ad