我有一个在 Server 2008 上编写的 Perl 脚本。它在这里工作正常。
我已将其复制到运行 Windows 10 家庭版、版本 1993、操作系统构建 18362.959 的笔记本电脑上。
我也是第一次下载 Active Perl。
该脚本基本上采用输入文件并将正则表达式应用于内容,然后将结果输出到文件。
在 Windows 10 上,它没有写入文件,甚至没有创建文件。
我已经对这个问题进行了搜索,但没有找到解决方案。
我尝试了以下代码,在对同一问题的回复中找到了一个。但它不会创建或写入文件。它在服务器 2008 上运行良好。我错过了什么吗?如前所述,这是我第一次下载 ActivePerl 版本
Perl 版本详情如下:
This is perl 5, version 28, subversion 1 (v5.28.1) built for MSWin32-x64-multi-thread
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2018, Larry Wall
Binary build 0000 [58a1981e] provided by ActiveState http://www.ActiveState.com
Built Apr 10 2020 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;
上面的代码有效。下面的代码不会创建或写入文件。$OutFile = "C:\Users\moons\Documents\Personal Planning\Shopping\test.txt";
$FileHandle = new IO::File;
open ($FileHandle, ">$OutFile") || print "Cannot open $OutFile\n";
printf $FileHandle $FileContents;
close($FileHandle);