美好的一天,
对于工作,我突然需要知道Perl,虽然我几年前曾涉足这些艺术,但我似乎完全迷失了.对于Haskell/Java程序员来说,所有这些非结构化的打字都会让人紧张.
但是,我写了这个sub,它应该采用一行单行字符串并将它们连接成一个单行的多行字符串.我有它喜欢这样:
sub unlines {
my ( @lines ) = @_;
my $str = "";
foreach $line ( @lines ) {
$str = join $str, chomp($line), "\n";
}
return $str;
}
Run Code Online (Sandbox Code Playgroud)
然后我想测试它,当然:
print unlines(("GET / http1.1", "Host: localhost", ""));
Run Code Online (Sandbox Code Playgroud)
事情的结果是
000
Run Code Online (Sandbox Code Playgroud)
还有很多换行.我完全不知道为什么会这样.任何人都可以帮助我,并解释一下,所有这些参数如何传递给Perl中的sub都有效?这似乎是很有趣的事情一样工作@_和shift,但打字......这是一场噩梦.
谢谢收听.
你的麻烦在于如何运作; 它不返回chomped变量,它返回删除的字符数并就地修改变量.
所以先点头加入,然后加入,就像这样...
C:\temp>cat test.pl
my @lines = ('abc','def');
chomp @lines;
print join "\n",@lines;
C:\temp>test.pl
abc
def
C:\temp>
Run Code Online (Sandbox Code Playgroud)
为了完整起见,这是你的unlines()看起来的样子
sub unlines {
my @lines = @_;
chomp @lines;
return join "\n", @lines;
}
Run Code Online (Sandbox Code Playgroud)