Mac OS用PerlソフトのMacJPerlでスクリプトを作成し、「スクリプト」メニューから「実行」を選んでスクリプトを実行すると、かなりの確率でコンピュータがフリーズします。
MacJPerlのサイトへ行ってもこのようなトラブルに関する記述はいっさいありません。
一体何が原因なのでしょうか?
環境は以下の通りです。

ハード:PowerBook G4
OS:Mac OS 9.1
ソフト:MacJPerl 5.2.0r4 j1

宜しくお願いします。

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

A 回答 (7件)

>ほかの皆さんはどうなんでしょうか?私も興味があります。



私の場合MacJPerl上のエディターでそのまま編集しています。
また、サーバーに直接上げるものを作るときにはSimpleTextで作っています。
どうも昔からプログラムを作るときにエディターに拘らない質なので・・・。(^_^;

#Unix上ではいまだにvi使ってますし。
    • good
    • 0

再度の書き込み失礼します。



あの後、MacOS9.1が入っていたパーティションから起動させ、スクリプトを実行しましたが、全く問題ありませんでした。
大学に行ってたものでカキコが遅れてしまいました。

やはり原因はPerl本体かも・・・。

それと、
>普通、MacユーザーはPerlスクリプト作成にどのようなソフトを使うのでしょうか?
わたしは「ミミカキエディット(今は「mi」と名前を変えてます。)」を
使っています。
これはフリーだし、有名なので、検索で引っ掛かってきますよ。
予約語が色分けされてて使い勝手は良いです。
ほかの皆さんはどうなんでしょうか?私も興味があります。

この回答への補足

perl_camelさん、naturalさん
返答ありがとうございます。
早速、初期設定を捨て、ソフトを入れ替えて試してみましたが、やはりフリーズしてしまいます。
あと、機能拡張を「Mac OS 9.1基本」にして試したり、フリーズリムーバーを使ってみたりといろいろ試してみましたが、ダメでした。
とりあえずは、ちゃんとセーブして実行するようにします。
問題がわかりしだい報告いたしますのでまた宜しくお願いします。

補足日時:2001/09/19 20:10
    • good
    • 0

MacJPerl5.2の「お読みください」ページ(参考URL)ではとりあえず漢字Talk7以上としか書かれていませんでしたが、perl_camelさんのところで実行できている以上MacOS9.1でも問題は無さそうですね。


perl_camelさんの仰られている様に入れ直してみるのが良さそうです。
その際初期設定等捨てるのをお忘れなく。
作ったスクリプト類は間違って捨てないように。
うまくいくと良いですね。(^_^)

参考URL:http://world.std.com/~habilis/macjperl/MacJP5.2R …
    • good
    • 0

まず、私の環境、


G4Cube
OS:9.2.1
ソフト:MacPerl 5.1.5.r4J
エディタ:ミミカキエディット2.1 (miではありません。)

shunicサンのスクリプトの出力結果:
フルーツ全部:黄バナナ赤りんご緑キウイ紫ぶどう
フルーツ全部:%fruits
紫色のフルーツは ぶどう
黄色のフルーツは バナナ
緑色のフルーツは キウイ

以上です。
ミミカキから実行させても、MacPerlから実行させても、
フリーズは起こりませんでした。

今まで回答している方々より私のMacJPerlは古いバージョンなので、
これでフリーズが起こらなかったということは、バージョンの問題ではなく、
アプリケーション、MacJPerl自体が問題を起こしているのではないでしょうか? 丸ごと入れ直してみては?つくったスクリプトは取っておいて。

タイプ3エラーについてもTILで調べましたが、よく発生するエラーだそうです。
    • good
    • 0

>こういうものなのでしょうか?もしそうだとしたら、ごめんなさい。



そんなことはありませんよ。(^_^;
現に私はshunicさんのソースをコピーペースとして名称未設定のまま実行しましたし・・・。
でもやはりイマイチ不安定のご様子ですね。
一度MacJperl(初期設定含む)を削除して入れ直してみては如何でしょうか。(作成したスクリプトは消さないようにご注意を)

一点気にかかっているのはOS9.1にMacJPerlが完全対応しているのだろうかということです。
Os9.1で不具合が出たソフトは多いものですから・・・。
ちょっと時間がかかるかもしれませんが調べがついたらお知らせします。
    • good
    • 0

以下、私のマシンでの実行結果です。



フルーツ全部:黄バナナ赤りんご緑キウイ紫ぶどう
フルーツ全部:%fruits
紫色のフルーツは ぶどう
黄色のフルーツは バナナ
緑色のフルーツは キウイ
赤色のフルーツは りんご

尚、実行環境はiMacDV/SE 400、MacOS9.0.4、MacJPerl 5.2.0r4 J1です。
MacOS9.2.1も入っていますがOS Xのクラシック用にしています。
というわけで私の環境では同じMacJPerl 5.2.0r4 J1上で無事実行できました。
従ってスクリプトの問題ではなくソフト側の問題ですね。
とりあえず[システムフォルダ]→[初期設定]内の[MacJPerl 5 環境設定]を捨ててみましょう。
再度MacJPerlを起動して実行後結果をお知らせ下さい。

この回答への補足

何度も済みません。
MacJPerl 5 環境設定を捨ててもだめでした。
ただ、いろいろと実験してみたところ、フリーズする条件がわかりました。

スクリプトに変更を加えて、保存せずに実行すると100%の確率でフリーズします。
逆に、きちんと保存してから実行すると確実に実行できました。

こういうものなのでしょうか?もしそうだとしたら、ごめんなさい。

補足日時:2001/09/15 02:24
    • good
    • 0

出来ましたら実行されたスクリプトを記載して頂けますか?


自信はありませんが何か判るかもしれません。(^_^;

この回答への補足

早速の返答ありがとううございます。実行されたスクリプトということですが、私は3日前にPerlの勉強を始めたばかりの超初心者で、スクリプトは参考書のサンプルの通り(5行程度の簡単なもの)書いているだけなのでたぶん問題ないと思うのですが、一応記載しておきます。

%fruits = ("赤", "りんご",
"紫", "ぶどう",
"黄", "バナナ",
"緑", "キウイ");
print "フルーツ全部:", %fruits , "\n";
print "フルーツ全部:%fruits \n";
print "紫色のフルーツは $fruits{'紫'} \n";
print "黄色のフルーツは $fruits{'黄'} \n";
print "緑色のフルーツは $fruits{'緑'} \n";
print "赤色のフルーツは $fruits{'赤'} \n";

あと、フリーズ以外にも“タイプ3エラー”が発生してMacJPerlが強制終了されることもあるので、システムとの相性に問題があるのではないかと思います。
普通、MacユーザーはPerlスクリプト作成にどのようなソフトを使うのでしょうか?
よろしけれはnaturalさんの使用ソフトやハード環境等、教えて頂けないでしょうか?

補足日時:2001/09/14 12:37
    • good
    • 0

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

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

QPerlスクリプトが、ローカルでは実行できるが、HTTP経由では実行できない

現在Perlスクリプトを作成し
サーバにアップしました。

SSHでサーバにログインし

#perl a.cgi
と実行したところ(CGIとして動作させるため。中身はPerlスクリプト)

Content-type: text/html

<html>
<body>
あああああ
</body>
</html>

のようなメッセージが表示され正常に動作しているとおもいます。

しかし、
http://www.hoge.com/a.cgi をURLとしてブラウザ上で実行すると
500 Internal Server Error
になります。

パーミッションは755で正常
Perlのパスは#!/usr/bin/perlとしており、これも正常です。

文字コードはeuc-jp 改行コードLF

サーバはApache/1.3.33
Perlバージョンは5.8.4

自分のパソコン上でperl+HTTPサーバ(httpd)を使うと
HTMLふぁいるとして出力されます。
サーバ上でHTTPを使ってアクセスしたときのみエラーとなります。

このような現象が起こるのですが原因がわかりません。
お願いします。

現在Perlスクリプトを作成し
サーバにアップしました。

SSHでサーバにログインし

#perl a.cgi
と実行したところ(CGIとして動作させるため。中身はPerlスクリプト)

Content-type: text/html

<html>
<body>
あああああ
</body>
</html>

のようなメッセージが表示され正常に動作しているとおもいます。

しかし、
http://www.hoge.com/a.cgi をURLとしてブラウザ上で実行すると
500 Internal Server Error
になります。

パーミッションは755で正常
Perlのパス...続きを読む

Aベストアンサー

>500 Internal Server Error
これは、パーミッションの問題ではなく、実行エラーですよね。
一行目は以下だけですか? よけいなブランク文字やスイッチとか後ろに付いてると、サーバーによってはエラーにされてしまう事があります。
コマンドライン実行では、スイッチ有効なのでエラーにならないから、こういう現象になるのかも。
#!/usr/bin/perl

※ perl cgi覚えたての頃、一行目の後ろにコメントを付けていて、unix系サーバーにアップするとエラーになったのだけど、原因がわからず四苦八苦した覚えが。。。
windows local サーバーでは、一行目を無視してたので気付くのが遅れた。

あとは、実際のスクリプトの方を見ないことには?
なにか、そのサーバーでは使えないモジュールを使うような指定があったりとかしませんか?

Qブラウザ上からなら実行可能なスクリプトがコマンドラインだと実行しません

ブラウザ上からなら実行可能なスクリプトがコマンドラインだと実行しません
windowXP, perl5 で開発しています。

簡単なプログラム(test.pl)なのですが
-----
#!/usr/bin/perl
use IO:Socket
メール送信処理
1;
-----

ブラウザ上から実行すると正しくメール送信されますが、
これをコマンドプロンプトから
-----
perl test.pl
-----
とすると、

Can't locate IO/Socket.pm

と出てしまいます。
pathが通ってないとか絶対パスとかそのあたりかと思い、
socket.pmのあるパスを通したりしましたが、変化しません。

use IO::Socket

を絶対パスとかで指定するのでしょうか?
解決方法をお教え頂ければと思います。
よろしくお願い致します。

Aベストアンサー

とりあえず path は関係ないし, 実は「何が悪いのか」はメッセージの中に書いてあるんだけど.... メッセージはちゃんと読んで理解してください.
その perl はどのようにインストールしたのですか?
「ブラウザ上から実行する」とは, 具体的にはどのように「実行する」のですか? Webサーバが起動しているなら, それはなんですか?
「ブラウザ上から実行する」ときと「コマンドプロンプトから実行する」ときとで同じ perl が動いていることは確認できていますか?

QPerlスクリプトが実行できない??どうやったら実行できる?

前にPerlスクリプトを実行する際に、
まず、PCに何かインストールしてから
実行できるようになったのを覚えています。

パソコンを再インストールしたのですが、
何をインストールすれば実行できるように
なるか忘れてしまいました。

実行すると
ERROR:cmd~~:Cannot start command. (perl.exe ~~.pl 1152 864) と出ています。

どなたか教えてください。

windows2000を使用しています。

Aベストアンサー

Active Perlをインストールしてください。

参考URL:http://penguin.nakayosi.jp/windows/perl.html

QPerlスクリプトでメールを作成して送信

できるでしょうか?
ニフティプロバイダを使ってますがCGI制限があり
SMTPはできないそうです

Aベストアンサー

Perlスクリプトでも不可能ではないでしょうが、
メールの仕組みを理解していなければ無理でしょう。
(それ以外の問題もあります)

この場合、sendmailというのを利用するのが簡単なのですが、
niftyではsendmailが利用出来ません。
CGI制限の関係で無理かも知れないですね。

Qperlスクリプト $1 qq などについて。

以下のスクリプトについて質問があります。


$_ = $mail;
m/(^[a-zA-Z0-9\.\_\-]+\@[a-zA-Z0-9\.\_\-]+)/g;
$mail = $1;
if($in{mail} ne $mail){ &PrintError('メールアドレスは、半角文字で書いてください。'); }


このスクリプトなのですが、$mailの値を$_に代入し、$_の値をm/・・・ の部分で半角チェックしているのは分かるのですが、半角チェックされた後どうなっているのかがわかりません。また、$1 とはどうゆう意味なのでしょうか??ifより後の部分は分かっています。

また、

open(IN, "<database.dat");
while (<IN>) {
print;
}
close(IN);

の全体的な説明をお願いしたいです。ファイルハンドルという概念とopen,close両関数は分かっています。


最後に

print qq(Content-type: text/html; charset=Shift_JIS\n\n);

とあった場合の qq の意味が分かりません。

分かる方いらっしゃいましたらご教授くださると幸いです。よろしくお願いします。

以下のスクリプトについて質問があります。


$_ = $mail;
m/(^[a-zA-Z0-9\.\_\-]+\@[a-zA-Z0-9\.\_\-]+)/g;
$mail = $1;
if($in{mail} ne $mail){ &PrintError('メールアドレスは、半角文字で書いてください。'); }


このスクリプトなのですが、$mailの値を$_に代入し、$_の値をm/・・・ の部分で半角チェックしているのは分かるのですが、半角チェックされた後どうなっているのかがわかりません。また、$1 とはどうゆう意味なのでしょうか??ifより後の部分は分かっています。

また、

open(IN,...続きを読む

Aベストアンサー

>$1 とはどうゆう意味なのでしょうか?
その前のマッチングで( )でマッチした部分

>全体的な説明
"database.dat"
を一行毎読み出し、標準出力に表示します。
print;
は、
print $_;
と同じで、この場合の$_ は、<IN> で読み込まれた一行

>qq
qq( 中身 ) は、関数呼出(形?)による
"中身" とほぼ同じ


おすすめ情報