如果这个问题听起来很简单,我很抱歉,我的目的是深入了解这些(这些?)特定的操作符是如何工作的,我无法在perldocs中找到令人满意的描述(它可能存在于某个地方,我只是不能找到我的生活)
特别是,我有兴趣知道是否
一个) <>
b)<*>或者不管怎么说
C) <FH>
基本相似或不同,以及如何在内部使用它们.
我建立了自己的测试功能,以获得对此的一些见解(如下所示).我仍然没有完全理解(我的理解可能甚至是错误的)但这是我得出的结论:
<>
<list of globs>
<FH>只是在分配给变量时似乎返回undef.
问题:为什么它不合适?它没有类型吗?当FH不是裸字文件句柄时,这种行为是否相似?一般问题:在执行期间处理<>和其他值的是什么?在标量上下文中,返回的是任何类型的引用,还是我们分配给它们的变量,在那一点上与任何其他非ref标量相同?
我也注意到即使我按顺序分配它们,每次都会重置输出.也就是说,当我这样做时,我会假设
$thing_s = <>;
@thing_l = <>;
Run Code Online (Sandbox Code Playgroud)
@thing_l会丢失第一个项目,因为它已被收到$thing_s.为什么不是这样?
用于测试的代码:
use strict;
use warnings;
use Switch;
use Data::Dumper;
die "Call with a list of files\n" if (@ARGV<1);
my @whats = ('<>','<* .*>','<FH>');
my $thing_s;
my @thing_l;
for my $what(@whats){
switch($what){
case('<>'){
$thing_s = <>;
@thing_l = …Run Code Online (Sandbox Code Playgroud) 我正在执行以下操作,但它无法正常工作:
my $enabled = $hash &&
$hash->{'key'} &&
$hash->{'key'}->{'enabled'} &&
$hash->{'key'}->{'active'};
Run Code Online (Sandbox Code Playgroud)
这是为标量变量赋予布尔值的可接受方式吗?我的代码以奇怪的方式行为不端,因为它是,我相信这是因为这个任务.我已经验证所有这些键都存在各个值,并设置为一个值.
PS抱歉是个菜鸟!我用Google搜索约10分钟,无法在任何地方找到答案.