Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl在调用方法中的应用_Perl - Fatal编程技术网

Perl在调用方法中的应用

Perl在调用方法中的应用,perl,Perl,请告诉我这是什么意思 my ( $keepers, $bogus, $unknown ) = TCO::Test::Param::test_params('session' => $s, 'expected' => $allowed_params); 关于测试方法 my %base_profile = TCO::Test::Param::std_profile(); my $profile = { 'session' => $base_profile

请告诉我这是什么意思

my ( $keepers, $bogus, $unknown ) =
   TCO::Test::Param::test_params('session' => $s, 'expected' => $allowed_params);
关于测试方法

my %base_profile = TCO::Test::Param::std_profile();
my $profile      = {
    'session'  => $base_profile{'session'},
    'expected' => $base_profile{'params'},
};
my %config = validate( @_, $profile );

my ( $s, $gooduns ) = @config{ 'session', 'expected' };

my ( $keepers, $bogus, $unknown ) =
    scrub_base( 'raw_params' => $s->{_raw_params}, 'expected' => $gooduns );

foreach ( keys %{$keepers} ) {
    $keepers->{$_} = $keepers->{$_}->[-1];
}

clean_params( { 'params' => $keepers } );

# These are sometimes passed in by carts and must be squashed if they are.
delete $unknown->{x_exp_date} if ( $unknown->{x_exp_date} );

delete $unknown->{x_card_num} if ( $unknown->{x_card_num} );

delete $bogus->{x_exp_date}   if ( $bogus->{x_exp_date} );

delete $bogus->{x_card_num}   if ( $bogus->{x_card_num} );

delete $keepers->{x_exp_date} if ( $keepers->{x_exp_date} );

delete $keepers->{x_card_num} if ( $keepers->{x_card_num} );

return ( $keepers, $bogus, $unknown );
2) $sale->{state}{ind}=0;这是什么意思


我试图将
$keepers
打印到STDERR。然后它给出一个散列。我无法访问其中的值。我怎样才能访问它。请回复。

TCO::Test::Param::Test_params子例程返回一个列表。您询问的行将返回值解压为三个不同的变量,
$keepers
$bogus
$unknown

要查看
$keepers
中的内容,可以转储哈希:

use Data::Dumper;
warn Dumper( $keepers );

TCO::Test::Param::Test_params
子例程返回一个列表。您询问的行将返回值解压为三个不同的变量,
$keepers
$bogus
$unknown

要查看
$keepers
中的内容,可以转储哈希:

use Data::Dumper;
warn Dumper( $keepers );
这是什么意思

这是对子例程的调用
TCO::Test::Param::Test_params
。向它传递了四个参数。返回的前三个值存储在
$keepers
$bogus
$unknown


然后它给出一个散列

这是对散列的引用。sub不能返回哈希,只能返回标量列表


我怎样才能访问它

这是什么意思

这是对子例程的调用
TCO::Test::Param::Test_params
。向它传递了四个参数。返回的前三个值存储在
$keepers
$bogus
$unknown


然后它给出一个散列

这是对散列的引用。sub不能返回哈希,只能返回标量列表


我怎样才能访问它

    • 您的问题2:

      $sale->{state}{ind} = 0; 
      
      这是什么意思

      $sale
      必须是对哈希的引用。为什么?因为后面跟着
      ->{}
      。尝试:

      use Data::Dumper;
      print Dumper($sale);
      
      $sale
      引用的哈希至少有一个键,称为
      state
      。key
      state
      的值是对另一个散列的引用。另一个散列至少有一个键,称为
      ind
      ,语句将其值设置为零

      即使键
      状态
      不存在,也可以运行此语句。该语句将创建密钥及其值,以及第二个散列,所有这些都是自动创建的,这一过程称为自动激活

      建议:一次只问一个问题。它使答案更清晰,更便于他人参考。正如子程序只能做一件事一样,你的问题也应该做一件事,出于同样的原因。

      你的问题2:

      $sale->{state}{ind} = 0; 
      
      这是什么意思

      $sale
      必须是对哈希的引用。为什么?因为后面跟着
      ->{}
      。尝试:

      use Data::Dumper;
      print Dumper($sale);
      
      $sale
      引用的哈希至少有一个键,称为
      state
      。key
      state
      的值是对另一个散列的引用。另一个散列至少有一个键,称为
      ind
      ,语句将其值设置为零

      即使键
      状态
      不存在,也可以运行此语句。该语句将创建密钥及其值,以及第二个散列,所有这些都是自动创建的,这一过程称为自动激活


      建议:一次只问一个问题。它使答案更清晰,更便于他人参考。正如子程序只能做一件事一样,您的问题也应该做一件事,出于同样的原因。

      非常感谢,它正在工作。你能告诉我这是什么意思吗2)$sale->{state}{ind}=0;非常感谢,它正在工作。你能告诉我这是什么意思吗2)$sale->{state}{ind}=0;但我的问题是,如果{ind}是一个散列,那么我可以将其打印为该值。但当我试图将其打印为警告转储程序({ind})时。在错误日志上,它给出了一个错误,即“[error]Bareword“ind”在使用“strict subs”时不允许”。请回答我。我是新手Perl@user2089651:{ind}将只返回对新匿名哈希的引用。总之,ind只是一个键的名称。您需要
      警告转储程序($sale->{state})
      。但我的问题是,如果{ind}是一个散列,那么我可以将其打印为该值。但当我试图将其打印为警告转储程序({ind})时。在错误日志上,它给出了一个错误,即“[error]Bareword“ind”在使用“strict subs”时不允许”。请回答我。我是新手Perl@user2089651:{ind}将只返回对新匿名哈希的引用。总之,ind只是一个键的名称。您需要
      警告转储程序($sale->{state})