use strict;
use warnings;
my $infile = $ARGV[0] or die "$0 Usage:\n\t$0 <input file>\n\n";
open(my $in_fh , '<' , $infile) or die "$0 Error: Couldn't open $infile for reading: $!\n";
my $file_contents;
{
local $/; # slurp in the entire file. Limit change to $/ to enclosing block.
$file_contents = <$in_fh>
}
close($in_fh) or die "$0 Error: Couldn't close $infile after reading: $!\n";
# change DOS line endings to commas
$file_contents =~ s/\r\n/,/g;
$file_contents =~ s/,$//; # get rid of last comma
# finally output the resulting string to STDOUT
print $file_contents . "\n";
Текст вашего вопроса и пример выходных данных не согласованы. Если вы преобразуете все окончания строки в запятые, вы получите дополнительную запятую в конце, начиная с последнего конца строки. Но ваш пример показывает только запятые между числами. Я предположил, что вы хотите, чтобы вывод кода соответствовал вашему примеру, и что текст вопроса был неверным, однако, если вы хотите, чтобы последняя запятая просто удалила строку с комментарием «избавиться от последней запятой».
Если какая-либо команда не понятна, http://perldoc.perl.org/ - ваш друг (в правом верхнем углу есть окно поиска).