使用perl在行首添加一个符号,并在行尾添加相同的符号

使用perl在行首添加一个符号,并在行尾添加相同的符号,perl,filehandle,Perl,Filehandle,我在网上练习perl作业,在Sandbox中找到了这个 如何编写一个perl脚本,在前面添加->并在那里打招呼。我是Fred。你是谁?仅在具有此代码的行的开头: #!/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

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

如何编写一个perl脚本,在前面添加->并在那里打招呼。我是Fred。你是谁?仅在具有此代码的行的开头:

#!/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; 
#/usr/bin/perl
严格使用;
使用警告;
打开(FH,“input.pl”)或死“无法打开文件:$!\n”#输入文件
打开(NEWFH,“>output.pl”)或死“无法写入”\n#输出文件
打印“打开的文件\n”;
while(){
打印新FH“->$”;
}
关闭FH;
关闭新FH;

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

只需以相同的方式在行尾添加“->”,方法是将其包含在打印字符串的末尾:

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

print NEWFH“->$\只需以相同的方式将其添加到行后,将其包括在打印字符串的末尾:

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

打印NEWFH“->$”\up>作为练习,您可以使用以下一行代码并了解它们的工作原理:

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

perl-pe的/^/->;s/$/作为练习,您可以使用以下一行代码并了解它们的工作原理:

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


perl-pe的/^/->;听起来像是家庭作业。既然你想学习,我只给出提示,而不是解决方案:给你一个字符串的大小。把数字加起来算总数。我怎样才能把那个符号加在这行的末尾?@daxim-问题的第一行解释了问题的由来。自我学习应该受到欢迎:)作为旁注:这与您的问题无关,但您的Perl代码示例的源代码必须非常陈旧,可能很糟糕。在打开文件时,一种更为现代的Perl风格使用词法(例如,作用域变量而非全局)文件句柄和3参数形式的open:
open(my$newfh,“>”,“output.pl”)或die。我强烈建议你使用更现代的书籍/教程——老式的“开放式”有一些小问题,但也让人同情你无法获得更好的现代资源。听起来像是家庭作业。既然你想学习,我只给出提示,而不是解决方案:给你一个字符串的大小。把数字加起来算总数。我怎样才能把那个符号加在这行的末尾?@daxim-问题的第一行解释了问题的由来。自我学习应该受到欢迎:)作为旁注:这与您的问题无关,但您的Perl代码示例的源代码必须非常陈旧,可能很糟糕。在打开文件时,一种更为现代的Perl风格使用词法(例如,作用域变量而非全局)文件句柄和3参数形式的open:
open(my$newfh,“>”,“output.pl”)或die。我强烈建议你使用更现代的书籍/教程-老式的“开放式”有一些小问题,但也有点同情你无法获得更好的现代资源。这不会添加@Newbie-抱歉,我没有注意到你没有做任何尝试。此外,为了可读性起见,最好不要使用
$\uu
默认变量作为规则-使用命名变量
while my$line(){
chomp$line;print$newfh“->$line语法不正确。请尝试:
while(my$line=){
@shawnhcorey-这将教会我不要在注释中编程。完全正确。这不会添加@Newbie-抱歉,没有注意到您没有执行chomp.Updated。此外,为了可读性,最好不要使用
$\ucode>默认变量作为规则-使用命名变量。
而我的$line(){
chomp$line;print$newfh“->$line您的语法不正确。请尝试:
while(my$line=){
@shawnhcorey-这会教我不要在注释中编程。非常正确。对于新手任务来说,RegEx似乎有点过火:)但好答案无论如何,这已经太久了,我几乎无法再判断Perl的哪个功能更适合新手了。至少RegEx很容易尝试。:)RegEx对于新手来说似乎有点过火了e task:)但答案很好,不管怎样,时间太长了,我几乎无法再判断Perl的哪个功能更适合新手。至少正则表达式很容易试用。:)