小编Maz*_*zze的帖子

Perl:在docs中内联选择FD并不适用于严格的引用

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

perl

4
推荐指数
2
解决办法
103
查看次数

Perl:如何以结构化的方式获取多个正则表达式?

我试图在任意字符串中获取一组模式的所有出现,就像这样:

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)

regex perl regex-group

2
推荐指数
1
解决办法
86
查看次数

在组命令中更改$ IFS是永久的

这是使用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)

由于我无法理解这种行为,因此我认为这是一个错误。Bash 4.2可能与IFS更改有关

bash

1
推荐指数
1
解决办法
42
查看次数

标签 统计

perl ×2

bash ×1

regex ×1

regex-group ×1