好吧,我的代码非常简单.它应该打印内容+ \n但结果却以某种方式反转.
这里的代码:
#!/usr/bin/perl -w
use strict;
my $founds;
while (<>){
$$founds{$2} = $& while m/([A-Z]{3})([a-z])([A-Z] {3})/g;
}
print sort keys %$founds, "\n";
Run Code Online (Sandbox Code Playgroud)
结果是:
(here is a newline)
abcdefghijklmnopqrstuvwxyz
Run Code Online (Sandbox Code Playgroud)
希望它也适用于您的配置(如果您想下载我在我的代码中使用的文件,请转到此处)
无论如何,你对此有所了解吗?
PS:正则表达式不允许换行符,因此问题不太可能属于它.
首先获得换行符的原因是由于缺少括号而将其包含在排序中.改为:
print sort(keys %{$founds}), "\n";
Run Code Online (Sandbox Code Playgroud)
换行首先是巧合(或者更确切地说,是由于在非空白之间是空白字符).
为了澄清:
my %found = ( foo => 1, bar => 1 ); # keys returns "foo", "bar"
print sort keys %found, "\n"; # sort gets "foo", "bar", "\n"
# ^^^^^^^^^^^^^^^^^----------- arguments to sort()
Run Code Online (Sandbox Code Playgroud)