Как Perl берет мой текстовый файл, содержащий разных пользователей - PullRequest
0 голосов
/ 18 декабря 2018

Файл 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 голосов
/ 18 декабря 2018

Хорошо, давайте перепишем код, чтобы он а) компилировался, б) использовал текущую передовую практику и в) не раскошелился на 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 для создания списка, содержащего столько же элементов Y, сколько элементов в @prelist, этот список из Y s затем назначается вновь созданным элементам в%superadminstaff.

Итак, в конце этого кода у вас теперь есть %superadminstaff, содержащий каждую запись файла.Однако порядок элементов в файле не будет сохранен, и любые повторяющиеся записи в файле будут уменьшены до одной записи в %superadminstaff.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...