代碼來自「Modern Perl Fourth Edition」,「Book version P1.0 - October 2015」。
它位於標題爲「調試嵌套數據結構」標題下的紙質版本的第3章 - 第81頁。本書還提供PDF版本,可免費下載。這個「現代Perl」數據:Dumper示例是否可以修復?
use Data::Dumper;
my $complex_structure = {
numbers => [ 1 .. 3 ];
letters => [ 'a' .. 'c' ],
objects => {
breakfast => $continental,
lunch => $late_tea,
dinner => $banquet,
},
};
print Dumper($my_complex_structure);
「這可能會產生類似以下內容:」
$VAR1 = {
'numbers' => [
1,
2,
3
],
'letters' => [
'a',
'b',
'c'
],
'meals' => {
'dinner' => bless({...}, 'Dinner'),
'lunch' => bless({...}, 'Lunch'),
'breakfast' => bless({...}, 'Breakfast'),
},
};
首先是在 「$ complex_structure」 的代碼錯誤。
在「數字」行之後應該有一個逗號,而不是分號。
變量$ continental,$ late_tea和$ banquet不被聲明或初始化。
Dumper()被調用的名稱錯誤:「$ my_complex_structure」。
代碼中的變量$對象以某種方式在輸出中變爲「用餐」。
我不確定這是錯誤的,但想知道「祝福」從哪裏來。
由於錯誤,我不能真正確定作者的意圖來演示,但「對象」直到本書的第7章才被覆蓋
這是我寫的一個嘗試修復(簡化的)例子,考慮到有關哈希引用和匿名散列前面的例子材料:
use Data::Dumper;
my $continental = {entree => 'eggs', side => 'hash browns'};
my $complex_structure =
{
numbers => [1 .. 3],
letters => ['a' .. 'c'],
objects => {
breakfast => $continental,
},
};
print Dumper($complex_structure);
我在上一次調用了一個錯誤,並修復它之後,這個新的代碼「工作」的預期產生輸出,但我仍然感到困惑 - 特別是關於書中輸出的「祝福」。
我沒有使用Data :: Dumper的經驗。
原始示例是否具有足夠的意義,以便可以以某種方式修改它以運行並生成作者期望的內容?當本書中的例子「$ complex_structure」被拋棄時,是否應該有任何「祝福」?
究竟什麼是你問? –
事實上,它看起來像有人已經報道:https://pragprog.com/titles/swperl/errata –
唯一的錯誤報告是「對象」/「餐」分歧。這是一個明顯的錯字,但修復它這個例子仍然不會產生類似於輸出的東西 – grjash