Perl非常新。在Padre和Windows 10 OS上运行Perl。
我的书中的脚本是为Unix编写的。我不知道如何纠正它,以便它适用于Windows。
这是我的书(FOR UNIX)中写的脚本:
use warnings;
#write to a file with a filehandle. Sriptname: file.handle
my $file="/home/jody/ellie/perl/newfile";
open(my $fh, ">", $file) || die "Can't open newfile: $!\n";
print $fh "hello world.\n";
print $fh "hello world again.\n";
在命令行
$perl file.handle
$cat newfile
输出应如下所示:
hello world.
hello world again.
我做了以下更改但没有成功
use warnings;
#Write to a file with a filehandle. Scriptname: file.handle
my $file='C:\newfile.txt';
open (my $fh, ">", $file) || die "Can't open newfile: $!\n";
print $fh "hello world.\n";
print $fh "hello world again.\n";
当我运行脚本时,我得到以下输出:
can't open newfile: permission denied**
当我使用debug运行脚本时,我得到以下信息:
uncaught exception for user code
can't open newfile: permission denied
at handlingfiles.pl line 5
press any key to continue
我做错了什么?
答案 0 :(得分:0)
正如@choroba在评论中提到的,C:\newfile.txt
将[尝试]写入Windows根目录(例如C:\
)。所以,你可能只想要newfile.txt
。
Cygwin :如果您正在使用perl
附带的cygwin
,则可以使用/home/jody/newfile.txt
,因为此perl支持POSIX文件句法。如果您在cygwin
处安装了D:\cygwin
,则/home
目录将以D:cygwin\home
结尾。请注意,您需要ls /home
查看已定义的用户。
否则,如果您想要一个完整路径,那么.pl
脚本的完整路径是什么。显然,你可以写到那个目录。
旁注:我已经写了很多年的perl,在我在Windows上使用它的极少数情况下,我非常喜欢使用cygwin版本[也有很多脚本,工具等,以及POSIX环境等功能。 YMMV
答案 1 :(得分:0)
要求Perl打开文件进行写入,这就是它的作用。在Windows上,普通用户无法写入驱动器的根目录,Windows拒绝其请求。尝试类似C:\Users\User\My Documents\newfile.txt
的内容。