我正在使用在服务器(SellerDeck)上运行的第三方购物车解决方案。我有一些代码在服务器上运行,以使用基本产品数据(数量,价格,名称)格式化购物篮。我需要找到一些我认为在2个哈希数组中保存的数据。我不知道这2个数组中包含了什么,所以我想将数组转换为字符串并通过现有代码输出,将其放入客户端的cookie中,然后我可以查看。 2个数组是$ pCartItem和$ pProduct(请参阅底部的代码以了解它们的使用方式)。
字符串$ cartStr(代码底部)通过代码的另一部分输出到cookie中的客户端。
我想将2个数组转换为2个字符串,可以连接到$ cartStr。然后我可以在我的本地电脑(客户端)上阅读内容。我的问题是我对perl非常不熟悉并且知道如何进行转换。
我尝试添加:
my $MiniCrtS=" ";
my $MiniCartElmt;
foreach $MiniCartElmt (@{$pProduct}) {
$MiniCrtS=$MiniCrtS . $MiniCartElmt;
}
然后从:
更改了$ cartStrHTML::Entities::encode(substr($pProduct->{'NAME'},0,$abrv))
为:
HTML::Entities::encode(substr($MiniCrtS,0,$abrv))
但是此更改会导致代码在运行时崩溃。
关于我做错了什么的想法或者找出数组中数据的替代方法?
非常感谢Tony
相关代码是:
sub miniCart
{
use HTML::Entities ();
my $Self = shift;
my $abrv=12; # number of characters to abbreviate item name
my $defaultCur="£"; # currency symbol to include
my $cartStr="ss=" . $::g_sSearchScript . "cur=" . $defaultCur;
my $pCartItem;
foreach $pCartItem (@{$Self->{_CartList}})
{
my ($Status, $Message, $pProduct) = GetProduct($pCartItem->{'PRODUCT_REFERENCE'}, $pCartItem->{'SID'});
if ($Status == $::FAILURE)
{
return ($Status, $Message, []);
}
elsif ($Status == $::NOTFOUND)
{
next;
}
my @Prices = $Self->GetCartItemPrice($pCartItem);
$cartStr=$cartStr . "&!" . $pCartItem->{'QUANTITY'} . "x" . HTML::Entities::encode($pCartItem->{'PRODUCT_REFERENCE'}) . ">" . HTML::Entities::encode(substr($pProduct->{'NAME'},0,$abrv)) . ">" . $Prices[2]/100;
}
return $cartStr;
}
答案 0 :(得分:3)
要获取数据结构的转储,您可以使用Data::Dumper。
我按如下方式使用它:
use Data::Dumper qw( );
sub dumper {
local $Data::Dumper::Indent = 0;
local $Data::Dumper::Sortkeys = 1;
local $Data::Dumper::Terse = 1;
local $Data::Dumper::Useqq = 1;
return Data::Dumper::Dumper($_[0]);
}
warn("pProduct: " . dumper($pProduct));
这会将生成的字符串记录到Web服务器的错误日志中,但如果您真正想要的话,也可以将其返回给Cookie。