1 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:01:21 BE:176880454-DIA(100004)] "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、 Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 ( WEBプログラミング板 pc11.2ch.net/php/ ) CGIの質問は答えが Perlと全然関係ない話に帰着する場合が 多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2008/04/20 現在の最新版: 5.10.0 ● 2008/04/20 現在の開発版: 5.9.5 ▼ 前スレ Perlについての質問箱 34箱目 pc11.2ch.net/test/read.cgi/tech/1199977642/
29 名前:デフォルトの名無しさん [2008/04/25(金) 12:50:08 ] いや、だから cat.pl ---- ここから--- #!/usr/bin/perl -n print; ---- ここまで--- コマンド行: cat.pl a.txt b.txt c.txt > d.txt 要するに while(<>) と while(<STDIN>) は違いますよって事だな
30 名前:24 mailto:sage [2008/04/25(金) 13:16:10 ] >>29 たびたびありがとうございます。 本当に言葉が足りなくて、ごめんなさい。 コマンドラインで a.txt b.txt c.txt を指定するのでなく、 スクリプト内で File:Find を駆使して、a.txt 他を探すつもりでした。
31 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 21:43:46 ] @ARGV = <*.txt>; print while <ARGV>;
32 名前:デフォルトの名無しさん [2008/04/26(土) 04:06:08 ] 萌え萌えじゃんけんに絶対勝つモジュールはありますか?
33 名前:デフォルトの名無しさん [2008/04/26(土) 23:14:27 ] お世話になります。お力添えください。 テキストファイル内の特定の文字列を検索して、 1.検索結果の『前』『後』の行に、任意の文字列を『追加』する、 2.検索結果の行を、任意に編集する ということを行いたいのですが、 openしたファイルを直接書き換えることはできるのでしょうか? 一度、別のファイルを作成して、 元を削除して、 作成したファイルをリネームするのではなく、 直接編集できないのかなと思いました。 あと、上記の『1』について、 ファイル内の先頭から検索して、 はじめにマッチする場所へポインタを移動する関数って標準にはないでしょうか? 今は先頭からゴリ押しで探しているので、格好悪いです…。
34 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 01:04:42 ] >>33 書き換えは普通にできる。 だが危険だぞ。
35 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 12:55:49 ] perl ド素人です。 perl の FillInForm というモジュールを使いたいのだけど 利用しているレンタル鯖(さくら)には入ってないようです。 同じ処理が出来るモジュールなどを教えてもらえないでしょうか。 やりたい事は、 「入力画面からの入力値をチェックし、 不足があれば、入力値を保ったまま入力画面を再表示する」 というものです。この「入力値を保ったまま」というのに FillInForm を使いたいと考えています。 select や radio の値復帰を FillInForm で出来るという記事を見かけたので 使おうと思いましたが、 別にこれにこだわっているわけではないので、出来ればなんでもいいです。 管理者権限がなく、インストールなどは出来ないので .pm の 1 ファイルだけ置いて、require して使えるようなモジュールだとより助かります。 (FillInForm も試してみたのですが上手くいかず……)
36 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 12:58:23 ] 依存してるモジュール全部突っ込んで、 use lib '.'; とかでいいだろう。
37 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 13:01:29 ] CGI::Ex::Fill
38 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 13:11:49 ] 即レスありがとうございます。 >>36 そういう書き方が出来るんですね、なるほど。 今回は残念ながら、FillInFomr のソースを見たところ、 require 5.005; なんて記述があり、自分では依存先ファイルの全貌がつかめませんでした…。 >>37 試してみます。
39 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:03:15 ] >>38 そのrequireは単なるバージョン制限だ。5.005未満の環境だと、そこで強制終了。
40 名前:デフォルトの名無しさん [2008/04/27(日) 16:34:19 ] すいません今日はじめるんですが、perl5.8.8.822インストールして 環境変数設定するんですが、パスこれであってますでしょうか? c:\ActivePerl-5.8.8.822-MSWIN32-x64-280952\perl\bin\perl.exe
41 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:56:43 ] エクスプローラのアドレスバーに C:\ActivePerl-5.8.8.822-MSWIN32-x64-280952\perl\bin と打ってみてその中に perl.exe さんがいるのなら、↑こう。 環境変数 PATH の設定なんだから最後の \perl.exe 要らない。 でも、Windows環境だと C:\Perl\bin 辺りに perl.exe さんがいる 状態にする人のほうが多いので、どこに perl.exe さんがいるのか きちんと確認してください。
42 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 17:11:18 ] ほんとにインストールしたのか?!
43 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:01:48 ] >>35 です。 すみません、CGI::Ex::Fill を入れようとしたのですが うまくソースを読み込めていないようで、 関数を呼び出すと Undefined subroutine &main::form_fill となります。 やったことは、サイトから落としたソースを Fill.pm として ./lib にアップ、 use lib qw(./lib); でその読み込み、 form_fill($html, $query); の呼び出し、の 3 点です。 form_fill の1行をコメントアウトすると、もちろん値は復帰しませんが正常に動きます。 (なので、use lib qw(./lib); も少なくともエラーにはなっていないようです) 問題点の心当たりのある方がいたら教えてください。
44 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:17:37 ] 今、パールの勉強始めてます 変数がクソだと思いました Cをやりたいです 配属先でぱーるなんてやらせるのがイヤです こんなクソ言語 先の無い言語 rubyやPythonやPHPやSQLみたいなオサレなのをやらせてください COBOLとかFortlanみたいなもんと同じじゃないんですか?ぱーるって
45 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:23:45 ] >>43 補足 公式サイトの説明での読み込み方が、 use CGI::Ex::Fill qw(form_fill fill); となっているので、ひょっとしたら use の読み込みの際、 読み込む関数を指定する必要があるのか考えています。 ただ、use lib qw(./lib) で、読み込み方を指定する方法がわからず試せていません。 全く的外れかもしれませんが、自分で思いつく問題点はそれぐらいです。
46 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:42:33 ] >>43 インストールしてない 読み込んでない
47 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:57:54 ] >>43 CGI::Ex::Fill::form_fill($html, $query); じゃダメなのか?
48 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:05:40 ] >>46 上にも書いている通り、ファイルを置いて use しているだけなので インストールしてないというのは、その通りだと思います。 >>43 に書いた通りには読み込み処理を書いているので まさにそれで読み込めない理由が知りたいです。 >>47 ダメでした。同様に Undefined subroutine &CGI::Ex::Fill::form_fill となりました。
49 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:13:44 ] use libはインクルードパスを変えるだけだぞ…
50 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:21:09 ] 置いたファイルを use していない、のだ。
51 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:42:16 ] >>49-50 なるほど! わかりました。 use lib でパスを通した後で、 改めて use CGI::Ex::Fill qw(form_fill fill); を行う必要があったんですね。 Fill.pm の置き場所を ./lib/CGI/Ex/Fill.pm に変更し、use したところ まだ値は復帰しませんが、とにかく form_fill は通るようになりました。 ありがとうございました。
52 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 23:52:55 ] インストールすりゃいいだろ!!
53 名前:デフォルトの名無しさん [2008/04/28(月) 03:02:57 ] ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / コイツ最高のアホ! 彡、 |∪| ,/ /__ ヽノ /´ (___) /
54 名前:デフォルトの名無しさん [2008/05/01(木) 00:19:43 ] ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / コイツ最高のアホ! 彡、 |∪| ,/ /__ ヽノ /´ (___) /
55 名前:デフォルトの名無しさん [2008/05/01(木) 02:11:38 ] Template Toolkit の質問でも良いですか? Template Toolkit でファイルの存在判定ってできるんでしょうか? 例えばあるテンプレート内で [% INCLUDE hoge.tt %] を使って異なるディレクトリにあるファイルを include させたいのですが、 実際に hoge.tt が存在しない時は、"file not found"にて処理が失敗しています。 今作ってる仕組み上、hoge.tt は時と場合に応じて有ったり無かったりするので、 ファイルが無いときは、include させない制御をテンプレートのみで実装したいのです。 お願いします。
56 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 07:35:17 ] >>55 ここの「例外処理、フロー制御」の項読めば? ttp://www.hakoniwa.net/tt/
57 名前:デフォルトの名無しさん [2008/05/01(木) 13:12:30 ] >56 ありがとうございます。 まさにそのままでしたね。 どんだけ視野狭いんだ俺。
58 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:25:33 ] perlからvb.net で作成したクラスライブラリにアクセスはできないのでしょうか? 例えばperlから、 homepage1.nifty.com/rucio/main/dotnet/shokyu/standard51.htm のサンプルで作成したMyLibrary.dllの関数の"Add","Total"等を 使用する場合、次のような書き方では、Died となってしまいます。 どなたかご教授お願いします。 use Win32::API; $Add = new Win32::API( "MyLibrary.dll", "Add", [N], "N") || die; $Total = new Win32::API( "MyLibrary.dll", "Total", [], "N") || die; <結果> Died at D:\work\DLL_Access.pl line 27, <DATA> line 164.
59 名前:デフォルトの名無しさん [2008/05/02(金) 14:16:23 ] Perl で LWPを使用したとき(activePerl) HTTP/1.1 を使用しちゃうんですが HTTP/1.0 で通信したい場合どう指定すればいいか分かりますか?
60 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 19:07:41 ] >>59 環境変数PERL_LWP_USE_HTTP_10をセットする。
61 名前:デフォルトの名無しさん [2008/05/05(月) 12:28:42 ] CGI掲示板を自作していますが、書き込み送信メールのSendmailによる送信処理でつまづきました。 以下のように記述すると、管理人である自分には登録メールが送られますが、 管理人以外に、書き込みした人にも登録確認メールが送られるようにしたいんです。 #Sendmailによる送信処理 if (open(MAIL,"| $sendmail -t")){ print MAIL "X-Mailer:legend2\n"; print MAIL "To: $administrator\n"; print MAIL "Errors-To: $administrator\n"; print MAIL "From: $administrator\n"; print MAIL "Subject: $subject\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "$mail_comment\n"; print MAIL "\n"; close(MAIL); } } 以下のどれかを使うのでしょうか? print SENDMAIL "From: $sender <$from>\n"; print SENDMAIL "To: $to\n"; print SENDMAIL "Cc: $cc\n"; print SENDMAIL "Bcc: $bcc\n"; どうすれば良いか御教授下さい。宜しくお願いします。
62 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:30:13 ] >>61 >>1
63 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 12:23:32 ] >>62 知らないなら出しゃばるなよ
64 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:31:21 ] >>63 >>1
65 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:36:14 BE:212257038-DIA(100004)] sendmail のスレ行けよ 純粋な Perl の質問なら 標準モジュールの Net::SMTP 使って質問しろ
66 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:49:56 ] 既にwebprogに移動したようですよ。
67 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:41:58 ] こういう赤ん坊のムニャムニャみたいな質問に良く答えられるなあ。 webprogはエスパーが多いのか。
68 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 15:51:47 ] あっちは隔離施設なので訓練をつんだ回答官が配備されてます
69 名前:デフォルトの名無しさん [2008/05/06(火) 16:00:05 ] こっちのスレは素人なので、答えられない質問が来ると他所へ追いやります。
70 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 16:01:24 ] >>69 > こっちのスレは素人なので、答えられない質問が来ると他所へ追いやります。 その通りなので、最初からあちらへ行ってください。
71 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 16:29:08 ] 訓練を積んだ回答官が配備されてるんじゃなくて 「&jcode'convert(*value, 'sjis', 'euc') の *value って何ですか?」 「&ReadParse(*in) の *in って何ですか?」 「open() or &error("読み込みエラー") で読み込みエラーが表示されて困っています」 「エラーメッセージは 500 Internal Server Error です」 任務が厳しくて鍛えられてしまうんです。
72 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:18:54 ] 激務だな。 それはそうと、未だにjcode.plつかってるのが出回ってるのかね。
73 名前:デフォルトの名無しさん [2008/05/06(火) 18:28:12 ] use Jcode や use utf8 がクソだから jcode.pl から乗り換える気にもなれない。 わざわざ労力をかけてコードを書き直す価値が無いんだよ。 過去の古い資産をそのまま使うのでじゅうぶん。
74 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:26:17 ] 最近グロブ使って書かれてるスクリプトに触ってないから グロブはあまり使わなくなっちまったなあ。
75 名前:デフォルトの名無しさん [2008/05/06(火) 22:59:14 ] しょこたんブログも飽きたな
76 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 11:44:34 ] Perl/tkで書いたものをWin32exe形式にするにはどうしたらいいんでしょうか?
77 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 20:09:07 ] perl2exe
78 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 06:57:50 ] UNIX環境でコマンドラインからスクリプト動かしたとき、 動かしたユーザーのidを取得するにはどうしたらいい? スクリプトの使用制限をはかりたい。
79 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 08:26:58 ] >>78 $< manくらい嫁。
80 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 13:05:01 ] >>78 コピーされて無効化されるぞ。
81 名前:デフォルトの名無しさん [2008/05/08(木) 20:53:48 ] 教えてください。 テキストファイルの中から、 hoge を含む行を検索して、 その行をprintしたいのですけど、 一行一行読み込んで、パターンマッチして、真であれば、printする、 という方法以外に、何か方法ありますか? (perlはテキスト処理が得意と訊いたのですが、『一行一行読み込んで』のステップがプログラムで必要か気になりました。) ところで、cygwinでperlをはじめたのですが、何か気をつけることはありますか?
82 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:54:34 ] hogeを見つけたら前後の改行を探し出すとか。 全く意味ないけど。
83 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:51:51 ] >>81 perl -ne '/パターン/ && print' <file
84 名前:81 mailto:sage [2008/05/08(木) 22:37:56 ] レスありがとうございます。 さっぱりわからないので、教わったことをキーワードに調べてみます。 また、御願いします。
85 名前:デフォルトの名無しさん [2008/05/09(金) 16:18:45 ] >>81 そういう事のためにあるのが、grep
86 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:25:10 ] まあ正規表現なんだけどな !
87 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:32:04 ] grepやsedを素っ飛ばしてperlから始めたのかな。一行野郎 なんて知らないんじゃないのかな。
88 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:33:02 ] 目的:perlTk で GUI のテキスト検索ツールを作成しています。 状況:ユーザから入力された検索文字列の正規表現が不正であると、プログラムが 終了してします。 (invalid regular expression at * ) $search_string に格納された文字列が正規表現として有効であるかを、 eval を使って事前に評価したいのですが、どうしたら良いのでしょう? if (eval (m/$search_string/)) ? これだと常に true が帰ってしまいます。 エロい人、教えてください。
89 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:49:04 ] 困ったときのクックブック 6.11 パターンが有効かどうか検証する
90 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 15:12:19 ] qx
91 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 15:52:18 ] >>88 エロイ人への質問はvenus.bbspink.com/hneta/ でしなさい。
92 名前:88 mailto:sage [2008/05/10(土) 16:16:44 ] >>89 ありがとう。正規表現の箇所は全部呼んだつもりだったのに。。。 解法(p.254): eval { ""=~ /$search_string/ }; warn "パターンが無効 $@" if $@; >>91 性器表現に困ったときはそうします。ありがとうございました。
93 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:00:21 ] Win32::OLEを使って wordドキュメントの編集をしようとしています。 読み出しはできるのですが、テキスト編集を受け付けてくれません。 下記のようなソースで、「ABC」→「abc」としたいのですが、元の「abc」のまま出力されてしまいます。 どのようにしたらよいでしょうか? WindowsXP SP2上で、ActivePerl 5.10と、5.8.8で試してみました。 ------------------- use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Word'; $word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application', 'Quit') || die; $doc = $word->Documents->Open( 'test.doc' ) || die; $paras = $doc->Paragraphs; foreach (in $paras){ $_->Range->{'Text'} =~ tr/A-Z/a-z/; print $_->Range->{'Text'}."\n"; } $doc->Close( 0 ); -------------------
94 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:36:57 ] URL転送なんだけど今こうしてます↓ #!/usr/bin/perl print "Location: *****\n\n "; これに転送するまでHTMLの<meta content="x">みたいに 一定時間ウェイトかける事って出来るのでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:55:03 ] いいえ
96 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:04:42 ] >>94 >>1
97 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 02:50:29 ] >>94 できなくはないがやるな。 それと>>1
98 名前:デフォルトの名無しさん [2008/05/11(日) 12:59:18 ] 教えて先生! 01 や 11 などの文字列を数値に変換するにはどうすればいいの?
99 名前:98 mailto:sage [2008/05/11(日) 13:26:41 ] 自己解決っす 他のスクリプト同様 -0 でよかったのかw
100 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 14:17:20 ] intでいいよ
101 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:23:54 ] モジュールでモジュールのファイル位置を知るにはどうしたらいいでしょうか? |-foo.pm |-data/data1 こんな感じのフォルダ構造になってて、foo.pmの中からdata1を相対参照したいのです。
102 名前:デフォルトの名無しさん [2008/05/12(月) 21:31:33 ] あとcgiとして使う場合。cgiが呼ばれる度毎回dataファイルを読み込むのは処理が重くなると思うんですよ。 最初の一回だけ読み込む方法とかありませんか?
103 名前:デフォルトの名無しさん [2008/05/12(月) 22:57:05 ] mod_perl
104 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:35:05 ] fastcgi
105 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:00:09 ] >>103 >>104 有難うございました。fastcgiを調べてみます。
106 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:14:04 ] >>105 Speedy-CGI
107 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:18:38 ] perlはインタプリタだから、見下すべき言語なんだろ?
108 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:36:37 ] perlはコンパイラつんでます。
109 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:37:57 ] 所詮JIT
110 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:52:10 ] 質問です。 package number; sub get_codeNumber(){ my $number = 1; if ($number > 0){ print "0より大です。"; }else{ print "0以下です。"; } } このplをローカルで実行しても何もコンソールに表示されません。 これをコンソールに表示するには、どうしたらよいのでしょうか。教えて下さい。
111 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:56:45 ] >>110 そんな断片だけ書かれていては釣りだとしか思えない
112 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:03:43 ] >>111 サブルーチンの中身をデバッグしたいのです。
113 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:13:19 ] >>112 問題がサブルーチン内にあるとわかっているのですか?
114 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:20:44 ] >>113 いいえ。perlの仕事がはじめてなのですが、 渡されたサブルーチンが仕様通りに動いているかを自分で確認したくて書き込みました。 Javaでいうと、 public class hoge1{ System.out.println("0より大です。"); } public class hoge2{ System.out.println("0以下です。"); } のような確認をしたかったのですが、おかしいでしょうか。
115 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:24:25 ] 呼べ
116 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:30:44 ] >>114 ごめん,俺に理解力がないせいか何をしたいのかがよくわからない. もうちょっと詳しく説明してくれたら助かるんだが.
117 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:42:28 ] もうちょっと実際のplに近いものを書いてみます。 お待ち下さい。
118 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:42:50 ] package number; #sub get_codeNumber(){ my $number = 1; if ($number > 0){ print "0より大です。"; }else{ print "0以下です。"; } #}
119 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:55:04 ] >>118 単純に改行が入ってないからとか stdout が flush されてないからとか じゃないよね?
120 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:58:48 ] ちゃんと実行されてるかどうかがあやしいような
121 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:05:45 ] #torikomi.pl package torikomi; #戻り値:String(分類コード) sub get_code(){ ($organizationcode,$sectioncode,$itemcode) = @_; $itemcode = "999999"; my $i1cd =""; my $i2cd =""; my $i4cd =""; $i1cd=substr($itemcode,0,1); $i2cd=substr($itemcode,0,2); $i4cd=substr($itemcode,0,4); if($itemcode eq "000000"){ return "A00"; } if( $itemcode eq "999999" ){ return "Z00"; } } このperlが、きちんとA00やZ00を返しているかを確認したいのです。
122 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:11:54 ] 「サブルーチンの中」を詳細に書けっていうんじゃなくて、 それを呼び出す側とか、実行している環境とかの詳細を書けって話だと思うよ。
123 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:37:02 ] あー、呼び出す側や実行環境のソースはもらっていません。
124 名前:デフォルトの名無しさん [2008/05/13(火) 17:03:19 ] 質問です。 1つのデータを複数に分割して、それぞれをgnuplotで 表示しようとしているのですが、実行すると gnuplot> 'plot './X1.txt' using 1:2 w l 1' ^ line 0: invalid command という風なエラーが分割したデータ全てに対して出ます。 (X1.txtというのが分割したデータの1つです。) 分割まではうまくいっているので、gnuplotの部分で問題があると思うのですが、 わかる方がいましたらよろしくお願いします。 gnuplotの部分のプログラムは以下のような感じです。 for( $j = 0 ; $j < 10 ; $j++ ){ open ( GP "| gnuplot -persist" ) or die "no gnuplot"; print GP "set term postscript color 20\n" ; print GP "set output './X1.eps\n'" ; print GP "plot './X1.txt' using 1:2 w l 1\n" ; close GP; }
125 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:08:42 ] >>124 スレ違いだが、、、 w l 1 の「1」って何だ? そんなのあったっけ?
126 名前:124 [2008/05/13(火) 17:14:59 ] >>125 スレ違いで申し訳ありません。 perlでプログラム書いてたんで、perlのスレで質問した方がいいかなと・・・ 「1」はlineの色ですのであまり気にされなくても大丈夫です。
127 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:20:15 ] >>125 色だか線種だかを1に指定ってことだったはず. >>124 gnuplotに流してるコマンドの最初と最後にいらないシングルクオートが入ってるせいじゃないかな? このコピーでは問題なさそうだけど,ソースのprint文を確認してみたらいいと思う.
128 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 19:57:39 ] ' なんてコマンドはねえよ、って言ってるだけじゃねえの?
129 名前:124 [2008/05/13(火) 23:28:23 ] 124です。 124で書いたプログラムの間違いに気づきました。 プログラム中の「X1」は「X${j}」でした。 じゃないと、for文の意味ないですもんね。。。 あと、今自分で間違いに気づきました。 print GP "set output './X1.eps\n'" じゃなくて、 print GP "set output './X1.eps'\n" でしたorz こんな簡単なミスに気づかないとは。。。 大変ご迷惑おかけしました。