在perldoc中print,它说这应该工作:
print { $OK ? STDOUT : STDERR } "stuff\n";
Run Code Online (Sandbox Code Playgroud)
但它没有use strict,当我然后使用引号之类的
print { $OK ? "STDOUT" : "STDERR" } "stuff\n";
Run Code Online (Sandbox Code Playgroud)
我明白了
Can't use string ("STDOUT") as a symbol ref while "strict refs" in use ...
Run Code Online (Sandbox Code Playgroud)
如何在不废除的情况下使这个结构工作use strict?
谢谢,
Mazze
我试图在任意字符串中获取一组模式的所有出现,就像这样:
my $STRING = "I have a blue cat. That cat is nice, but also quite old. She is always bored.";
foreach (my @STOPS = $STRING =~ m/(?<FINAL_WORD>\w+)\.\s*(?<FIRST_WORD>\w+)/g ) {
print Dumper \%+, \@STOPS;
}
Run Code Online (Sandbox Code Playgroud)
但结果不是我所期望的,我也不完全明白为什么:
$VAR1 = {
'FINAL_WORD' => 'old',
'FIRST_WORD' => 'She'
};
$VAR2 = [
'cat',
'That',
'old',
'She'
];
$VAR1 = {
'FINAL_WORD' => 'old',
'FIRST_WORD' => 'She'
};
$VAR2 = [
'cat',
'That',
'old',
'She'
];
$VAR1 = {
'FINAL_WORD' => 'old',
'FIRST_WORD' => …Run Code Online (Sandbox Code Playgroud) 这是使用bash 4.3.48。
$ ARR=(entry1 entry2 entry3)
$ echo "${ARR[*]}"
entry1 entry2 entry3
Run Code Online (Sandbox Code Playgroud)
一切按预期进行,直到这里,但之后
$ { IFS=: ; echo "${ARR[*]}" ;}
entry1:entry2:entry3
Run Code Online (Sandbox Code Playgroud)
更改后,IFS被奇怪地永久性地更改了一半
$ echo "${ARR[*]}"
entry1:entry2:entry3
$ echo $IFS
$ echo "$IFS"
:
Run Code Online (Sandbox Code Playgroud)