-2

私はこのコードを持っています:

opendir(DIR, ".");
while (readdir DIR) {
  print $1, "\n" if $_ =~ /(\w+)/i;
}

もちろん、ASCII文字列のみを取得します。正規表現を使用して出力に別の非 ASCII 文字列を取得するにはどうすればよいですか?

UPD

たとえば、「。」の場合。ディレクトリには と の 2 つのファイルがfileありますдругойфайл。したがって、このスクリプトを実行するfileと、出力のみが表示されますが、英語以外の名前の別のファイルを取得したいと思いますдругойфайл

4

1 に答える 1

2

次のコードは機能しているようです。

use warnings;
use strict;
use Encode qw(decode);

my $dir = $ARGV[0] || '.';
opendir my $dh, $dir  or die "$0: $dir: $!\n";
while (readdir $dh) {
    $_ = decode 'UTF-8', $_;
    print $1, "\n" if /(\w+)/;
}

もちろん、これはファイルシステムが名前をUTF-8で保存していることを前提としています。

出力:

file
другойфайл
于 2013-02-12T23:33:52.033 に答える