Mik*_*ike 89 printing perl newline
在Perl中,我的大多数print陈述都采用了这种形式
print "hello." . "\n";
有没有一种很好的方法可以避免让所有讨厌的人"躺着"?
我知道我可以创建一个新的功能,例如myprint自动附加\n,但如果我可以覆盖现有的那么会很好print.
Jos*_*ley 95
Perl 6具有say自动附加的功能\n.
say如果添加,也可以在Perl 5.10或5.12中使用
use feature qw(say);
到你的程序的开头.或者您可以使用Modern :: Perl来获取此功能和其他功能.
有关详细信息,请参阅perldoc功能.
jay*_*ngh 33
您可以使用-lshe-bang标题中的选项:
#!/usr/bin/perl -l
$text = "hello";
print $text;
print $text;
输出:
hello
hello
Eri*_*rom 24
如果Perl 5.10+不是一个选项,这里是一个快速而肮脏的近似值.它并不完全相同,因为当它的第一个arg是一个句柄时,说有一些魔法,但是要打印到STDOUT:
sub say {print @_, "\n"}
say 'hello';
Sch*_*ern 19
你编写print语句的方式是不必要的冗长.没有必要将换行符分隔为自己的字符串.这就足够了.
print "hello.\n";
这种实现可能会使您的编码更容易.
除了使用use feature "say"或use 5.10.0或use Modern::Perl让内置的say功能,我要皮条客perl5i其默认启用了很多明智的缺失Perl 5种的功能.
也许您想要将输出记录分隔符更改为换行符:
local $\ = "\n";
$ perl -e 'print q{hello};print q{goodbye}' | od -c
0000000    h   e   l   l   o   g   o   o   d   b   y   e                
0000014
$ perl -e '$\ = qq{\n}; print q{hello};print q{goodbye}' | od -c
0000000    h   e   l   l   o  \n   g   o   o   d   b   y   e  \n        
0000016
更新:我的回答是关于能力而不是可行性.我不认为在行尾添加"\n"是一个"讨厌的"苦差事,但如果有人真的想要避免它们,这是一种方式.如果我不得不维护一些使用这种技术的代码,我可能会重构它.
小智 8
这是我在https://perldoc.perl.org/perlvar.html找到的内容:
$\ 打印操作符的输出记录分隔符。如果定义了,该值将在 print 的最后一个参数之后打印。默认为 undef。
您不能在句柄上调用output_record_separator(),只能作为静态方法。请参阅 IO::句柄。
助记:您设置 $\ 而不是在打印末尾添加“\n”。另外,它就像 $/ 一样,但它是您从 Perl“返回”的内容。
例子:
$\ = "\n";
print "a newline will be appended to the end of this line automatically";