2016-08-18 75 views
0

问题描述: 我有一个xml文件,其内容被复制到一个变量中以通过HTTP消息传递。一旦我收到HTTP消息,我试图将其复制回文件,但似乎不起作用。无法从字符串检索/复制xml数据到文件

我也做了以下

if(-f $xml_file) { 
      open (FH, "< $xml_file") || die "error", "Can't open schema file $xml_file:$!"; 
      while(<FH>) { $xml_content .= $_ . "\\n"; } 
      close(FH); 
     } 

和我分配$ xml_content到html_header - > { 'xml_content'}我所定义。

我试图将内容复制回用

my $xml_data = html_header->{'xml_content'}; 
    my $file_xml; 
    write_file('$file_xml', $xml_data); 

它不工作的文件。
我想将$ file_xml复制到特定的位置供以后使用。

AM a在这里做了任何事情。或者我对File :: Slurp qw(write_file)中的write_file功能的理解是错误的。

有人可能会指出这个错误...我试图用其他方式来做...但它不起作用。

+3

你是什么意思的“不工作”?另外,你为什么要将'\\ n'附加到每一行(可能在换行符之后)? – choroba

+0

它不会将$ xml_data写入$ file_xml。当我将内容复制为一个字符串时...我认为在末尾添加\ n将有助于区分各行...当我阅读时。 –

+0

当我在稍后使用$ file_xml时,出现错误“使用未初始化的值$ file_xml”。 –

回答

1
write_file('$file_xml', $xml_data); 

变量不会在单引号内扩大。这将创建一个名称为$file_xml的文件。我认为你的意思可能是:

write_file($file_xml, $xml_data); # No quotes needed. 
+0

感谢戴夫的投入。语法是write_file(“$ file_xml”,$ xml_data)。当你指出单引号时,我意识到了这一点。 –

+0

否。语法是(正如我在我的回答中写的)'write_file($ file_xml,$ xml_data)'。当然你的版本也可以工作,但是为什么'$ xml_file'周围有无意义的引号? –