![](/img/trans.png)
[英]how to solve the “Experimental values on scalar is now forbidden” problem in 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.