Не уверен, почему вы используете $ count здесь, поскольку это просто превратит список файлов вроде:
01.txt
bob.txt
alice.txt
02.txt
в:
01_1.txt
bob_2.txt
alice_3.txt
02_4.txt
Имейте в виду,@files не сортируется, поэтому он будет возвращать в том порядке, в котором файлы существуют в таблице каталогов.Если бы вы удалили и заново создали файл 01.txt, он был бы перемещен в конец списка, переупорядочив весь набор:
bob_1.txt
alice_2.txt
02_3.txt
01_4.txt
, поскольку это на самом деле не было частьюВаш первоначальный вопрос, это именно то, что вы просили сделать:
#!/usr/bin/perl
while(<*.txt>) { # for every file in the *.txt glob from the current directory
open(IN, $_) or die ("Cannot open $_: $!"); # open file for reading
my @in = <IN>; # read the contents into an array
close(IN); # close the file handle
shift @in; # remove the first element from the array
open(OUT, ">$_.new") or die ("Cannot open $_.new: $!"); # open file for writing
print OUT @in; # write the contents of the array to the file
close(OUT); # close the file handle
}