我有一个带有单词列表的文件,每个都在新行和大写字母中,如
现在,应该将数组转换为小写但失败的代码出了什么问题:映射数组又是大写的?
#!/usr/bin/perl -w
open(MYFILE, "$ARGV[0]") || die "opening bigList $!";
@Llist=<MYFILE>;
close (MYFILE);
@lc_word = map { lc } @Llist;
print @lc_word;
Run Code Online (Sandbox Code Playgroud)
mir*_*rod 11
这个对我有用.
我按照公认的最佳实践重新编写了代码,因此您不会使用旧式Perl.
#!/usr/bin/perl
use strict;
use warnings;
open( my $in, '<', $ARGV[0]) or die "cannot open '$ARGV[0]': $!";
my @Llist=<$in>;
close ($in);
my @lc_word = map { lc } @Llist;
print @lc_word
Run Code Online (Sandbox Code Playgroud)
附加说明:文件的编码是什么?如果它是纯ASCII,那么这将起作用,否则你需要指定编码open,例如对于utf8文件: open( my $in, '<:utf8', $ARGV[0]).另外,将整个文件放入内存my @Llist=<$in>;中有点不好意思,尽管在这种情况下,无论如何你都会将整个小写列表放在内存中.
如果你想要的是小写初始数组(Llist),那么你需要替换mapwithforeach my $word(@Llist) { $word= lc $word; }
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |