请告诉我这是什么意思
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。然后它给了哈希。我无法访问其中的值。我该如何访问它。请回复。
答案 0 :(得分:5)
这是什么意思
这是对子程序TCO::Test::Param::test_params
的调用。四个参数传递给它。返回的前三个值存储在$keepers
,$bogus
和$unknown
中。
然后它给了一个哈希。
它是对哈希的引用。 sub不能返回哈希值,只能返回标量列表。
我该如何访问它。
keys(%$keepers)
$keepers->{$key}
答案 1 :(得分:0)
TCO::Test::Param::test_params
子例程返回一个列表。您要询问的行将返回值解压缩为三个不同的变量$keepers
,$bogus
和$unknown
。
要查看$keepers
中的内容,您可以转储哈希:
use Data::Dumper;
warn Dumper( $keepers );
答案 2 :(得分:0)
你的问题2:
$sale->{state}{ind} = 0;
这是什么意思?
$sale
必须是对哈希的引用。为什么?因为后跟->{ }
。尝试:
use Data::Dumper;
print Dumper($sale);
$sale
引用的哈希至少有一个密钥,称为state
。 key state
的值是对另一个哈希的引用。其他散列至少有一个密钥,称为ind
,并且该语句将其值设置为零。
即使密钥state
尚不存在,也可以运行此语句。该语句将在称为 autovivification 的过程中自动创建密钥,它的值和第二个哈希值。
建议:一次只问一个问题。它使得答案更清晰,更容易让其他人参考。就像一个子程序应该只做一件事一样,你的问题也是如此,并且出于同样的原因。