У меня есть сценарий Perl, написанный на Server 2008. Здесь он отлично работает.
Я скопировал его на свой ноутбук, на котором работает Windows 10 Home Edition, версия 1993, сборка ОС 18362.959 .
Я также впервые загружаю Active Perl.
Скрипт в основном принимает входной файл и применяет регулярные выражения к содержимому, а затем выводит результаты в файл.
На Windows 10 не выполняется запись в файл, файл даже не создается.
Я провел поиск по этой проблеме, но не нашел решения.
Я попробовал следующий код, найденный в ответе на ту же проблему. Но он не создает и не записывает в файл. Он отлично работает на сервере 2008. Я что-то упускаю? Как уже упоминалось, я впервые скачал Active Perl версию
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);