

お世話になっております。
perlスクリプト中でncftpgetを使って、FTPサーバーからファイルをダウンロードするスクリプトを作成しております。
ところがshellでは問題なくいくのですが、perlでは上手くいきません。
<ソースコード>
※$DATE以外は文字列
※$DATE = `date +%Y_%m_%d`;
system "ncftpget -u $USER -p $PASS -a -t 15 -e $WORK_PATH/logfile_$DATE -d $WORK_PATH/logfile_ncftp_$DATE $ADDRESS /tmp /tmp/$FILE 2>> $WORK_PATH/logfile_$DATE 1>/dev/null";
perl -wc ではOKです。
perl -d で行うと、ncftpgetのUsages等(オプションミス等の時に表示されるものです)が表示されてしまい、その後、「-d: 見つかりません。」となってしまいます。
また、上記ソースコードをshellスクリプトでそのまま書き直すと、正常に動きます。
加えて、$DATEのみ適当な文字列(1111や2222)等にすると、問題なく動作します。
$DATEに値が入っていないのか思ったのですが、system関数前後で標準出力させてみると、正常に表示されてます。
$DATE部分に日付を入れたいので、固定にするわけにはいかないですし……。
何故perlだと上手くいかないのでしょうか?
No.2ベストアンサー
- 回答日時:
次の簡単なコードを試してみてください。
$DATE = `date +%Y_%m_%d`;
print "$DATE$DATE\n";
私の使用している VineLinux では、日付が2行に表示されます。日付が2行に表示される場合は、
$DATE の末尾に改行が付着しているので chomp $DATE; とすればうまくいくと思います。
まとめてお返事させていただきすこと、御了承下さい。
お2人とも、ありがとうございました。
お2人方の仰られたように、ソースコード、及び$DATE$DATEををprintで表示したとき、改行が$DATE直後にはいっておりました。
print "ncftpget -u $USER -p $PASS -a -t 15 -e $WORK_PATH/logfile_$DATE
-d $WORK_PATH/logfile_ncftp_$DATE
$ADDRESS /tmp /tmp/$FILE 2>> $WORK_PATH/logfile_$DATE
1>/dev/null";
DATE、シェルの実行結果を変数に入れると、改行はいるんですね……っというか、良く考えればprint "$DATE"したときに改行されている事に気が付けって話ですね(苦笑。
kumoz様が仰られるように、chompで対応できました。
まだまだ勉強足りませんね……。
何はともあれ、お2人とも、ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlスクリプト s/^\\s+//; ...
-
「デバイスは PRN を初期化でき...
-
グラフのX,Y座標を取得したい
-
acwzlibとは?
-
VBA This Workbookモジュール...
-
Excel VBA 定義されたプロージ...
-
EXECEL VBA コマンドボタンか...
-
Excel VBAでリンク切れをチェッ...
-
モジュールからフォームのボタ...
-
モジュールアップデートって何...
-
エクセルVBAでシートモジュール...
-
EXCELのVBAで、あるワークシー...
-
CPANモジュールのアンインストール
-
VBScriptで、メールの送信をし...
-
現在アクティブなフォーム名を...
-
'Range'メソッドは失敗しました
-
C言語について。
-
VBでグローバル変数を宣言するには
-
教えて下さい。
-
ADサーバにおけるログインID,PC...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー
-
use encoding 'shiftjis'; の不...
-
Pod::Usageで日本語を使用する...
-
PerlでIPアドレスを取得する方法
-
IO::Socket::INET で tcp が Ba...
-
awkのtoupper()
-
スクリプトの繰り返しの防止
-
UTF8でperlスクリプトを書くと...
-
perlでactive directoryに登録
-
例外処理のフローチャートの記...
-
「デバイスは PRN を初期化でき...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
Application.OnKey:項目入力中...
-
Excel VBAで、ユーザーフォーム...
-
モジュールの最大数はいくつな...
-
グラフのX,Y座標を取得したい
-
VBA This Workbookモジュール...
-
ユーザー定義関数に#NAME?が返...
-
LCD ディスプレイを Raspberry ...
おすすめ情報