2016-08-18 54 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'周圍有無意義的引號? –