我使用Data :: Dumper將我的數據序列化爲Perl中的字符串。現在,在其他程序中,我嘗試使用eval
反序列化它,我得到:
Global symbol "$VAR1" requires explicit package name
我在我的程序中使用use warnings; use strict;
。
下面是我eval
荷蘭國際集團代碼:
my $wiki_categories = eval($db_row->{categories});
die [email protected] if [email protected];
/* use $wiki_categories */
如何禁用我的程序死亡,因爲"$VAR1"
沒有被宣佈爲my
?
我應該在eval
之前追加"my "
之前的$db_row->{categories}
嗎?就像這樣:
my $wiki_categories = eval("my ".$db_row->{categories});
我還不測試,但我認爲這是可行的。
任何其他方式來做到這一點?也許把它包裝在一些塊中,並關閉該塊嚴格?我從來沒有做過,但我已經看到它提到。
任何幫助表示讚賞!
Data :: Dumper是一個調試工具。你真的不應該用這種方式。 JSON是一個更好的選擇。 – ikegami
這是一個後續http://stackoverflow.com/questions/11092658/how-do-i-serialize-an-array-of-array-references-in-perl – daxim
你也可以只說'我的$ VAR1;的eval($ db_row - > {類別});我的$ wiki_categories = $ VAR1;'擺脫錯誤。但是那些已經存在的答案比那個更有幫助。閱讀並嘗試其他模塊進行數據存儲。 – simbabque