我正在寻找一个子程序 mysub其行为应使以下两个调用实际上相同。

mysub(["values", "in", "a", "list"]); 
mysub("Passing", "scalar", "values"); 

使这种情况发生的正确语法是什么?

请您参考如下方法:

检查是否 @_包含单个数组引用。

sub mysub { 
    if ( @_ == 1 && ref( $_[0] ) eq 'ARRAY' ) { 
        # Single array ref 
    } else { 
        # A list 
    } 
} 
if子句使用 ref 检查是否只传递了一个参数并且该参数是数组引用。 .为确保案例相同:
sub mysub { 
    if ( @_ == 1 && ref( $_[0] ) eq 'ARRAY' ) { 
        @_ = @{ $_[0] }; 
    } 
    # Rest of the code 
} 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!