Perl未在Windows 10中写入文件
我在Server2008上编写了一个Perl脚本。在这里很好用 我已经把它复制到我的笔记本电脑上,它运行的是Windows10家庭版,1993版,OS Build 18362.959 我还第一次下载了activeperl 该脚本基本上获取一个输入文件,并将正则表达式应用于内容,然后将结果输出到一个文件 在Windows 10上,它没有写入文件,甚至没有创建文件 我已经对这个问题进行了搜索,但没有找到解决方案 我尝试了下面的代码,在同一问题的回复中找到了。但它不会创建或写入文件。它在Server2008上运行良好。我错过什么了吗? 如前所述,这是我第一次下载ActivePerl版本Perl未在Windows 10中写入文件,windows,file,perl,write,Windows,File,Perl,Write,我在Server2008上编写了一个Perl脚本。在这里很好用 我已经把它复制到我的笔记本电脑上,它运行的是Windows10家庭版,1993版,OS Build 18362.959 我还第一次下载了activeperl 该脚本基本上获取一个输入文件,并将正则表达式应用于内容,然后将结果输出到一个文件 在Windows 10上,它没有写入文件,甚至没有创建文件 我已经对这个问题进行了搜索,但没有找到解决方案 我尝试了下面的代码,在同一问题的回复中找到了。但它不会创建或写入文件。它在Server2
Perl版本详细信息如下:
use strict;
use IO::File;
my $FileHandle = new IO::File;
$FileName = "C:\\Users\\moons\\Documents\\Personal Planning\\Shopping\\ShoppingList.txt";
open ($FileHandle, "<$FileName") || print "Cannot open $FileName\n";
local $/;
my $FileContents = <$FileHandle>;
close($FileHandle);
$FileContents =~ s/(Add|Bad|Limit|Each).*\n|Add$|\nWeight\n\d{1,}\nea|\$\d{1,}\.\d\d\/100g\n//g;
Do more Regular expressions.
$FileContents =~ s/(.*)\n(.*)\n(\$\d{1,}\.\d\d)/$1,$3,$2/g;
printf $FileContents;
这是为MSWin32-x64-multi-thread构建的perl 5,版本28,subversion 1(v5.28.1)
(对于1个注册补丁,请参阅perl-V以了解更多详细信息)
版权所有1987-2018,拉里·沃尔
ActiveState提供的二进制生成0000[58a1981e]http://www.ActiveState.com
建成日期2020年4月10日17:28:14
Perl代码如下所示:
use strict;
use IO::File;
my $FileHandle = new IO::File;
$FileName = "C:\\Users\\moons\\Documents\\Personal Planning\\Shopping\\ShoppingList.txt";
open ($FileHandle, "<$FileName") || print "Cannot open $FileName\n";
local $/;
my $FileContents = <$FileHandle>;
close($FileHandle);
$FileContents =~ s/(Add|Bad|Limit|Each).*\n|Add$|\nWeight\n\d{1,}\nea|\$\d{1,}\.\d\d\/100g\n//g;
Do more Regular expressions.
$FileContents =~ s/(.*)\n(.*)\n(\$\d{1,}\.\d\d)/$1,$3,$2/g;
printf $FileContents;
始终使用
严格使用;使用警告代码>
my$OutFile=“C:\Users\moons\Documents\Personal Planning\Shopping\test.txt”;
导致
无法识别的转义\m在a.pl第3行传递。
无法识别的转义\D在a.pl第3行传递。
在a.pl第3行传递了无法识别的转义\P。
在a.pl第3行传递了无法识别的转义。
你可以用
my$OutFile=“C:\\Users\\moons\\Documents\\Personal Planning\\Shopping\\test.txt”;
整件事:
使用严格;
使用警告;
my$in_qfn=“C:\\Users\\moons\\Documents\\Personal Planning\\Shoppin\\ShoppingList.txt”;
my$out_qfn=“C:\\Users\\moons\\Documents\\Personal Planning\\Shopping\\test.txt”;
打开(my$in_fh),始终使用使用严格;使用警告;
my$OutFile=“C:\Users\moons\Documents\Personal Planning\Shopping\test.txt”;
导致
无法识别的转义\m在a.pl第3行传递。
无法识别的转义\D在a.pl第3行传递。
在a.pl第3行传递了无法识别的转义\P。
在a.pl第3行传递了无法识别的转义。
你可以用
my$OutFile=“C:\\Users\\moons\\Documents\\Personal Planning\\Shopping\\test.txt”;
整件事:
使用严格;
使用警告;
my$in_qfn=“C:\\Users\\moons\\Documents\\Personal Planning\\Shoppin\\ShoppingList.txt”;
my$out_qfn=“C:\\Users\\moons\\Documents\\Personal Planning\\Shopping\\test.txt”;
open(my$in_fh,“,”上面的代码起作用。”--我怀疑它。它甚至不会编译,因为$FileHandle
没有包名,my
,our
,等等……这个问题包括一个(可编译的)。发现了问题。这与代码无关。我已在笔记本电脑上安装了Comodo。Comodo正在对脚本生成的文件进行自动包含。它正在将文件放入C驱动器上的隐藏文件夹中。我更新了自动包含设置,以允许Perl写入require文件夹。完成此操作后,文件即被创建在文件夹中。“上面的代码有效。”--我怀疑它。它甚至不会编译,因为$FileHandle
没有包名,my
,our
,等等……这个问题包括一个(可编译的)。发现了问题。这与代码无关。我已在笔记本电脑上安装了Comodo。Comodo正在对脚本生成的文件进行自动包含。它正在将文件放入C驱动器上的隐藏文件夹中。我更新了自动包含设置,以允许Perl写入require文件夹。完成此操作后,文件即被创建在文件夹中。