2017-06-15 58 views
0

我正在使用在服務器(SellerDeck)上運行的第三方購物車解決方案。我有一些代碼在服務器上運行,用基本的產品數據(數量,價格,名稱)格式化購物籃。我需要找到更多的數據,我認爲這是在2個哈希數組中進行的。我不知道這兩個數組中包含了什麼,所以我想將數組轉換爲字符串,並通過現有代碼將其輸出到客戶端的cookie中,然後我可以查看該代碼。 2個數組是$ pCartItem和$ pProduct(請參閱底部的代碼以瞭解它們的用法)。查找散列數組中的內容(在服務器上)

字符串$ cartStr(代碼的底部)通過代碼的另一部分輸出到客戶端的Cookie中。

我想將2個數組轉換爲2個字符串,可以連接到$ cartStr。然後我可以閱讀我的本地電腦(客戶端)上的內容。我的問題是我對perl非常陌生,並且知道如何進行轉換。

我嘗試添加:

my $MiniCrtS=" "; 
my $MiniCartElmt; 
foreach $MiniCartElmt (@{$pProduct}) { 
    $MiniCrtS=$MiniCrtS . $MiniCartElmt; 
} 

,然後從改變$ cartStr:

HTML::Entities::encode(substr($pProduct->{'NAME'},0,$abrv)) 

到:

HTML::Entities::encode(substr($MiniCrtS,0,$abrv)) 

但這種改變使得代碼崩潰時運行。

關於我在做什麼錯的任何想法或找到數組中的數據的替代方法?

非常感謝託尼

相關的代碼是:

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

SellerDeck沒有文檔嗎? –

+0

不幸的不是。這是他們不鼓勵任何變化的領域。問題實際上只是將數組$ pProduct轉換爲字符串。 – ag2

+0

阻止你將數組編碼爲JSON或YAML? –

回答

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,如果這就是你真正想要的。

+0

嗨。謝謝。對不起,我很笨,但我對perl很陌生。是否有可能你可以在你的例子中使用我的數組$ pProduct。如果代碼在錯誤日誌所在的服務器上運行?我只是猜測而已;有沒有辦法使用打印或警報來顯示我的瀏覽器中的信息?對不起,再次提問可能是什麼簡單點 – ag2

+0

對不起。我沒有完全看到代碼snippit。這是一個功能。所以我通過我的數組,我得到的字符串?我想我傳入了哈希數組,然後我的字符串返回qw? – ag2

+0

重新「*是否有可能你可以使用我的數組$ pProduct在你的例子*」,這將是一個數組的引用,但是,'我的$ str =轉儲($ pProduct);'/// Re「*如果代碼在服務器上運行,那麼錯誤日誌會變成*「,請檢查您的Web服務器的文檔和配置。 /// Re「*因此我傳入數組*」,您傳入標量,但包含對數組的引用。深深地回到標量的字符串表示。 – ikegami