簡體   English   中英

現在禁止標量的實驗值 - perl

[英]Experimental values on scalar is now forbidden - perl

現在,舊軟件中禁止使用標量的實驗值:

$link = Winners::Links->new();
my @fields = $link->column_names;     
foreach my $field ( values @fields[0]) {

我試圖做:

 foreach my $field ( values {@fields[0]}) {

 foreach my $field ( values %{@fields[0]}) {

 foreach my $field ( values %@fields[0]) {

不是他們的作品。 任何想法應該怎么做? 謝謝。

以下是@fields對象定義的更多內容:

[[
  'id',
  'entry',
  'selection',
  'status'
]]

這是在Perl 5.14中添加的,但在5.23中刪除了:

現在禁止在標量上實驗%s (F)在Perl 5.14中添加的實驗特性允許使用標量參數調用每個,鍵,推,彈,移位,拼接,非移位和值。 該實驗被認為是不成功的,並已被刪除。 postderef功能可以更好地滿足您的需求。

因此,如果您在引用上使用它,請首先取消引用它。 由於您的原始代碼,這里有一些混亂:

foreach my $field ( values @fields[0]) {

這里@fields[0]實際上是一個切片,它是有效的,並且有效。 但是通過嚴格和警告,你會得到類似的東西:

Scalar value @fields[0] better written as $fields[0] at - line x.

事實上,如果你正在訪問一個項目(比如參考,可能在你的情況下),你應該使用$fields[0] 因此,首先要糾正這個問題,然后取消引用以符合標准的values要求(作為列表。它僅接受標量作為過去的實驗性功能)。

foreach my $field ( values %{$fields[0]})

你去參考使用數組$印記,當你需要一個單獨的值,而不是@印記。

嘗試使用:

foreach my $field ( values %{ $fields[0] } ) {
  ....
}

我沒有測試過,但基於AoA參考的書面定義,我認為:

foreach my $field ( @{ $fields[0] } ) {...}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM