Добавьте символ в начале строки и добавьте тот же символ в конце строки, используя perl

Я практиковался в Perl и нашел это в Песочнице.

Как написать Perl-скрипт, который добавляет -> в начало и <- в конец каждой строки. Затем он сообщает количество строк, длину самой длинной строки и общее количество байтов в исходном вводе. Например, входной файл

//Input File 
    Hi there.
    This is Fred.
    Who are you?

Должен производить вывод:

//Output File
    ->Hi there.<-
    ->This is Fred.<-
    ->Who are you?<-
    3 lines, longest 13 characters, 37 bytes total.

Я могу добавить -> только в начале строки с этим кодом:

#!/usr/bin/perl
use strict;
use warnings;

open(FH,"input.pl") or die "cannot open file: $!\n"; #Input File
open(NEWFH,"> output.pl") or die "cannot write\n"; #Output File
print "opened file\n";
while(<FH>){
  print NEWFH "-> $_ ";
}
close FH;
close NEWFH; 

Не могли бы вы помочь мне добавить "->" в конце строки

2 ответа

Решение

Просто добавьте его после строки таким же образом, добавив в конец напечатанной строки:

chomp; # Strip off newline character
print NEWFH "-> $_ <-\n"; # Add newline ay the end

Что касается самой длинной строки и общего количества: вы можете использовать 2 переменные, чтобы сохранить текущую максимальную длину и текущую сумму, и рассчитать их с помощью length функция. Оставьте третью переменную для количества строк.

В качестве упражнения вы можете взять эти строки и понять, как они работают:

perl -pe  's/^/->/; s/$/<-/;' input.txt
perl -ple '$_ = "->$_<-";'    input.txt

Для более подробной версии вы добавляете -MO=Deparse переключатель.

Рекомендуемое чтение:

Другие вопросы по тегам