• 締切済み

.forwardから呼び出すperlプログラムに引数を付ける事は可能ですか?

はじめまして。Perlの初心者ものです。 よろしくお願い致します。 .forwardから呼び出すperlプログラムに引数をつけて プログラム内で引数とメール内容を処理に使用したいので すが、出来るのでしょうか? 例えば.forwardの中身を |/XXX/test.pl p1 と、記入して、 test1.pl内で引数によって、メールの内容を違ったファイルに保存したいです。 よろしくお願い致します。

  • Perl
  • 回答数2
  • ありがとう数0

みんなの回答

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

うちはsendmailですが、.forward使っています。 引数を渡すことは可能です。 ただし、sendmailでsmrsh(sendmail restricted shell)機能が有効になっている場合は、 smrshに登録されたプログラム(スクリプト)のみ実行することが できます。

  • zebedeer
  • ベストアンサー率66% (80/121)
回答No.1

.forward使ったことないので適当ですが、 確か/から記述するとファイルに落とすことになるので、 test.plをpathの通ったところへ置いて、 "|test.pl p1"とするのでは?

関連するQ&A

  • perlと引数 その結果はshellscript

    今、仕事で、UNIXの知識もないまま、突入しています。 教えてください。 perlのプログラムに引数を与え、perlで処理した内容を shellScriptにしようとしています。 #! /usr/bin/sh myProgram.pl "mytest" > mytest.sh どうもうまく行きません。どうすればよいですか? よろしくお願い致します。

  • .forwardで実行されない?

    届いたメールをテキストに書き出したいのですが、思うように動作せず、手詰まりになりました。 [環境] VineLinux 4.2 postfix perl5.8 [.forward] "|exec /home/test/test.pl" [test.pl] #!/usr/bin/perl open(OUT,"> test.txt"); while(<STDIN>){ print OUT $_; } close(OUT); exit; [パーミッション] .forward 644 test.pl 755 test.txt 666 testディレクトリ 755 postfixのログには delivered to command: exec /home/test/entry.pl となっており、動作してると思うのですが、test.txtには何も書き出されません。 考えられる原因は何でしょうか? 暇なときで構わないので、教えていただけたら幸いです。

    • ベストアンサー
    • Perl
  • perlプログラムが動かない

    パールのプログラムを作成して拡張子「.pl」で保存するとアイコンがパールのマークになりますよね。 プログラムファイルにデータファイルをドラッグすると、プログラムファイル(拡張子.pl)のアイコンが白黒反転して、目的の加工データをファイルとして出力するプログラムがるのですが、プログラムを作成したパソコンともう一台しか動作しません。他のパソコンでは、プログラムファイルにデータファイルをドラッグしても、プログラムファイル(拡張子.pl)のアイコンが白黒反転せず、パールプログラムが動作しません。 どこの設定をどのように変更すればいいのでしょうか。(プログラムファイルのアイコンを白黒反転させるにはどうしたらいいのでしょうか。) コマンドプロンプトでパスが通っているか確認をしたのですが、どのパソコンもパスは通っています。 プログラムの動作するパソコンの「システム環境変数のpathとPATHEXT」をプログラムの動作しないパソコンにコピーペーストしてもNGでした。 ※perl.exeが入っているディレクトリは同じにしています。プログラムファイとデータファイルをperlフォルダに入れても駄目でした。  OSは、Windows XPです。

  • Perlの超初心者です。

    Perlの超初心者です。 mac osXを使っています。テキストエディットで、#! /usr/bin/perl print "hello world!\n";と書いてperl-test.plと保存しました。そしてターミナルを起動してperl-test.plとタイプしたのですが、-bash: perl-test.pl: No such file or directoryとなってしまいます。 試しにターミナルでperl -le "print 'hello world';"とタイプするとhello worldとかえってきました。 perl-test.plはfinderのデスクトップに保存してあります。いったいどうすればperl-test.plのファイルを実行できるのですか? 教えて下さい。よろしくお願いします。

  • .forwardについて、教えて!

    初心者です。 .forwardファイルの解析する必要が有った。 この.forwardファイルの中身は 転送先のメールアドレスですね。 ところで、転送元のメールアドレスは何ですか? 内容は何ですか? 申し訳ないですが、.forwardについて、 教えてください。 お願いします。

  • Perlのサブルーチンについて

    小さいプログラムで確かめたのですが、引数がないときは、 &test();としないと、 &test;では、$_[0]の値が正しくない というのは、Perlの仕様でしょうか? Perlを本格的に始めようとしていますが、 このようにはまり易い事例はたくさんあるのでしょうか?

    • ベストアンサー
    • Perl
  • perlプログラム内で中間ファイルを利用するには

    perlプログラムについて 処理1 の アウトプットデータを用いて、処理2を行うというのを1つのperlのプログラム内で実装したいと考えています。 処理1のアウトプットファイルの書き出しに時間がかかり 処理2が先に動き、ファイル読み込みできずに終わってしまいます。 処理1のアウトプットファイル書き出しが終了を待ってから、処理2を実施したいのですが、 どのように記載すればよいのでしょうか? 例) perl program.pl AAA > BBB program.pl 内 open(OUT1,"> program1_work"); open(ARG,$ARGV[0]); while(<ARG>){ 処理1 print OUT1 "XXXXXX"; } close(ARG); open(ARG1,OUT1); while(<ARG1>){ 処理2 print "XXXXXX"; } close(ARG1);

  • evalの使い方 引数として式を与える

    引数として与えた式を、プログラム中で計算するようにしたいと思っています。 引数に変数を入れることはできないのでしょうか? 将来的には、ファイルを開いてそれぞれの、ファイルごとの定数を式に代入しようと考えています。 よろしくお願いします。 プログラム ################################### my $bb =2; my $str = $ARGV[0]; eval $str; print "$str\n"; 実行文 #################################### perl test.pl 2*3+\$bb 結果 #################################### 2*3+$bb 望んでいる結果 8

    • ベストアンサー
    • Perl
  • Postfixでメールを受信したらPerlスクリプトを実行したい

    Solaris10で構築したサーバにて、ユーザー宛のメールを受信したら Perlで記述したスクリプトを実行したい為、下に記載の手順1及び2の 方法で受信メールを渡すパイプを記述したのですがスクリプトが実行されませんでした。 手順1,2共に他のメールアドレスへ転送させた場合、メールの転送は正常に行われました。 メールを受信したらPerlスクリプトを実行するには、どのように設定すればよいのでしょうか? main.cfやmaster.cfに更なる設定の記述が必要なのでしょうか? 主な環境は下記の様になっているのですが不足がありましたら御指摘下さい。 申し訳ありませんがよろしくお願いします。 【手順1】~/.forwardによるスクリプト起動     (1)~/.forwardに、下記の様な記述をしましたがスクリプト起動せず。 (.forwardの記述)        (パターン1) \username,"|/home/username/test.pl"        (パターン2) "|/home/username/test.pl"        (パターン3) |"/home/username/test.pl"        (パターン4) "|/usr/local/bin/perl /home/username/test.pl"        ※下記のような転送は処理されました         \username,username@test.ne.jp 【手順2】main.cf修正によるスクリプト起動     (1)/usr/local/etc/postfix/main.cfに下記行を作成       alias_maps = hash:/usr/local/etc/postfix/aliases,hash:/usr/local/etc/postfix/usr_alias       (usr_aliasの記述) username: :include:/home/username/include       (includeの記述) |"/home/username/test.pl"               他に上記.forwardの記述の4パターンを試しましたが全てスクリプト起動せずでした。 【サーバ環境】 OS:Solaris10(Sparc) MTA:postfix-2.5.3 【test.plの内容】 #!/usr/local/bin/perl open(DATA_FILE, "> test_log.txt"); print DATA_FILE "Test_OK!!!\n"; close(DATA_FILE);     ※備考       ・保存場所:/home/username/test.pl       ・パーミション:test.plと/home/username共に777 (オーナはusername) 【main.cfについて】 念のために allow_mail_to_files = alias,forward,include allow_mail_to_commands = alias,forward,include の記述を追加しています。

  • sendmail使用し、メールが送られた時にPerl実行するようにaliasesファイルを修正したが・・・

    こんにちは。 特定のアカウントにメールが送られた時に Perlが実行されるような実装をしていますが、うまく処理されていないようです。 aliases ファイルに、 aaa: "|/usr/local/bin/test.pl" と加えました。 test.plには、ファイルに文字列を記述するだけの処理になってます。 aaaにメールを送ったのですが、test.plが処理されてません。 perl test.pl とプロンプトで実行すると、正しく処理されているので test.plの記述が悪いわけではなさそうです。 aliasesファイルの記述が悪いのかと思いましたが、 仮に記述ミスしたtest.plにしてから aaaにメールを送ってみると メールデーモンが返ってきて、記述ミスした部分をエラー表示してくれます。 test.plは正しく呼び出されているようなのです。 これ以上、何が悪くて、どうすればこれ以上原因を判明することができるのか まったくわかりません。 どなたか心当たりのある方、ぜひともご教授ください。 よろしくお願い致します。