您可以在下面更正我的代码吗?
#!/usr/local/bin/perl
open (MYFILE, '>>data.xml');
print MYFILE "<?xml version="1.0" encoding="UTF-8"?>\n";
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
更新.
#!/usr/local/bin/perl
open (MYFILE, '>>data.xml');
print MYFILE '<?xml version="1.0" encoding="UTF-8"?\>'."\n";
print MYFILE '<?xml version="1.0" encoding="UTF-16"?\>'."\n";
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
输出:现在运作良好.
<?xml version="1.0" encoding="UTF-8"?\>
<?xml version="1.0" encoding="UTF-16"?\>
Run Code Online (Sandbox Code Playgroud)
但.
#!/usr/local/bin/perl
open (MYFILE, '>>data.xml');
print MYFILE '<?xml version="1.0" encoding="UTF-8"?\>'.'\n';
print MYFILE '<?xml version="1.0" encoding="UTF-16"?\>'.'\n';
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
输出:#n错误格式\n
<?xml version="1.0" encoding="UTF-8"?\>\n<?xml version="1.0" encoding="UTF-16"?\>\n
Run Code Online (Sandbox Code Playgroud)
小智 6
问题是你在字符串中有未转义的引号.使用反斜杠转义引号或使用qq {}包围打印字符串:
print MYFILE qq{<?xml version="1.0" encoding="UTF-8"?>\n};
--or--
print MYFILE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
Run Code Online (Sandbox Code Playgroud)
print MYFILE qq{<?xml version="1.0" encoding="UTF-8"?>\n};
Run Code Online (Sandbox Code Playgroud)
你的问题是你有嵌套的双引号; 使用qq{}来分隔字符串将解决这个问题.
始终打开警告和限制,以便您早些时候发现出了什么问题,并获得更多详细信息:
#!/usr/local/bin/perl
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
总是使用lexical-variabled,三参数形式open(这里有一个很大的讨论原因),并且总是检查返回值(如果出现问题,它将返回错误,并将原因列入$!变量中(见下)$!perldoc perlvar).另外,die如果你没有用a结束你的字符串,那么将打印程序退出的行号\n(perldoc -f die更多).
open my $file, '>>', 'data.xml' or die "Can't open file: $!";
Run Code Online (Sandbox Code Playgroud)
并使用双引号,\n以便正确打印:
print $file '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
print $file '<?xml version="1.0" encoding="UTF-16"?>' . "\n";
close $file;
Run Code Online (Sandbox Code Playgroud)