여기서 궁극적으로 달성하려는 것은 파일의 모든 소문자를 대문자로 변환하여 터미널에 쓰는 것입니다.Perl : 파일에서 ÅÄÖ을 포함하는 텍스트 가져 오기
use utf8;
binmode STDOUT, ":utf8";
$text = "ABCÅÄÖ\n";
$text =~ tr/A-Ö/a-ö/;
print $text;
출력은 :
abcåäö
예상대로.
하지만 파일에서 동일한 텍스트를 가져 오려고하면 모든 것이 엉망이됩니다.
use utf8;
binmode STDOUT, ":utf8";
open FILE, $filename or die "An error occurred while reading the file: $!";
$text = join '', <FILE>;
close FILE or die "An error occurred while closing the file: $!";
$text =~ tr/A-Ö/a-ö/;
print $text;
출력
ABCÃÃÃ
내가 가져온 텍스트가 제대로 인코딩되지 않은 있으리라 믿고있어. 누구든지 가져 오는 동안 텍스트를 인코딩하는 방법을 알고 있습니까?
미리 감사드립니다.
잭
이것은 tr과 all로 더 잘 작동했습니다. –
'$ text = ~ tr/A-Ö/a-ö /'에 의존하는 것은 안전하지 않습니다. 'lc ($ text)'또는'$ text = ~ s/([A-ZÅÄÖ])/\ L $ 1/g'을 사용하십시오. 나는 다른 많은 개선점들을 만들었다. (globals 대신에 렉시 컬, 3-arg를 열고, 에러 메시지에 파일명을 포함해서 ...) – ikegami