我有这段代码:
opendir(DIR, ".");
while (readdir DIR) {
print $1, "\n" if $_ =~ /(\w+)/i;
}
当然只获得ASCII字符串。如何使用regexp在输出中获取另一个非ASCII字符串?
UPD
例如,如果在“。”目录有两个文件file
和другойфайл
。因此,当我运行此脚本时,我只在输出中获得file
但我想获得另一个非英文名称другойфайл
答案 0 :(得分: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
другойфайл