ユニコードに関するCWDモジュールは最新ではないか、またはOSに書き込むときにのみabs_pathが使用されると思われますか?CWDユニコードサポート
#!/usr/bin/env perl
use warnings;
use 5.012;
use utf8;
binmode STDOUT, ':encoding(utf-8)';
use Cwd qw(abs_path);
use File::Spec::Functions qw(rel2abs);
chdir '/tmp';
my $file = "Hello \x{263a}";
open my $fh, '>', $file or die $!;
say $fh 'test';
close $fh;
say abs_path $file;
say rel2abs $file;
出力:
# /tmp/Hello âº
# /tmp/Hello ☺
@sid_comエンコードエラーを検出できるように、エンコード/デコード関数には常に1の余分な引数を渡したいと思います。ここでは 'decode_utf8(abs_path($ file) 1) '。あなたが' Encode'モジュールからインポートしてそこに渡すことができる他の魅力的な値があります.1は 'FB_CROAK'に相当し、あなたにそれを隠す代わりにエラーで例外を発生させます。 – tchrist
'decode_utf8(abs_path encode_utf8($ file));'であり、ファイル名がUTF-8を使用していると仮定しています。 – ikegami