Может ли сценарий PHP десериализовать сохраняемый файл, созданный с помощью Perl?

Asked
Viewd1348

3

Может ли сценарий PHP десериализовать сохраняемый файл, созданный с помощью Perl?

4 ответов

11

Нет, но вы можете выгрузить данные, читаемые PHP, из Perl с помощью PHP :: Serialization а>. Вы также можете выбрать что-то более стандартное, например YAML или JSON. Их можно понять практически на любом языке.

  • Good luck mapping Storable’s concepts onto PHP (like blessed references).

    jrockway20 февраля 2009, 19:35
  • Well, you could do it if you rewrote Storable as a PHP library, couldn’t you? :)

    brian d foy20 февраля 2009, 19:13
4

Поскольку PHP является полным по Тьюрингу и все такое, ответ на самом деле не «нет», а скорее «не изначально или с каким-либо известным общедоступным модулем».

  • Okay, you weren’t being helpful with the early kick-out, then. BTW, thanks for all the downvotes with posts that each one contains about 3-times more helpful detail than your early kick-out.)

    Axeman20 февраля 2009, 17:36
  • Um… no. Read the question. YAML is a solution for transferring serialized data between PHP and Perl; it is not a solution for reading serialized data from Perl’s Storable module into PHP.

    chaos20 февраля 2009, 17:13
  • Early kick-out=”Test. No? -> Done.” Like a flowchart. Actually, my reading comprehension is fine–when I reread a source. By the time I read down the page, I had forgotten the actual context. You helped me realize that the question–as asked–hadn’t been answered.

    Axeman20 февраля 2009, 19:06
  • This is faintly ridiculous, since it’s right there in front of you that I wrote my answer an hour after the other two. But I guess you’ve already demonstrated reading comprehension issues. I wrote what I wrote because the accepted answer’s “no” isn’t really true.

    chaos20 февраля 2009, 18:45
  • Ah, I see. Well, glad to be of service, then. I guess it all worked out in the end.

    chaos20 февраля 2009, 19:15
5

Вы можете использовать JSON в качестве лингва-франка между двумя языками, я предлагаю JSON :: XS на стороне Perl (с подпрограммами, реализованными на C / C ++) для представлений, затем вы можете прочитать (в PHP) JSON с помощью это расширение .

4

Как указывает хаос, вы специально просили Storable , поэтому переключение на YAML (или JSON) может быть возможным, но не может. Это может сработать, чтобы поместить его в YAML (или даже JSON ):

 $output_format = 'YAML';
popen( "perl -MStorable -M${output_format}::Syck=Dump -e 'print Dump( retrieve( q{$storable_file_path} ))'", "r" );
 
  • If you’re going to exec Perl for every request, why would you be using PHP to begin with?

    jrockway20 февраля 2009, 19:37
  • Jon (rockway), who said anything about exec-ing it every request? You could substitute -MPHP::Serialization=serialize and print serialize( retrieve( … )), you can fwrite that string to a file or but you’d still have to fread it, no matter what.

    Axeman20 февраля 2009, 23:31