• ベストアンサー

Perl環境移行中。(変なモジュールのせいで動かない??

こんばんは。よろしくお願いします。 今現在、新旧サーバの機器切り替え~のために、旧サーバで運用中の環境を新サーバに移している最中です。 大体移行できたかな。。。と思っていたのですが、「Time」とか「Date」とか言う部分が原因で実行できません。 どなたかお知恵をお貸し願えませんでしょうか。 状況 新旧サーバ、共にOSは「Windows2003Server」 IISは、旧サーバのIISの「構成の保存」を利用して保存、新サーバの方から保存したファイルを参照させて設定。 ほとんどの移行は終わり、表示、予定通りの動きをするが、「Time」や「Date」を使用しているplファイルだけ表示されない。 症状(?) 正常に表示されないファイルをブラウザで表示させると 「CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers.」 と表示される。 「use My::Time;」 「use My::Date;」 という部分があるが、ここを消すとページが表示される。(ただし、TimeやDateを使っていたであろう、カレンダーなどは表示されない。 「use Time::Local;」という文が、上記の「My::Time~」の上にあるのですが、モジュールの使用宣言でいいのですよね? 調べた限り「Time::Local」というモジュールはあれど、「My::Time」や「My::Date」というモジュールは無い(?)のでは? 自作関数(?)とか、そういう類のものでもないようです。 この「My::Date」や「My::Time」はいったい何なのでしょう?想像としては、実行するサーバの日付と時間を取得してきそうなのですが。。。 どこかに設定が必要?? 可能性だけでも見当がつく方がいましたらアドバイスよろしくお願いいたします。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

My::TimeやMy::Dateという名前のモジュールは存在(公開)していません。(少なくともCPANでは公開されていません。) ということは、そのCGIのための独自に用意されたモジュールであると思われます。 CGIを構成しているファイルで、「My」というディレクトリ(フォルダ)中にDate.pmおよびTime.pmというファイルがあるかと思われます。 それをエラーが起きるファイルと同じディレクトリに同じ構成で置くか、Perl本体のモジュール用のディレクトリ(site/lib)に置いてください。 もし、CGIを構成しているファイルに上記のファイルがなければその旧サーバーの本体のモジュール用のディレクトリに既に置いてあると思われます。

STICKY2006
質問者

お礼

回答ありがとうございます。 ビンゴでした。回答を元に解決できました。 確かに、その1つのシステムで使用されているフォルダ内には「My」フォルダがあり、その中に「Date.pm」と「Time.pm」が存在しました。 Perl本体の方には存在していなかったのでそのままコピーしてやることで動かすことができました。 どうもありがとうございました。

その他の回答 (1)

  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.1
STICKY2006
質問者

お礼

回答ありがとうございます。 2番さんの内容で解決することができました。 CPAN、PPMに関しては既にどのようなものかは知っていたつもりでしたので、CPANから探してみてモジュールとしてなかったのでどうなのだろう。。。?と思い質問させていただきました。 専用(?)の使い方が書いてあったサイトがあまり見つけられなかったので、今後の参考にさせていただきます。 ありがとうございました。

関連するQ&A

  • Perlのバージョンに対応?非対応?CGIモジュール

    こんにちわ。 Perl初心者ですが、今度簡単なサーバー移行作業を お手伝いすることになり、ちょっとした疑問があります。 (単にCGIファイルやHTMLファイルを新サーバーにあげるだけ。) CGIモジュールというのを使ってプログラムをくんだ 場合、確かPerlのバージョンがモジュールに対応していないと動かなかったように思います。 ので、サーバー移行先で「CGIはパーミッションさえちゃんとしてくれれば動くから、CGIのチェックはしなくていい」といわれたので「CGIモジュールを使っている場合、Perlのバージョンが対応してないと動かないと思うんですけど大丈夫なんでしょうか?」と その仕事を提供してくれた人に聞いたところ 「PerlはOSに依存しないので問題ないです」とすっぱり言われました。 OSに依存しない?! ・・・意味がわかりません。 因みに移行先のサーバーのバージョンは 5.00503です。 これなら、どんなモジュールも対応しているのでしょうか?その担当の方にはもう聞きづらいかんじなので(私自身に知識がないこともあるので)教えていただきたいです。

    • ベストアンサー
    • Perl
  • フォームメール@PerlとActivePerlのモジュール

    Apacheで稼動しているメールフォームを、IISへ移動する事になりました。 現在IISがなくテストできない為、モジュールの代替案をご享受ください。 use NET::SMTP; → パッケージlibnetをインストールすればいい? use Jcode; → jcode.plを用意する? use CGI; → ??? 宜しくお願いいたします。

  • homeにインストールしたperlモジュールを使用する方法

    linuxのレンタルサーバーを使っているのですが、 root権限が無いためperlモジュールをhomeにインストールしました。 perlスクリプトからhome下にあるモジュールを呼び出すとき ef)lib use '/home/perl/'; use CGI; のように"lib use"を使うことなく   use CGI; だけでhome下のモジュールを呼び出すことはできないでしょうか? 良い方法があれば教えてください。

  • 一括してモジュールを読み込みたい

    最近Perlを始めました。(今まではPHPをやっておりました) 利用するモジュールを各CGIファイルごとの先頭に宣言するのが面倒なので、Include.plなどのファイルを作って一括して読み込みたいと考えています。 例えば以下のような感じです。 【Include.pl】 use strict; use Data::Dumper; use Fcntl qw(:DEFAULT :flock); use CGI; use CGI::Session ; use CGI::Carp qw(fatalsToBrowser); use Encode; use HTML::Template; 1; 上記のようなファイルを各CGIファイルの先頭で、 require 'include.pl'; とした場合に、使用できないモジュールがあります。 例えば、ファイルロックをしたくてflock(FILE, LOCK_EX)とするとエラーになってしまいます。 しかし、CGIモジュールは$q = CGI->new()と普通に利用できます。 モジュールは全てインストールされています。その証拠にCGIファイルに直接useの宣言を書けば動作します。 通常、このような使い方でモジュールのuseは有効にならないのでしょうか?? また、自分で作成したモジュール内で他のモジュールを利用したいといった場合、いちいちuseで宣言しなければならないのでしょうか。 mainとなるファイルでuse宣言しておくだけで、自作モジュール内で利用できると思ったのですが、いちいち宣言しなおさなければ利用できないようです。 挙動がPHPと違うため困惑しております。 どなたかご教授いただけないでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Perl MIME::Parser モジュールを使わないで添付を取り出す

    携帯から.forwordを使ってCGIを起動しメールに添付されている画像を サーバーに保存する事を考えております。 MIME::Parser モジュールを使った方法はよく見かけるのですが モジュールを使わずに@line=<STDIN>だけで複数ある添付ファイルを取り出し保存する事はできるでしょうか?

  • PerlからPHPへ移行 Part2

    以下、Perlのソースですが、これをコメントどおりに PHPに直すとどうなりますか? Time::Localは ppm install Time-Localでインストールできます。 use strict; BEGIN{ # BEGINはPHPで $|=1; # バッファリングしない } use Time::Local; #PHPでUseは? sub test_date_time{ my ($year, $mon, $mday, $hours, $min, $sec) = @_; # 可変引数な方法 my $serial = timelocal($sec, $min, $hours, $mday, $mon - 1, $year); my $moji = sprintf("$year年$mon月$mday日 $hours時$min分$sec秒"); return ($serial, $moji); # 複数の戻り値で様々な型で返す方法 } my ($serial, $moji) = test_date_time(2006, 10, 2, 10, 25, 30); # 一度に受け取る方法 print q{シリアルは} . $serial . "\n"; #q print qq{文字列は$moji\n}; my $ptn = qr{^(.+?)年(.+?)月(.+?)日\s(.+?)時(.+?)分(.+?)秒$}; if($moji =~ /$ptn/i){ print "$1/$2/$3 $4:$5:$6\n"; } exit(0); # 結果 #シリアルは1159752330 #文字列は2006年10月2日 10時25分30秒 #2006/10/2 10:25:30

    • ベストアンサー
    • PHP
  • Perlで書いたページが表示されない

    以下の内容の「index.cgi」「test.cgi」という名前は異なるが 内容は同じファイルをIISを用いて表示させようとしています。 -------------------------------------------------------------- #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print <<"htmss"; <HTML> <HEAD> <TITLE>CGI</TITLE> </HEAD> <BODY>今日からCGIを頑張って習得してきましょう。</BODY> </HTML> htmss -------------------------------------------------------------- この場合に、index.cgiは表示されるのですが、 test.cgiは表示されません。(サーバーが見つかりません、の表示) また、他の内容のcgiファイルも表示することができません。  ※最初は表示されていたが急に表示されなくなったり表示されたりを繰り返した結果、   見えない状態が続いています index.cgiもたまに表示することができない場合もあります。 これはIISのせいなのか、環境が不安定なせいなのか、困っています。 どなたか回答していただけると幸いです。

  • レンタルサーバーでのモジュールの設定

    レンタルサーバーでPerlモジュールの設定を行うためには どのようにすればいいのでしょうか? 使用モジュールは HTML::Templateです。 下記のurlの回答(教えてGOOの回答)を読みましたが、 http://oshiete1.goo.ne.jp/qa1680065.html 回答部分の use lib qw(/home/meikenpochi/lib/); に置くファイルがわかりません。 現在はローカルでモジュールを設定し、 使用できますがローカル側にモジュール設定ファイルがあり それをサーバー側にアップすればよろしいのでしょうか? またそのファイルがある場合はどこにどういう名前で存在するのでしょうか? ご教授お願いします。

    • ベストアンサー
    • Perl
  • DBIモジュールと Perl5.8

    Perl5.8のエンコードが理解できずに困っております。 MySQLでは、utf8の文字コードのデータがあります。 以下のスクリプトを実行させると、 Wide character in print at C:/usr/local/site/lib/DBI.pm line 1008. となります。 対処方法はあるのでしょうか? use utf8; use strict; use DBI; my $dbh = DBI->connect("dbi:mysql:dbname=test", "root", "", { AutoCommit=>1, PrintError=>1, RaiseError=>1} ); my $fname = "test.txt"; my $sth = $dbh->prepare("select id, namae from test order by id asc;"); $sth->execute(); # 出力ファイルを開く。 open FILE, ">" , $fname or die "Can't open $fname: $!"; # 整形された結果をファイルにダンプする。 my $rows = $sth->dump_results(80, "\n", ",", \*FILE); # 出力ファイルを閉じる。 close FILE or die "Error closing result file: $!\n"; $dbh->disconnect();

    • ベストアンサー
    • Perl
  • 「置くだけ」で使えるperlモジュールに関する情報は?

    perlモジュールをインストールしたいとき、CPANモジュールを使えば手軽に可能ですが、サーバーによってはGCC(コンパイラ)が使えない場合があります。シェル自体が使えないこともあります。 そんなときは、とりあえずダメモトで手動での展開・配置を試みます。 たとえばDate::Simpleなどはこれで問題ないですが、当然、バージョンの整合性や環境に依存するものなどもあり、動かなければ、モジュールの中身やmakeファイルなど調べたり、…などなどすることがあります。 しかし、そもそもモジュールは中身なんて知る必要がないのが利点でもあって、それこそ手軽に機能を使いたいからこそなのに、…などと作業しながら釈然としない気持ちになります。 そこでお聞きしたいのですが、コンパイルしなくても動くかどうかを知る方法、あるいはその情報、どこかに公開されているモジュール別の一覧など、そういうものをご存知ではないでしょうか。 この思いは私だけではない気がするのですが…、皆さんどうなのでしょう。

    • ベストアンサー
    • Perl