perl如何获取包含不同用户的文本文件

时间:2018-12-18 08:36:29

标签: regex perl

superadmin.txt文件的格式为:

def
ghi
pqr
...etc

Perl将如何读取不同的用户? 能否从superadmin.txt识别不同的文本? 这是代码:

  @prelist = ();
  @prelist = `cat ../cgi-bin/superadmin.txt`;
  foreach $prename (@prelist) {
  $prename =~s/\n//g ;
  $superadminstaff{$prename} = "Y";

1 个答案:

答案 0 :(得分:4)

让我们重新编写代码,以便它a)编译,b)使用当前的最佳实践并且c)不会派生到cat

my @prelist = ();
my %superadminstaff = ();
open my $admin, '<', '../cgi-bin/superadmin.txt' or die "Can't open ../cgi-bin/superadmin.txt: $!\n";
chomp(@prelist = <$admin>);
@superadminstaff{@prelist} = ("Y") x @prelist;

因此,我们有两个变量@prelist%superadminstaff@prelist将保存文件的每一行,而%superadminstaff将最终键入文件的每个条目。

第3行尝试打开文件,如果无法打开,将停止脚本并打印出一条消息,说明问题所在。

第4行将文件读入@prelist,并使用chomp去除行尾。请注意,chomp优先于chop使用,因为文件的最后一行没有行尾。

第5行使用一些称为哈希切片的Perl魔术为%superadminstaff中的每个元素在@prelist中创建条目,然后使用x运算符创建包含多达{{ 1}}元素,因为Y中有元素,然后将@prelist的这个列表分配给Y中新创建的元素。

因此,在此代码末尾,您现在拥有%superadminstaff,其中包含文件的每个条目。但是,不会保留文件中元素的顺序,并且文件中任何重复的条目都将减少为%superadminstaff中的一个条目。