2016-04-02 9 views
1

Perlにはまったく新しいものです。 PadreとWindows 10 OSでPerlを実行する。perl初心者、ファイルスクリプトの取り扱いに関する助けが必要

私の本のスクリプトはUnix用です。私はWindowsで動作するように修正する方法を知らない。 (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** 

私がデバッグでスクリプトを実行すると、私は以下の情報を得る:

uncaught exception for user code 
can't open newfile: permission denied 
at handlingfiles.pl line 5 
press any key to continue 

私は間違って何をしているのですか?

+1

あなたのユーザは 'C:\'フォルダに書き込む権限を持っていますか? – choroba

答えて

0

@chorobaがコメントに記載したように、C:\newfile.txtは、Windowsのルートディレクトリ(例:C:\)に書き込もうとします。だから、おそらくちょうどnewfile.txtがほしいと思う。

のCygwin:あなたはcygwinが付属していますperlを使用している場合、このPerlはPOSIXファイルの構文をサポートしているとして、あなたはおそらく/home/jody/newfile.txtを使用することができます。 cygwinを(たとえば)D:\cygwinにインストールした場合、/homeディレクトリはD:cygwin\homeになります。 ls /homeを実行して、どのユーザーが定義されているかを確認してください。

完全パスを使用する場合は、.plスクリプトの完全パスは何ですか。明らかに、そのディレクトリに書き込むことができます。

サイドノート:私は長年にわたって、私はWindows上でそれを使用しないとき、それらのまれにPerlを書いてきたが、私は非常にも、など多くのスクリプト、ツールを、持っているCygwinのバージョンの[を使用して好みますPOSIX環境のような機能]。 YMMV

0

Perlはファイルを書き込み用に開くように求められます。 Windowsでは、通常のユーザーはドライブのルートディレクトリに書き込むことができず、Windowsはその要求を拒否します。 C:\Users\User\My Documents\newfile.txtのようなものを試してみてください。

関連する問題