Data :: Dumper를 사용하여 Perl로 데이터를 직렬화했습니다. 이제 다른 프로그램에서 나는 eval
를 사용하여 직렬화하기 위해 노력하고있어 나는군요 : 내 프로그램에 use warnings; use strict;
을 사용하고
Global symbol "$VAR1" requires explicit package name
.
my $wiki_categories = eval($db_row->{categories});
die [email protected] if [email protected];
/* use $wiki_categories */
가 어떻게 내 프로그램 my
로 선언되지 않는 때문에 "$VAR1"
죽어 해제 할 수 있습니다 : 여기
내가 eval
코드를 보내고있어 어떻게?
eval
에 $db_row->{categories}
앞에 "my "
을 붙이시겠습니까? 이와 같이 :
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
'my $ VAR1; eval ($ db_row -> {categories}); my $ wiki_categories = $ VAR1; '을 사용하여 오류를 제거하십시오. 그러나 이미있는 대답은 그보다 훨씬 더 도움이됩니다. 이를 읽고 데이터 저장을 위해 다른 모듈을 사용해보십시오. – simbabque