1

私はperlが初めてです。以下のプログラムを実行しようとしました:

ファイルを開いて、ファイルから内容を読み取ろうとしています。

$FILE=open(FILE,"\\10.82.71.28\Testing501\Test_Folder\834_KMS_FACE_834A.mms");
 if($FILE)
  {
   print "The file: $FILE has opened successfully";
  }
 else
{
  die "There is an error while opening the file :$!\n";
}

while($record=<FILE>)
{
  print $record;
}

close(FILE);

しかし、プログラムの実行中にエラーが発生しました:

ファイルを開くときにエラーが発生しました:無効な引数

4

5 に答える 5

6

実行すると

print "\\10.82.71.28\Testing501\Test_Folder\834_KMS_FACE_834A.mms";

あなたが得る

Unrecognized escape \T passed through at a.pl line 1.
Unrecognized escape \T passed through at a.pl line 1.
Unrecognized escape \8 passed through at a.pl line 1.
\10.82.71.28Testing501Test_Folder834_KMS_FACE_834A.mms

(あなたは を使いますuse strict; use warnings;よね?)

次の文字列を生成するコードが必要です。

\\10.82.71.28\Testing501\Test_Folder\834_KMS_FACE_834A.mms

上記のように、次の例では明らかに目的の文字列が生成されません。

"\\10.82.71.28\Testing501\Test_Folder\834_KMS_FACE_834A.mms"

以下を使用できます。

"\\\\10.82.71.28\\Testing501\\Test_Folder\\834_KMS_FACE_834A.mms"
于 2013-09-11T04:13:22.010 に答える
3

このようにリテラルを使用しqてバックスラッシュをエスケープします

$filepath = q{\\\10.82.71.28\Testing501\Test_Folder\834_KMS_FACE_834A.mms};

open my $FILE, '<', "$filepath" or die "path: $!"
while($record = <$FILE>) {
---
}
于 2013-09-11T05:25:18.227 に答える
1

試す:

open my $file, '<', 'path' or die "path: $!"
while($record = <$file>) ...

裸のファイル ハンドルは非常に時代遅れであり、レキシカル スコープのファイル ハンドルを使用することは良い習慣と考えられています。1 つには、変数がスコープ外になると、ファイルが閉じられます。また、open の 3 引数形式は、最近では立派だと考えられている唯一の形式です。他の形式を使用する理由はまったくありません。

于 2013-09-11T04:09:42.357 に答える
1

すでに回答を受け入れていますが、バックスラッシュの代わりにスラッシュをいつでも使用できます。

$FILE=open(FILE,"//10.82.71.28/Testing501/Test_Folder/834_KMS_FACE_834A.mms");

ところで、標準的な Perl の方法は、次を使用することorです。

open(FILE,"//10.82.71.28/Testing501/Test_Folder/834_KMS_FACE_834A.mms") 
     or die qq(...);

また、3 つのパラメーター形式を使用し、ファイル ハンドルにスカラー変数を使用することをお勧めします。ファイルをサブルーチン引数として渡すのが簡単になります。

my $file_name = '//10.82.71.28/Testing501/Test_Folder/834_KMS_FACE_834A.mms';
open my $fh, "<", $file_name 
   or die qq(Couldn't open the file $file_name);
于 2013-09-11T16:09:51.397 に答える
0

git.exe がファイルを使用したときにこのエラーが発生しました。実際には、変装してアクセスが拒否される可能性があります。

于 2015-03-19T21:09:40.190 に答える