You can loop over @ARGV
which are command line parameters, and rename each file by returning value of get_line()
.
get_line()
opens $file
for reading and when on 7-th line (if ($. == $n)
), it removes newline (chomp $line
) and returns content of 7-th line.
use strict;
use warnings;
sub get_line {
my ($file, $n) = @_;
open my $fh, "<", $file or die $!;
while (my $line = <$fh>) {
if ($. == $n) { chomp $line; return $line; }
}
return;
}
for my $file (@ARGV) {
rename ($file, get_line($file, 7)) or warn $!;
}