我想了解一个程序。如果我错了,请更正我,但是反引号用于在shell中执行命令,因此我不确定在以下代码中它的用途是什么:
my $end = $` if $dir =~ m/\/foldername/;
foreach my $folder (@dirs_) {
my $start_from = "$dir" . "\/" . "$folder";
my $move_to = "$end" . "\/" . "$folder";
rmtree $move_to;
dircopy($start_from, $move_to);
}
最佳答案
它不是很漂亮。$`
变量是三位一体$`
,$&
和$'
之一,它们表示经过正则表达式成功比较的最后一个字符串的匹配前,匹配和匹配后部分
例如,如果我有
my $s = 'abcdef';
然后
$s =~ /c./;
您会发现
$`
是ab
,$&
是cd
,$'
是ef
重要的是要记住,就像捕获变量
$1
,$2
等一样,这三个不受正则表达式匹配失败的影响。 (它们未设置为undef
。)因此,在使用任何正则表达式模式之前,先检查它们是否匹配至关重要这是古老的Perl,主要是为了向后兼容而维护的。当时这是个好主意,因为Perl与shell语法保持紧密联系(awk和sed仍然如此)。如今,最好将正则表达式捕获或
substr
与较新的@-
和@+
数组结合使用所有特殊的内置变量都记录在perldoc perlvar中
关于perl - 目录名称开头的反引号是什么? (perl),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37262852/