-2

我有这个代码:

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

它当然只得到 ASCII 字符串。如何使用正则表达式在输出中获取另一个非 ASCII 字符串?

UPD

例如,如果在“。” 目录有两个文件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 回答