0

我在网上练习 perl 作业,并在 Sandbox 中找到了这个。

如何编写一个 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; 

你能帮我在行尾添加“->”吗

4

2 回答 2

2

作为练习,您可以使用这些单行代码并弄清楚它们是如何工作的:

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

要获得更详细的版本,请添加-MO=Deparse开关。

推荐阅读:

于 2013-07-19T13:40:16.090 回答
1

只需以相同的方式将其添加到行后,将​​其包含在打印字符串的末尾即可:

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

至于最长字符串和总数:您可以使用 2 个变量来存储当前最大长度和当前总数,并在length函数的帮助下计算它们。为行数保留第三个变量。

于 2013-07-19T12:55:30.060 回答