perl4とperl5の違いについて教えてください。
まったく別ものなのでしょうか。
それとも、ヘッダの部分をかえるとたいていは
問題なくうごいてしまうようなものなのでしょうか、、、
違いをあまりしらないのでおしえてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

まったく別ものというほどは違いませんが、細かいところで互換性のない部分がかなりあります。


もちろん、「ヘッダの部分を変える」レベルでは、対応できないものが多いです。

私がかつて Perl4 から Perl5 に乗り換えて一番苦労したのは、@の扱いでしたね。
Perl5 では $a = "abc@def.co.jp" とは書けないんですよ。"abc\@def.co.jp" となります。

詳細をここで説明していると何ページにもなってしまうので、参考URLを見てみて下さい。
他にも、「Perl4 Perl5 違い」などで検索すれば、たくさんヒットしますよ。

参考URL:http://www.att.or.jp/perl/faq/faq1j.html,http:// …
    • good
    • 0

すべてのPerl4で同じなのかよく知りませんが、私が使っているレンタルサーバーでは、ABS関数がPerl4では使えず、Perl5に直しました。


あと、Perl5では、jcode.plの&jcode'convertを使うときは、
&jcode'convert(*a,'jis');
から
&jcode'convert(\$a,'jis');
に変えるそうです。
微妙に違うみたいです。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q結婚相談所の口コミや人気比較ランキングサイトってありますか?

結婚相談所の口コミや人気比較ランキングサイトってありますか?

結婚相談所の利用を検討しています。出会い系、合コン、パーティー、お見合い等、数をこなしても結局は実っていません。

出会いの質を変えたいのですが、結婚相談所ではツヴァイ、オーネット、ノッツェ、サンマリエ、パートナーエージェント・・・違いがよく分かりません。

実際に結婚紹介サービスを利用した方の体験談などが掲載されているサイトを探しています。

Aベストアンサー

結婚相談所の口コミ・評判
http://2marry.biz/138.html

[結婚相談所選びのポイント]
・結婚相談所の料金は大切ですが費用の高い安いだけで選ぶのは危険です。安いに越した事はないのですが安いのはそれだけの理由があります。サポートの不足もありえます。高いからとサービスが良い訳ではないのですが、極端に安い所は注意した方がいいです。

・提出する書類も大切です。提出書類からプロフィールが作成されますから、少なければ自分は楽ですが、相手の情報は多く得られることができません。○○が必要、●●証明を提出して下さいなど面倒くさいですが、相手にも求めている訳ですから信頼性は間違いなく増します。悪徳相談所ではサクラとかありますしね。

QPerlでのHTTPヘッダのStatus変更

内部処理の結果に応じて、成功の場合は「200 OK」、失敗の場合は「503 Service Unavailable」をHTTPヘッダのStatusに指定して返したいと思っています。

ヘッダを

"Content-Type: text/html\n\n"

だけにして返す場合は問題ないのですが、その前に

"Status: HTTP/1.1 200 OK\n" や "Status: HTTP/1.0 503 Service Unavailable\n" を追加するとInternal Server Errorになってしまいます。


[現状]
--------------------------------------------
$ret=system("コマンド");

$header = "Status: HTTP/1.1 200 OK\n";
$cmt = "OK";
if ($ret == 256) {
$header = "Status: HTTP/1.0 503 Service Unavailable\n";
$cmt = "NG";
}
$header .= "Content-Type: text/html\n\n";

print "$header";
print "$cmt";

exit;
--------------------------------------------

なにか、Statusを変更する良い手段はないでしょうか?
よろしくお願いします。

内部処理の結果に応じて、成功の場合は「200 OK」、失敗の場合は「503 Service Unavailable」をHTTPヘッダのStatusに指定して返したいと思っています。

ヘッダを

"Content-Type: text/html\n\n"

だけにして返す場合は問題ないのですが、その前に

"Status: HTTP/1.1 200 OK\n" や "Status: HTTP/1.0 503 Service Unavailable\n" を追加するとInternal Server Errorになってしまいます。


[現状]
--------------------------------------------
$ret=system("コマンド");

$header = "Status: H...続きを読む

Aベストアンサー

実際に試してませんが
$header = "Status: 200 OK\n";
$cmt = "OK";
if ($ret == 256) {
$header = "Status: 503 Service Unavailable\n";
$cmt = "NG";
}
$header .= "Content-Type: text/html\n\n";
でどうでしょう

Q鉄道のコストパフォーマンス比較

気まぐれ鉄道比較質問ですw

お暇な方適当でいいのでおしえてください^^

運賃を距離で割った場合、以下のJR3つと都内5私鉄の、
計8路線ではざっくり言ってどんなランキングになりますか?

一応JRなどは都市部中心に考えて下さい。
(郊外入れると多分比較できなさそうな為)

また車内が快適だと思うランキングを主観でお願いします^^w


JR東日本、JR東海、JR西日本
東武池袋、西武池袋、京王、小田急、京急

ざっくりでいいのでよろしくです!

Aベストアンサー

コストパフォーマンスはこの順だな。
1.京王
2.JR東日本(山手線)、JR西日本(大阪環状線)
4.小田急
5.西武池袋、京急
7.東武池袋、JR東日本、JR西日本
10.JR東海

Qperlがうごきません

htmlファイルには
<html>
<form action="form2.cgi" method="get">
食品名1<input type="text"name="form1">
<br>
食品名2<input type="text"name="form2">
<input type="submit"value="送信">
</form>
</html>

cgiファイルには

#! /usr/bin/perl

require "cgi-lib.pl";

&ReadParse();

print "Content-type:text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>フォーム</title>\n";
print "</head>\n";
print "<body>\n";
print "おいしい$in{'form1'}\n";
print "まずい$in{'form2'}\n";
print "</body>\n";
print "</html>\n";
exit;

cgi-lib.plはサーバーにいれております。

どうしてうごかないのでしょうか。
perlの場所も正確です。

htmlファイルには
<html>
<form action="form2.cgi" method="get">
食品名1<input type="text"name="form1">
<br>
食品名2<input type="text"name="form2">
<input type="submit"value="送信">
</form>
</html>

cgiファイルには

#! /usr/bin/perl

require "cgi-lib.pl";

&ReadParse();

print "Content-type:text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>フォーム</title>\n";
print "</head>\n";
print "<body>\n";
print "おいしい$in{'form1'...続きを読む

Aベストアンサー

 以下補足要求
1.エラーが出るのならステータスコードを教えてください
2. FTP転送時にasciiモード(FTPソフトによってはtextモードとも言う)で送りましたか?
3. パーミッションは取り合えず最も普遍的な 755にしてみてください
4.  2.3.を確認しても駄目なら スクリプトの末尾に
BEGIN{use CGI::Carp qw(fatalsToBrowser);}
と追加してみてください
表示されたメッセージがあれば 補足に貼り付けてください

##以下、上の説明
1. ステータスコードとは サーバーから返される 404、500などの数字ですが
http://www.studyinghttp.net/status_code <=ここが詳しい
ブラウザのタイトル欄に表示されなければ
 MSIEの場合なら ツール>インターネットオプション>詳細設定>
 「HTTPエラーメッセージを簡易表示する 」<=これのチェックを外してからMSIEを再起動し 問題のCGIにアクセスし直してください

2. windows、MAC、UNIXの改行コード(Content-type: text/html\n\n の\n がそれです)
 はそれぞれ違います。
 上の書き方ではwindowsは \r\n macは\rだけ unixは\nだけ
 asciiモードで転送しないと そのまま送られてしまいますので例えばwindowsからだと 正しいperlのパスであっても
#! /usr/bin/perl\r\n となり unixは/usr/bin/perlではなく /usr/bin/perl\r を探しに言ってしまい、当然見つかりませんのでエラーに成ります。

3. サーバーによっては .cgiのパーミッションが700でも動いたり
  777でも動いちゃったりします(<=これはすごく危険ですが)
  あるいはごく稀にグループ権限で動く場合もあるらしいです
 それらの場合でも最大公約数的に755なら動きます

4. これは perlのエラーメッセージを画面に表示するルーチンです
  デバッグが終了したら消去しても構いません。
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI/Carp.pod

 以下補足要求
1.エラーが出るのならステータスコードを教えてください
2. FTP転送時にasciiモード(FTPソフトによってはtextモードとも言う)で送りましたか?
3. パーミッションは取り合えず最も普遍的な 755にしてみてください
4.  2.3.を確認しても駄目なら スクリプトの末尾に
BEGIN{use CGI::Carp qw(fatalsToBrowser);}
と追加してみてください
表示されたメッセージがあれば 補足に貼り付けてください

##以下、上の説明
1. ステータスコードとは サーバーから返される 404、500な...続きを読む

Q比較サイト

これ以外で、良い、充実した比較サイト知りませんか
教えて下さい(ランキングよりカスタマレビュー重視の物で)
http://www.hikaku.com/

Aベストアンサー

宣伝になってしまうので

"価格比較サイト"っていうキーワードで検索してみて下さい。
メジャーなところは殆どこれで見つかります。

ただ、価格比較サイトって殆どの場合、店が直接管理している
わけじゃないから内容は信用しない方がいいよ
信用してしまうと失敗します。
参考程度に考え検討は必ずその店のサイトへ行ってしましょう。

価格比較サイトは単なる広告サイトの一つですからね

Qperlがうごきません

<html>
<head>
<title>form3</title>
</head>
<body>
<form action="form3.cgi" method="post" name="form3">
<input type="text"name="form3">
<input type="submit"value="送信">
</form>
</body>
</html>
:::::::::::::::::::::::::::::::
#! /usr/bin/perl

if($ENV{"REQUEST_METHOD"} eq "GET"){
$str=$ENV{QUERY_STRING"};
}else{
read(STDIN, $str, $ENV{"CONTENT_LENGTH"});
}
$str=~ tr/+/ /;
$str=~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c", hex($1))/eg;
foreach(split(/&/, $str)){
my ($key, $value)=split(/=/, $_);
$data{$key}=$value;
}

print "Content-type:text/html\n";
print "\n";
print "<html>\n";
print "<head><title>form3</title></head>\n";
print "<body>$data{'form3'}</body>\n";
print "</html>\n";

exit;
::::::::::::::::::::::::::::::::
どうしてもうごきません。
どこかスクリプトがまちがっているのでしょうか。
パールのパスはあっています。

<html>
<head>
<title>form3</title>
</head>
<body>
<form action="form3.cgi" method="post" name="form3">
<input type="text"name="form3">
<input type="submit"value="送信">
</form>
</body>
</html>
:::::::::::::::::::::::::::::::
#! /usr/bin/perl

if($ENV{"REQUEST_METHOD"} eq "GET"){
$str=$ENV{QUERY_STRING"};
}else{
read(STDIN, $str, $ENV{"CONTENT_LENGTH"});
}
$str=~ tr/+/ /;
$str=~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c", hex($1))/eg;
fore...続きを読む

Aベストアンサー

落ち着いて順に追ってみましょう。

$str=$ENV{QUERY_STRING"};

上記の行、QUERY_STRINGの前のダブルクォーテーション「"」が抜けています。

QFXの比較サイトってどれほどの信用度ですか

FXに興味を持って比較サイトを見ました。不思議に思ったのは、比較サイトによってランキング上位に出てくる会社はあまり違いすぎます。数日経っても変わらなく、あるいは他の比較サイトではずっと下位にあったりしています。評価の基準はもちろん違いますが、せめて上位5位から1位、10~1位の間に前後するなら理解できます。
何を信じたらいいのか分かりません。経験者の皆様、口座開設の時に何を参考にして選びましたか、教えてください。

Aベストアンサー

私もランキングは信用していません。
やはりアフィ報酬目当てのものが多く、ランキング上位のものは
アフィリエイト報酬が高いものが多いからです。

口座選びの基準としては、最近は破綻する業者もあるので
会社の信用度から選ぶというのが最低限必要だと思います。
セントラル短資や外為どっとこむなら全額信託保全だし
歴史も古い会社なので、高額を入れておくのも安心ではないでしょうか。
ただ、こういうところは手数料が若干高い傾向にあるので、
運用資産が少ないのであれば、手数料が安い(スプレッドが狭い)ところを選んでもいいかもしれません。
(パンタレイ・MJ・外為オンラインなど)

他に画面(チャートなど)の見易さ・使い勝手などもありますが
最近はデモトレードができる業者も多いので
デモトレードしてから使いやすいところの口座を開設するというのも手かと思います。

QPerl 内で実行される Perl が STDOUT に吐いたものを変数で受け取りたい

 凄い不思議な質問タイトルになってしまいましたが……(笑)

 下記のようなソースを実行したとします。

-------------------------○ source.pl
open(IN, "<dest.pl");
foreach(<IN>){$s.=$_;}
close(IN);
eval($s);

 このとき、source.pl で実行される dest.pl には別の Perl プログラムが入っています。
 で、dest.pl の内部にはいくつかの print ""; があって、標準出力をおこなっているわけですが、この標準出力結果を画面には出さず、source.pl 側で受け取る事はできないもんでしょうか。

  @r = `dest.pl`;

 という方法もあるとは思うんですが、なんとか eval でやりたいのです。

 なんかパイプとか繋ぎなおせば何とかなりそうな気もするんですが……。
 何かご存知の方がいらっしゃいましたら、よろしくお願いします。

Aベストアンサー

子プロセスでevalし、その出力をpipeで読んではどうでしょうか。

if (open IN, "dest.pl") {
  local $/;
  $s = <IN>;
  close IN;
}

pipe RDP, WRP;

if (my $pid = fork) {  # 親
  close WRP;
  chomp(@r = <RDP>);
  close RDP;
  wait;
}
elsif (defined $pid) {  # 子
  close RDP;
  select WRP;  # 標準出力を WRP に変更
  $| = 1;      # バッファリングを止める
  eval($s);
  close WRP;
  exit;
}
else { die $! }  # fork失敗

foreach (@r) {
  print "$_\n";
}

Q軽1ボックスでアイドリング音のランキング

軽1ボックスでアイドリング音の大きさ(静かさ)ランキングってありますか?

バモスって静かだなーと思いましたが、他の車種と比較してどうかなと思いました。

よろしくお願いします。

Aベストアンサー

仕事でよくサンバーディアス、アトレーワゴンあたりにのりますが、サンバー静かです。

静かさ以外にも、個人の感じ方によるかと思いますが、エンジン音質が耳障りじゃなくてスムーズです。
フィーリングもスムーズです。
軽にありがちな「キャキャキャキャッ!」っていうエンジンのかかりでもないので、あのへんの車ではなかなか好きですね。
見た目は普通すぎますが。

QPerlでHTTPヘッダの\nを外すとエラー

【PerlでHTTPヘッダの最後の\nを1つでも外すとエラーになります】

初歩的なことですみません。
HTTPヘッダーの最後の\n\nなんですが、ヘッダーの文字列の後に改行が2つ?? と思って
この\nを外して、
print "content-type:text/html;charset=utf-8"; とすると、「500 Internal Server Error」
print "content-type:text/html;charset=utf-8\n"; と\nが1つでも 「500 Internal Server Error」
となります。

「\n\n」と2つあればエラーにはならないんですが、なぜ必ず2つ必要なのでしょうか?これは改行が2つって意味ですかね?

print "<html>\n"などの\nはソース上やコンソール出力結果上での改行なのはわかります。
この\nは改行したくなければ書かなくてもエラーになりませんよね。(当たり前ですが・・

#!/usr/bin/perl
print "content-type:text/html;charset=utf-8\n\n"; ←HTTPヘッダーの\n\n
print "<html>\n";
print "<body>\n";
print "<p>テキスト</p>\n";
print "</body>\n";
print "</html>\n";

【PerlでHTTPヘッダの最後の\nを1つでも外すとエラーになります】

初歩的なことですみません。
HTTPヘッダーの最後の\n\nなんですが、ヘッダーの文字列の後に改行が2つ?? と思って
この\nを外して、
print "content-type:text/html;charset=utf-8"; とすると、「500 Internal Server Error」
print "content-type:text/html;charset=utf-8\n"; と\nが1つでも 「500 Internal Server Error」
となります。

「\n\n」と2つあればエラーにはならないんですが、なぜ必ず2つ必要なのでしょうか?これは改行...続きを読む

Aベストアンサー

エラーになるのは、CGIとして間違っているからであって、Perlとしての間違いではありません。

http://oshiete.goo.ne.jp/qa/8060013.html

> ヘッダ(複数行の場合あり、空行不可)
> 空行
> 本体

print "content-type:text/html;charset=utf-8\n\n";

print "content-type:text/html;charset=utf-8\n"; # HTTPヘッダ:改行までが一つの項目
print "\n"; # ヘッダの終端
を1つにまとめたものです。


人気Q&Aランキング

おすすめ情報