1

ファイルに書き込む必要がある変数に情報が含まれています。私のスクリプトは、ファイルを作成してから書き込む必要があります。

これが私の現在のスクリプトです:

my $file_location = '/network/$custom_directory/$custom_filename';
open(my $file ">", $file_location) or die $!;
print $file "$variable_data";
close $file;

変数の書き込みプロセスではなく、実際のファイル作成でスクリプトがハングアップしているように感じます。スクリプトを実行すると、ファイルを開こうとした行に「そのようなファイルまたはディレクトリはありません」というエラーが表示されます。

4

4 に答える 4

9

プログラムに構文エラーがあります。の 3 つの引数はすべてopenコンマで区切る必要があります。

open my $file, '>', $file_location or die $!;

二重引用符とは異なり、単一引用符は補間されないため、おそらくファイル パスでそれらが必要になります。

my $file_location = "/network/$custom_directory/$custom_filename";

ところで:単一の変数を二重引用符サーバーに含めることは、文字列の内容には何の目的もありません。同等にできます

print $file $variable_data;
于 2013-08-05T12:59:19.437 に答える
4

あなたはあなたのエラーが何であるかを言いませんでした。

  • しかし、コンマがありません。
  • あなたも間違った引用符を持っています。
  • また、(おそらく)最後に改行を忘れました。
  • また、ファイルシステムがいっぱいにならないように、クローズが成功したことを確認するのを忘れていました。
  • ビンモードまたはエンコーディングを忘れた可能性があります。

これにより、必須のプリアンブルを使用して、次のようなものが得られます。

#!/usr/bin/perl

use strict;
use warnings;

my $custom_directory = "something old";
my $custom_filename  = "something new";
my $data             = "something borrowed";

my $path = "/network/$custom_directory/$custom_filename";

open(my $handle, ">", $path)    || die "can't open $path: $!";
binmode($handle);               # for raw; else set the encoding

print $handle "$data\n";

close($handle)                  || die "can't close $path: $!";
于 2013-08-05T13:01:31.350 に答える