perl新手,需要协助处理文件脚本

时间:2016-04-02 23:07:29

标签: perl

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

我做错了什么?

2 个答案:

答案 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的内容。