1 :
デフォルトの名無しさん :
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プログラミング板
http://pc11.2ch.net/php/ )
CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html ● 2008/04/20 現在の最新版: 5.10.0
● 2008/04/20 現在の開発版: 5.9.5
▼ 前スレ
Perlについての質問箱 34箱目
http://pc11.2ch.net/test/read.cgi/tech/1199977642/
2 :
デフォルトの名無しさん :2008/04/20(日) 16:06:37 BE:238787993-DIA(100004)
3 :
デフォルトの名無しさん :2008/04/20(日) 16:09:13 BE:123817027-DIA(100004)
4 :
デフォルトの名無しさん :2008/04/20(日) 16:12:33 BE:636768689-DIA(100004)
5 :
デフォルトの名無しさん :2008/04/20(日) 16:13:54 BE:265320656-DIA(100004)
6 :
デフォルトの名無しさん :2008/04/20(日) 16:17:33 BE:636768689-DIA(100004)
少しミスりました、すみません。 テンプレは以上だと思います。
柚縁故とかの説明は無しにしたのね
だいぶまえからないよ
10 :
デフォルトの名無しさん :2008/04/20(日) 23:21:25
エロ画像収集言語 perl
sedとawkさえあれば何も困らないことに気が付いた
12 :
デフォルトの名無しさん :2008/04/21(月) 01:04:51
perlでクライアントの2chブラウザ作ったけど見たい人いますか? 4時間ほどで作りました
(´-`).。oO(前スレが埋まる前に次ぎスレを立てて案内を入れて欲しいよなぁ。。。)
お前がやれ
perlの-MO=オプションってなんなんですか? perlrunやperlcompile見ても -MO そのものの説明は全然のってないんですが
"O" と言うモジュールがあるんだよ
perldoc O だけで説明が出ますよ。探し回ってしまうのはなんとなくわかる。
ところが、perl -MO=Deparse とかの場合 perldoc B::Deparse なんだなこれが。
19 :
17 :2008/04/21(月) 18:45:42
そこは perldoc O すれば 「-MO=Hoge すると B::Hoge が、だな」とか書かれてたはずだからいいか、と 思い込んでみました。
20 :
l15 :2008/04/21(月) 18:48:58
ありがとうございました perlccで使えるモジュールみたいなもの(B::x)をperlコマンドから参照するアダプタモジュールが Oっていう名前でそれを-Mオプションでuseしていると理解しました =...はOモジュールのオプションですね 道理で-MOで幾ら探してもでてこないわけだ…orz
21 :
18 :2008/04/21(月) 18:51:16
確かにCONVENTIONSとかに書かれてるね。 きちんと読みゃ問題ないんだが、オレはハマったw
#!/usr/bin/perl
use utf8;
sub スイーツ {
my $argument = shift; utf8::encode($argument);
my($package, $routine) = (caller 0)[0, 3];
{
no utf8;
$routine =~ s/\Q$package\E:://;
printf("%s(%s)", $routine, $argument);
}
}
スイーツ(笑)
__END__
http://codepad.org/1jJzeCja スイーツ関数出来たよー
24 :
デフォルトの名無しさん :2008/04/25(金) 10:46:58
cat a.txt b.txt c.txt > d.txt と同等のことをする Perl モジュールはあるでしょうか? なるべく、 while (<FH>){print;} の繰り返しを避けたいのですが。 それとも (open FH, "cat a.txt b.txt c.txt |"); のようにするのでしょうか。
25 :
デフォルトの名無しさん :2008/04/25(金) 12:35:24
>>24 perl -ne print a.txt b.txt c.txt > d.txt
>>25 どうもありがとうございます。
言葉が足りなくて申し訳ありません。
実はコマンドラインでなく、スクリプトの中で実行したいのです。
28 :
24 :2008/04/25(金) 12:47:18
>>26 どうもありがとうございます。
ご紹介の Slurp.pm を使用してみます。
while (<FH>){print;} の繰り返しを避けたいのは、何度も同じ作業をする予定なので、
while (<FH>){print;} をファイルの数だけループさせる以外にもっといい方法があればと思いまして。
シェルスクリプトでやっていたことを Perl スクリプトで実行したいところなので
発想がシェルからなのです。
他には、 comm や sort に対応するモジュールを使ってみようかと。
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 :2008/04/25(金) 13:16:10
>>29 たびたびありがとうございます。
本当に言葉が足りなくて、ごめんなさい。
コマンドラインで a.txt b.txt c.txt を指定するのでなく、
スクリプト内で File:Find を駆使して、a.txt 他を探すつもりでした。
@ARGV = <*.txt>; print while <ARGV>;
32 :
デフォルトの名無しさん :2008/04/26(土) 04:06:08
萌え萌えじゃんけんに絶対勝つモジュールはありますか?
33 :
デフォルトの名無しさん :2008/04/26(土) 23:14:27
お世話になります。お力添えください。 テキストファイル内の特定の文字列を検索して、 1.検索結果の『前』『後』の行に、任意の文字列を『追加』する、 2.検索結果の行を、任意に編集する ということを行いたいのですが、 openしたファイルを直接書き換えることはできるのでしょうか? 一度、別のファイルを作成して、 元を削除して、 作成したファイルをリネームするのではなく、 直接編集できないのかなと思いました。 あと、上記の『1』について、 ファイル内の先頭から検索して、 はじめにマッチする場所へポインタを移動する関数って標準にはないでしょうか? 今は先頭からゴリ押しで探しているので、格好悪いです…。
>>33 書き換えは普通にできる。
だが危険だぞ。
perl ド素人です。 perl の FillInForm というモジュールを使いたいのだけど 利用しているレンタル鯖(さくら)には入ってないようです。 同じ処理が出来るモジュールなどを教えてもらえないでしょうか。 やりたい事は、 「入力画面からの入力値をチェックし、 不足があれば、入力値を保ったまま入力画面を再表示する」 というものです。この「入力値を保ったまま」というのに FillInForm を使いたいと考えています。 select や radio の値復帰を FillInForm で出来るという記事を見かけたので 使おうと思いましたが、 別にこれにこだわっているわけではないので、出来ればなんでもいいです。 管理者権限がなく、インストールなどは出来ないので .pm の 1 ファイルだけ置いて、require して使えるようなモジュールだとより助かります。 (FillInForm も試してみたのですが上手くいかず……)
依存してるモジュール全部突っ込んで、 use lib '.'; とかでいいだろう。
CGI::Ex::Fill
即レスありがとうございます。
>>36 そういう書き方が出来るんですね、なるほど。
今回は残念ながら、FillInFomr のソースを見たところ、
require 5.005;
なんて記述があり、自分では依存先ファイルの全貌がつかめませんでした…。
>>37 試してみます。
>>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
エクスプローラのアドレスバーに C:\ActivePerl-5.8.8.822-MSWIN32-x64-280952\perl\bin と打ってみてその中に perl.exe さんがいるのなら、↑こう。 環境変数 PATH の設定なんだから最後の \perl.exe 要らない。 でも、Windows環境だと C:\Perl\bin 辺りに perl.exe さんがいる 状態にする人のほうが多いので、どこに perl.exe さんがいるのか きちんと確認してください。
ほんとにインストールしたのか?!
>>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); も少なくともエラーにはなっていないようです)
問題点の心当たりのある方がいたら教えてください。
今、パールの勉強始めてます 変数がクソだと思いました Cをやりたいです 配属先でぱーるなんてやらせるのがイヤです こんなクソ言語 先の無い言語 rubyやPythonやPHPやSQLみたいなオサレなのをやらせてください COBOLとかFortlanみたいなもんと同じじゃないんですか?ぱーるって
>>43 補足
公式サイトの説明での読み込み方が、
use CGI::Ex::Fill qw(form_fill fill);
となっているので、ひょっとしたら use の読み込みの際、
読み込む関数を指定する必要があるのか考えています。
ただ、use lib qw(./lib) で、読み込み方を指定する方法がわからず試せていません。
全く的外れかもしれませんが、自分で思いつく問題点はそれぐらいです。
>>43 CGI::Ex::Fill::form_fill($html, $query);
じゃダメなのか?
>>46 上にも書いている通り、ファイルを置いて use しているだけなので
インストールしてないというのは、その通りだと思います。
>>43 に書いた通りには読み込み処理を書いているので
まさにそれで読み込めない理由が知りたいです。
>>47 ダメでした。同様に
Undefined subroutine &CGI::Ex::Fill::form_fill
となりました。
use libはインクルードパスを変えるだけだぞ…
置いたファイルを use していない、のだ。
>>49-50 なるほど! わかりました。
use lib でパスを通した後で、
改めて use CGI::Ex::Fill qw(form_fill fill); を行う必要があったんですね。
Fill.pm の置き場所を ./lib/CGI/Ex/Fill.pm に変更し、use したところ
まだ値は復帰しませんが、とにかく form_fill は通るようになりました。
ありがとうございました。
インストールすりゃいいだろ!!
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 させない制御をテンプレートのみで実装したいのです。 お願いします。
57 :
デフォルトの名無しさん :2008/05/01(木) 13:12:30
>56 ありがとうございます。 まさにそのままでしたね。 どんだけ視野狭いんだ俺。
perlからvb.net で作成したクラスライブラリにアクセスはできないのでしょうか?
例えばperlから、
http://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 で通信したい場合どう指定すればいいか分かりますか?
>>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"; どうすれば良いか御教授下さい。宜しくお願いします。
sendmail のスレ行けよ 純粋な Perl の質問なら 標準モジュールの Net::SMTP 使って質問しろ
既にwebprogに移動したようですよ。
こういう赤ん坊のムニャムニャみたいな質問に良く答えられるなあ。 webprogはエスパーが多いのか。
あっちは隔離施設なので訓練をつんだ回答官が配備されてます
69 :
デフォルトの名無しさん :2008/05/06(火) 16:00:05
こっちのスレは素人なので、答えられない質問が来ると他所へ追いやります。
>>69 > こっちのスレは素人なので、答えられない質問が来ると他所へ追いやります。
その通りなので、最初からあちらへ行ってください。
訓練を積んだ回答官が配備されてるんじゃなくて 「&jcode'convert(*value, 'sjis', 'euc') の *value って何ですか?」 「&ReadParse(*in) の *in って何ですか?」 「open() or &error("読み込みエラー") で読み込みエラーが表示されて困っています」 「エラーメッセージは 500 Internal Server Error です」 任務が厳しくて鍛えられてしまうんです。
激務だな。 それはそうと、未だにjcode.plつかってるのが出回ってるのかね。
73 :
デフォルトの名無しさん :2008/05/06(火) 18:28:12
use Jcode や use utf8 がクソだから jcode.pl から乗り換える気にもなれない。 わざわざ労力をかけてコードを書き直す価値が無いんだよ。 過去の古い資産をそのまま使うのでじゅうぶん。
最近グロブ使って書かれてるスクリプトに触ってないから グロブはあまり使わなくなっちまったなあ。
75 :
デフォルトの名無しさん :2008/05/06(火) 22:59:14
しょこたんブログも飽きたな
Perl/tkで書いたものをWin32exe形式にするにはどうしたらいいんでしょうか?
perl2exe
UNIX環境でコマンドラインからスクリプト動かしたとき、 動かしたユーザーのidを取得するにはどうしたらいい? スクリプトの使用制限をはかりたい。
81 :
デフォルトの名無しさん :2008/05/08(木) 20:53:48
教えてください。 テキストファイルの中から、 hoge を含む行を検索して、 その行をprintしたいのですけど、 一行一行読み込んで、パターンマッチして、真であれば、printする、 という方法以外に、何か方法ありますか? (perlはテキスト処理が得意と訊いたのですが、『一行一行読み込んで』のステップがプログラムで必要か気になりました。) ところで、cygwinでperlをはじめたのですが、何か気をつけることはありますか?
hogeを見つけたら前後の改行を探し出すとか。 全く意味ないけど。
>>81 perl -ne '/パターン/ && print' <file
84 :
81 :2008/05/08(木) 22:37:56
レスありがとうございます。 さっぱりわからないので、教わったことをキーワードに調べてみます。 また、御願いします。
85 :
デフォルトの名無しさん :2008/05/09(金) 16:18:45
まあ正規表現なんだけどな !
grepやsedを素っ飛ばしてperlから始めたのかな。一行野郎 なんて知らないんじゃないのかな。
目的:perlTk で GUI のテキスト検索ツールを作成しています。 状況:ユーザから入力された検索文字列の正規表現が不正であると、プログラムが 終了してします。 (invalid regular expression at * ) $search_string に格納された文字列が正規表現として有効であるかを、 eval を使って事前に評価したいのですが、どうしたら良いのでしょう? if (eval (m/$search_string/)) ? これだと常に true が帰ってしまいます。 エロい人、教えてください。
困ったときのクックブック 6.11 パターンが有効かどうか検証する
qx
92 :
88 :2008/05/10(土) 16:16:44
>>89 ありがとう。正規表現の箇所は全部呼んだつもりだったのに。。。
解法(p.254):
eval { ""=~ /$search_string/ };
warn "パターンが無効 $@" if $@;
>>91 性器表現に困ったときはそうします。ありがとうございました。
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 ); -------------------
URL転送なんだけど今こうしてます↓
#!/usr/bin/perl
print "Location:
http://*****\n\n ";
これに転送するまでHTMLの<meta content="x">みたいに
一定時間ウェイトかける事って出来るのでしょうか?
いいえ
98 :
デフォルトの名無しさん :2008/05/11(日) 12:59:18
教えて先生! 01 や 11 などの文字列を数値に変換するにはどうすればいいの?
99 :
98 :2008/05/11(日) 13:26:41
自己解決っす 他のスクリプト同様 -0 でよかったのかw
intでいいよ
モジュールでモジュールのファイル位置を知るにはどうしたらいいでしょうか? |-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
fastcgi
perlはインタプリタだから、見下すべき言語なんだろ?
perlはコンパイラつんでます。
所詮JIT
質問です。 package number; sub get_codeNumber(){ my $number = 1; if ($number > 0){ print "0より大です。"; }else{ print "0以下です。"; } } このplをローカルで実行しても何もコンソールに表示されません。 これをコンソールに表示するには、どうしたらよいのでしょうか。教えて下さい。
>>110 そんな断片だけ書かれていては釣りだとしか思えない
>>111 サブルーチンの中身をデバッグしたいのです。
>>112 問題がサブルーチン内にあるとわかっているのですか?
>>113 いいえ。perlの仕事がはじめてなのですが、
渡されたサブルーチンが仕様通りに動いているかを自分で確認したくて書き込みました。
Javaでいうと、
public class hoge1{
System.out.println("0より大です。");
}
public class hoge2{
System.out.println("0以下です。");
}
のような確認をしたかったのですが、おかしいでしょうか。
呼べ
>>114 ごめん,俺に理解力がないせいか何をしたいのかがよくわからない.
もうちょっと詳しく説明してくれたら助かるんだが.
もうちょっと実際のplに近いものを書いてみます。 お待ち下さい。
package number; #sub get_codeNumber(){ my $number = 1; if ($number > 0){ print "0より大です。"; }else{ print "0以下です。"; } #}
>>118 単純に改行が入ってないからとか
stdout が flush されてないからとか
じゃないよね?
ちゃんと実行されてるかどうかがあやしいような
#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を返しているかを確認したいのです。
「サブルーチンの中」を詳細に書けっていうんじゃなくて、 それを呼び出す側とか、実行している環境とかの詳細を書けって話だと思うよ。
あー、呼び出す側や実行環境のソースはもらっていません。
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; }
>>124 スレ違いだが、、、
w l 1 の「1」って何だ? そんなのあったっけ?
126 :
124 :2008/05/13(火) 17:14:59
>>125 スレ違いで申し訳ありません。
perlでプログラム書いてたんで、perlのスレで質問した方がいいかなと・・・
「1」はlineの色ですのであまり気にされなくても大丈夫です。
>>125 色だか線種だかを1に指定ってことだったはず.
>>124 gnuplotに流してるコマンドの最初と最後にいらないシングルクオートが入ってるせいじゃないかな?
このコピーでは問題なさそうだけど,ソースのprint文を確認してみたらいいと思う.
' なんてコマンドはねえよ、って言ってるだけじゃねえの?
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 こんな簡単なミスに気づかないとは。。。 大変ご迷惑おかけしました。
>>121 >このperlが、きちんとA00やZ00を返しているかを確認したいのです。
Test::Base使えば良いじゃん。
131 :
デフォルトの名無しさん :2008/05/14(水) 02:52:29
asciiコードを16進数に変換するにはどうしたらいいでしょうか? printf "%x","a" こんなことやっても上手くいきません 61と表示させたいです
132 :
デフォルトの名無しさん :2008/05/14(水) 03:04:43
133 :
デフォルトの名無しさん :2008/05/14(水) 03:21:56
grepでデータ中から目的の行を検索したいのですが grep(/$foo/i, @ary); ・ignore caseは使いたい ・$fooは「+」などのデータが含まれており、そのままgrepすると正規表現と解釈されてエラーになる ・正規表現はつかわない 何かよい方法はないでしょうか?
>>133 quote (disable) pattern metacharactersの出番
ありゃッ、先頭が抜けた。
>>133 \Q quote (disable) pattern metacharactersの出番
>>134 grep(/\Q$foo\E/i, @ary);
でいけました。ありがとうございます
137 :
110 :2008/05/14(水) 15:58:33
メインルーチンとの結合でうまくいきました。 相談に乗ってくれた方、ありがとうございました。
Windows環境で、ディレクトリ一覧を取得、正規化してリネームしたくて いろいろやってるんだが、shift-jisの文字の扱いに苦労してる ひょっとしてPerlでやるのあんま向いてなかったりする?
Unicodeであつかえばいいだろ。
あまりPERLの構文詳しくないので誰か教えてください こんなのを作ってみたのですが sub cont{print "contents\n";} sub html{print "<html>\n"; $_[0](); print "</html>\n";} sub body{print "<body>\n"; $_[0](); print "</body>\n";} body(\&cont); html(\&cont); これを、出力が<html><body>cont</body></html>となるように 呼び出したいのですが可能でしょうか ↓動かないですが、こんな感じのことがやりたいです 1. html(\(body(\&cont)); 2. sub f{html(\&&_[0]);} f(\&html); 3. sub g{$f=shift; html(\&f);} g(\&html);
>>140 こういうことか?
sub cont { print "contents\n"; }
sub html { print "<html>\n"; shift->(); print "</html>\n";}
sub body { print "<body>\n"; shift->(); print "</body>\n";}
html(sub { body(\&cont) } );
142 :
140 :2008/05/15(木) 19:58:14
おお、想定通り動きました。ありがとう。
use strict; use warnings; sub binding{ my($F,@P)=@_;sub{$F->(@P)} } sub cont {print "contents\n";} sub html {print "<html>\n"; shift->(); print "</html>\n";} sub body {print "<body>\n"; shift->(); print "</body>\n";} sub cont2 {return "contents\n";} sub html2 {return "<html>\n",shift->(),"</html>\n";} sub body2 {return "<body>\n",shift->(),"</body>\n";} html( binding( \&body => \&cont ) ); print html2( binding( \&body2 => \&cont2 ) );
144 :
デフォルトの名無しさん :2008/05/15(木) 20:21:07
145 :
140 :2008/05/15(木) 20:41:48
>>143 このbindingってやつナイスですね
これ参考に、1タグ多要素に拡張してみます
>>144 PerlMagickでできるかも。
まー、内部はGDかもしれないから、同じ結果かも知れない。
>>144 よくわからんが、文字コードの問題とか?
>>144 utf8か、フォントファイルを絶対パスで指定かな。
Imagerも良いよ。
149 :
プヨー :2008/05/16(金) 18:03:07
Perl で Lisp のマクロのようなものを使うことはできないの? 遅延評価する仕組みがほしい。 Func1( ...exp1..., ...exp2....); という呼び出しがある場合、状況に応じて exp1, exp2 の いずれか一方だけを評価したい。 Func1( sub { ...exp1...}, sub {...exp2...} ); のように無名関数を渡す方法は思いついたが、 記法が簡単でないので、もっと簡単に記述できる方法がいい。
>>149 Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない?
関数を呼んだ時点では、引数の値が決定してないってこと?
そうだとしても、値が決定するまで待つとかすればいいような気がする。
Lispがわからない人でもわかる説明で。
151 :
プヨー :2008/05/16(金) 19:31:07
> Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない? そうなんだけど、 if (,,,) { ... } else {...} のような定型化した条件文が大量にあるから、きれいじゃないんだよね。 それよりも、単に Func1( ...exp1..., ...exp2....); のように書けば一行ですむから、保守性が高くてクールだよね。 > 関数を呼んだ時点では、引数の値が決定してないってこと? そう。Lisp のマクロというのは、必要に応じて引数を eval するみたいなものだよ。 Lisp のマクロはコードを簡単化するために使われることが多い。
>>151 sub exp1{ .... }
sub exp2{ .... }
Func1(\&exp1, \&exp2)
でいいんでないの?
>>151 質問が漠然すぎるんだが、、、
my %hash = (
foo => sub { print "foo\n" ; },
bar => sub { print "bar\n" ; },
);
$hash{foo}->() ;
こう言うこととかしたいのか?
それともif文を三項演算子?
常に先行評価のPerlで急に遅延評価になったら保守性が著しく低下するだろ sub { } で我慢しろ。どうしても黒魔術を発明したいならソースフィルタを使って何とかすればいい
exp1,exp2が長い場合、保守性がいいとは思えないし
>>149 が考えたコードも改行位置ちょっと変えてあげれば複雑にはみえないし
関数を読んだ時点で引数の値が決まってないのは
コードがタコなだけな気がしてならないので
せめて、もう少し具体的に書いてもらえないかな
とりあえずFunc1の中でevalしたいならそうすればいいんじゃ?
Func1(
q(...exp1...),
q(...exp2...)
);
sub Func1 {
my($exp1,$exp2) = @_;
#なんかいろいろ
my $exp = $COND ? $exp1 : $exp2;
eval "$exp";
}
初歩的な質問で申し訳ないのですが クッキーにデータを入れるときエスケープなどの処理をしてから入れたほうがいいのでしょうか? よろしくお願いします。
>>156 URLエンコードと同じエスケープがいるよ。
日本語化されたRFCもあるから、読んでみれば?
もっと簡単にやるなら、CGIモジュールに全部任せる。
>>157 なるほど。クッキーはURLエンコードですか。勉強になりました。
最終的に決められた文字だけになるなら、任意のエスケープ方式でいい
要素数が同じlistとvalueがあるときに、同じ添え字の処理ってどうやって書きますか? #こんなのがほしい・・ for $i $j(@list @value){print "$i=$j";} タプルみたいなのがあれば使いたいんですが やっぱり添え字をインデックスにしてループするしかないんですかね
どういうときに便利になる? その例でもwhile shiftで事足りるし。
use List::MoreUtils qw(each_array);
zipWithを書けばおk
単に短く書きたかっただけなんですが、あまりPERL使いこなせてはないので・・ shiftだとこんな感じでしょうか。 while(@list){print shift @list;print "=";print shift @value;} これはこれで、短くていいですね。
while($i=shift@list and $j=shift@value){print "$i=$j";}
>>162 オブジェクト指向部分はあまりわかってないので後ほど調べてみます。
>>163 sub zipwith{shift->(shift,shift);}こんな感じですかねw
ちゃんと動くかはこれから試してみますが・・
>>164 こっちのが全体的にいいですね、トン
練習がてら作ってみました @a=qw(a b c); sub zipwith{($f,$l,$r)=@_;while($i=shift @$l and $j=shift @$r){$f->($i,$j)}} zipwith(sub{($a,$b)=@_;print "$a=$b\n";},\@a,[1,2,3]); 関数へ複数の配列を渡す際にはリファレンスにしないとだめってのは少し不便ですね
perlの勉強中で カメラ 785円 お菓子 98円 … という文字列がファイルであるのですが if(円という文字を含んでいたら) $temp = "円より前の数字"; という風に文字の抽出を行いたいのですが 正規表現の部分と、抽出の部分がわかりません ファイルの読み込みから1行だけを取り込むのは出来たのですが ご指導お願いいたします。
/円/ and $temp = $`;
すいません、上手く動かないみたいです
ちょっとかんべん
perlっていうかsendmailについてなんですが… open(MAIL, "| /usr/sbin/sendmail -t env_addr") or die $!; # 中略 close(MAIL) or die $!; のように、パイプ渡しでopenするとき、closeに失敗するときがあるんですが、このとき エラーメッセージを捕捉する方法どなたかご存じですか? $!には入ってこないのです。
>>172 エラーメッセージは何処に出るの? 標準出力ならIPC::Open2, 標準エラー出力ならIPC::Open3参照。
174 :
デフォルトの名無しさん :2008/05/19(月) 11:53:11
#!/usr/bin/perl $inputfile="test.txt"; open (FILE1, ">>$inputfile") or die "$!"; for ($hoge=0;$hoge<10;$hoge++) { print FILE1 "$hoge"; sleep(1); } close (FILE1); このプログラムを同時に2つ実行すると、私の予想ではtest.txtの中身は 00112233445566778899 となると思うのですが、なぜかファイルの中身には 01234567890123456789 と出力されます。 perlは排他制御が勝手に行われたりするんでしょうか?
バッファリングされてるから
176 :
デフォルトの名無しさん :2008/05/19(月) 11:56:39
>>175 どういうことでしょうか?
もし正しくバッファリングされるのならflockなどの排他制御は不要な気が…。
すいませんがもう少し詳しくお願いします。
どのタイミングでflush()されるかわからないのに、それに依存しちゃダメでしょ ちゃんと排他制御しなよ
178 :
デフォルトの名無しさん :2008/05/19(月) 12:27:50
なんとなーく分かりました。ありがとうございました
cryptの返り値はsaltと同じ半角英数字、半角スラッシュ、半角ピリオドの範囲で salt2文字と残り11文字ってことでってますでしょうか。
180 :
デフォルトの名無しさん :2008/05/20(火) 19:31:58
あってますでしょうか、の誤字でした。あとあげます。
いいえ。ホストのcrypt(3)に依存です。
マニュアルを読むのは身分の低い下賎の民の仕事なので、 高貴な方々は、他人にマニュアルを読ませます。
だからいつまでたっても
これだからゆと(ry
言っても無駄だから、適当にヒントなり与えてスルーしようよ。
>>182 職業に貴賎なし。
だが、海外にも目を向けるとインプリする人はいっぱいいるから、
そういう志向はありだと思う。
187 :
デフォルトの名無しさん :2008/05/21(水) 18:46:46
ファイルテスト演算子を再定義することって可能でしょうか?
むり
189 :
デフォルトの名無しさん :2008/05/22(木) 01:15:29
「独習 perl」を一冊 やり通したのですが、次は何をすべきでしょうか? perlの機能を覚えただけで実用的な使い方は学べていません。 次は何をしたらいいでしょうか?
何かを作る。 ファイルの一括処理プログラムとか、板違いではあるがCGIなんかでもいい。
191 :
デフォルトの名無しさん :2008/05/22(木) 03:09:43
自分が何をしたいのか、わかりません。 てか?
そもそも何で perl をやろうとしたのかって話だ
193 :
デフォルトの名無しさん :2008/05/22(木) 03:50:29
プログラムって何かを作るためにある道具であって 何を作るかは作り手が考えなきゃどうしようもなかろう。
>>189 適当なフリーのCGI等をダウンロードして
辞書的に使える本(Google先生でもOK)で調べながら
ソースを読んでみる。
ある程度理解できるようになったら、それを少しだけ改造してみる。
これを繰り返すだけでも相当勉強になると思うよ。
ネットに転がってるperlで書かれたCGIやCGI解説本のソースはほぼ100%クズなので 初心者はそんなものを見てはいけない。
言いますね…
まあ、メジャーな掲示板のcgiコードもひどいもんだ。 一番良い例が、しばらく前までの2ch。 今動いているのはプロが書いたはずだから、ちゃんとしているはずだけど、 公開されてんのかね。
フリーGGIはオススメできない 書き方が古いから。
>>191 自分がやって「楽しい」と思うものでなければ、長続きしない。
例えば、任意の文字列を入力すると、
▄ ▄▄▄▄▄▄▄▄
▄▄▄▄▄▄▄ ▄▀ ▄▄█▄▄ ▄▄ █▄▄▄▀ █
▄▀ ▄▀ ▄ ▀ █▄▄█▄▄ █
▄█▄▄ █ █ █▄▄█▄█ █
█ ▄▀ █ █ █ ▄▀▀▀█▄ █ █ ▄ █ ▄
▀▄▄▄▄▄▄▄▄ ▄▀ ▀▄▄▀ ▀▄▄▄▀ ▀ █ ▀▀▀▀ ▀ ▀█
に変換するスクリプトを作ってスレを荒らすというのはどうだ?
>>197-198 同じ事をするにも何通りも書き方がある,
というのとは違うのかい?正直わからん。
>>197 2chのbbs.cgiは8年ぐらい前に流出した以外に表に出てないと思うのだが。
>>201 perlのCGIがブームだった頃に作られた遺産がたくさん残ってる。
それらは大抵perl4時代のコードのままメンテナンスされてない。
元々の>189からの話の流れからすると、特定のものを批判するより これ読めってのを挙げた方がいいと思うが、定番といえそうなものがないな。
普通に推奨本のコードを真似れば良いよ。
ラマですね、わかります。
おいちゃん=プロですね。わかるます。
やっぱある程度面白くないとね。 mailあたりをいじってみたらどうかな
>>189 2-gramの全文検索エンジンの試作オススメ。
リスト処理や文字列処理などまんべんなく入ってる。
モチベーション最強は、やっぱエロだろ。
・出版ブームが終了してまともな本が出てない ・Apache + mod_perlでも面倒なのにモジュールとか考えたくない ・webで探すとまともにメンテされてない糞ページがヒットしまくる ・Perl自体の記法が自由すぎるせいでそのページのコードが古いのかこっちの設定ミスなのでエラー出してるのか区別ができない 参入障壁高すぎ
>・出版ブームが終了してまともな本が出てない
>>2 以外の本はビブリオマニアでなければ必要ないよ。
>・Apache + mod_perlでも面倒なのにモジュールとか考えたくない
文の前後が繋がってないよ。
>・webで探すとまともにメンテされてない糞ページがヒットしまくる
Perlの疑問はググる前にperldocだよ。
>・Perl自体の記法が自由すぎるせいでそのページのコードが古いのか
>こっちの設定ミスなのでエラー出してるのか区別ができない
最新のperl(1)でもPerl4時代のコードが問題なく動くよ。
混ぜておかしくなるのは「新旧」でなく「お作法」だよ。
213 :
デフォルトの名無しさん :2008/05/22(木) 23:42:33
Perlでクロスワードパズルつくってみたいんだ まずは その準備として単語(表記はカタカナで)とその対応説明が 登録されているデータベース(Excelでもテキストでもなんでもいい) が必要です。どなたか知ってたら教えてください。それではおやすみ。
215 :
デフォルトの名無しさん :2008/05/23(金) 00:01:31
クロスワードパズルは数理パズルじゃなくて、おちゃらけクイズごっこだから得る物ないよ
chasenの辞書からも取り出せるんじゃないかな。
茶筅の辞書に言葉の意味なんて入ってないだろ
>>213 クロスワード作るのとPerlは無関係
まず紙に書いて作ってPerlで起こす時に分からないことあったらまた質問しな
\xe3\x80\x9cは変換できるのに、\xc2\xa2は変換できん。何故? $PTNの内容をs///にべた書きすると変換できるようになる。何故?tr///が高速ならこんなことせんでもええのに。何故? (ver. 5.8.5) use encoding "utf8";use Encode; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; $PTN="(\xe3\x80\x9c|\xc2\xa2)"; %HASH=("\xe3\x80\x9c"=>"\xef\xbd\x9e","\xc2\xa2"=>"\xef\xbf\xa0"); while(<STDIN>) { s/$PTN/$HASH{$1}/geo; print; }
221 :
デフォルトの名無しさん :2008/05/24(土) 03:24:15
>>219 $PTN="(\x{301C}|\x{00A2})";
222 :
デフォルトの名無しさん :2008/05/24(土) 03:26:18
>>221 ダメでした。
\x{00a2}が\xc2\xa2じゃないものになってしまいます……。
>>前スレ928の方 utf8を扱う tr/// で再帰時に落ちる件、ActivePerl 5.10.0.1003 では正常になっていました。 詳細は未確認だけど、33747 のmg.cへの修正が効いている感じ。
>>215 英会話の勉強とか。。。perlのコマンド、モジュール名だけでできたクロスワードだったら
といてみたいかも。
>>225 「Head First Java 第2版―頭とからだで覚えるJavaの基本 (単行本) 」
ではJavaに関連した単語でクロスワードパズルがあった。
>>219 ソースコード中に「use utf8」の宣言が無いから、全ての文字列は、
UT8フラグの無い、シングルバイトの文字から構成されていることになる。
ネット上の情報からすると、Perl では、UTF8 フラグ
なし文字列を Latin-1 文字列とみなしている(らしい)。次に、
binmode STDOUT, ":utf8";
の宣言があるから、print 文等において文字列が出力される際には、
シングルバイトのLatin-1 文字列が、utf8に変換される。その結果、
このような現象が起きる.....ということでいいのかな?
間違っていたら、エロイ人、修正して下さい。
だから猿用のテンプレを何で貼らんのよ?
>>227 >>3 #!/usr/bin/perl -w
require 5.008001;
use encoding 'utf8';
print utf8::is_utf8('binary?') ? 'with utf8 flag' : 'binary';
__END__
>>228 utf8 プラグマも encoding プラグマも使わないに越した事ないし。
フラグの有無で悩むより、マルチバイト文字処理が本当に
必要な箇所でだけフラグ付け外しする方がよっぽど楽。
つーかおまえら。 shは使わない方がいい、Perl使うべきだ。 とかいって、perlで $test = `cat /home/test/test.txt` とか多様してるやつってなんなの?
Missing ;
使うななどとどこのどいつが言ってるんだ? ものぐさ番長=パーラーだ。
猿用のテンプレってこれだっけ? 次スレからは入れような。 --------------------------------------------------------- # 【Perl 日本語処理の基礎の基礎】 # このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。 # このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。 # 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。 # まず、以下の行を先頭に入れて下さい。 use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; # 次に、あなたが実行したい処理の内容を入れて下さい。 print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n"; sleep(1); # 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう # おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
>>230 if( `[ -f /home/test/test.txt ]` ) {
$test = `cat /home/test/test.txt`;
>>219 です。
結局、\xc2\xa2の置換は諦め、別ツールで提供することになりました。
別のバージョンとか調べている時間がない……。
>>234 if( -f /home/test/test.txt ] )
{
$test = `cat /home/test/test.txt`;
}
>>234 if( -f /home/test/test.txt)
{
$test = `cat /home/test/test.txt`;
}
普通 my $test = `cat /home/test/test.txt` if(-f /home/test/test.txt); だろ
240 :
デフォルトの名無しさん :2008/05/27(火) 22:41:24
C言語のプラグラミングできたお。 void main(int argc, char**argv) { system("cat /home/test/test.txt"); }
241 :
デフォルトの名無しさん :2008/05/27(火) 22:48:04
cでやるとすごく損した気になるんだよなあ
perlでやっても損でしょ。 perlでできる処理はperlでできるだけやるべき。 catとか。
>>243 確かにそうなんだけど、catについてはそうかな〜。
perl だったら、open,while,colose (またはread)とかで三段処理踏まないといけないから、
cat なんかは $test = `cat file.txt` なんかはよく使う。
実際どっちが早いとかBenchとったことはないけど・・・。
失敬、close間違い
かなり遅いよ、perlで外部コマンド実行したら。 相当な差がある。 コード的には段階踏んでるが。
一つ関数を書くか、CPANから探してきて使うだけでしょ
qxはforkしてshell起動して実行して・・・って感じなので perlだけで終わらせたほうが圧倒的に早い File::Slurp使うか、入れるのめんどくさかったら sub slurp {open my $fh , $_[0] || die("$_[0]:$!");local $/;<$fh>} って書いとけばOK
249 :
244 :2008/05/28(水) 20:06:16
いやいや、そりゃあ自分も本格的な(?)スクリプト書く時や、 複数のファイルにループ処理する時はサブルーチンで書いたりするよ。 そうでなくて、ちょっとした確認とかで数行のスクリプトとか、 コマンドラインからのワンライナーみたいな感じで書く時には便利かな ってゆうぐらい。 そんな時にまで、いちいち、useやrequireやsub{}なんて書きたくないじゃん。
>>244 数行だとか、処理速度とか処理効率を考えなくていいなら便利。
あくまでコマンドレベルの用途ね。
ただ不明なのが、
>サブルーチンで書いたりする
ってとこ。
関係が不明なんだけど。
むっか〜しは、sortは外部コマンドでやってたりしたもんだ。 環境やバージョンが変わったら、こまめにベンチマーク取って 最適の方法を探らないとね。
「cat を使う」 …ねえ。知ってると思うけど $ cat > foo.pl #!/usr/bin/env perl -n print ; } { print "foo\n" ; # control + D をタイプ $ perl foo.pl foo.pl foo.pl $ perl -lne '}{ print $. ;' foo.pl
そいつは初耳だ 解説よろしく
>>253 optionに関しては perl -h するなりで
-n assume "while (<>) { ... }" loop around program
-p assume loop like -n but print line also, like sed
で実際の挙動を見るには
perl -MO=Deparse -ne 'print;'
この結果を見ると while ループで単純にかこってあるだけだから
ループの終りの「}」と無名ブロックの始まりの「{」を入れて
好きな様に処理させる。
応用すれば、「tsvの第二カラムの積算」なんてのは
perl -lane '$t += $F[1] ; }{ print $t ;' FILE
スクリプトファイルにしたときも同じ事。B::Deparse にて確認して。
perl -MO=Deparse foo.pl
あとはお好みに。これで手に負えない時とかstrict適用したい時は
普通に書きゃいいだけだし。
255 :
244 :2008/05/28(水) 22:41:30
>>250 それは、
>>247 や
>>248 に対するレスで、例えばopen();while(){うんたらかんたら・・・}close();を
一まとめにしたサブルーチンなんかに投げるってこと。
いや、スマン。244で速度のこととか言い出したんだけど、
自分が言いたかったことは、
>>240-243 までの流れで、ちょっとした処理(
>>240 とかw)を
わざわざCで書いたんなら、かなり損した気分になるのは大いに理解できるけど、
それをperlでやるのは、そんなに損した気にはならない、
ってゆうか、perlだからこそ、$nakami = `cat file.txt`;や@files = `find ・・・`;
みたいな事が手軽に出来る、ってのが、perlの大きな魅力の1つではないかと自分は思ってる。
ってことを言いたかった。
>>252 それはオレも初耳。
完全に理解しきれてないけど、色々応用が効きそうだ。
256 :
デフォルトの名無しさん :2008/05/28(水) 23:31:00
>>246 >>248 「かなり」 とか 「圧倒的に」 とか、ずいぶんアバウトだな。
そんなんじゃ全然説得力が無い。
たとえば、$a = `cat unko.txt` すると 0.1秒かかるとしよう。
open・read・close すると0.01秒しかかからないとしよう。
で?それが何なの?どうなのよ、って事だ。
えっ?10倍早いだって?
おいおい、0.1−0.01=0.09秒しか違わないんだよ。
たったの0.09秒の差を人間が感じ取れるとでも思うの?
アフォくさ。
>>256 whileかけるようになったらまたおいで。
>>256 一回だけ処理するならその程度で済むかもね。
svn より、cvs のほうがインストールの敷居は低いんじゃないかなぁ。 cvs のほうが依存するライブラリ少いし、FreeBSD なら最初から入ってるし。
俺はsubversion派だわ って誤爆か
誤爆じゃないだろ。perldoc.jpの話じゃね?
my $message = "He is 5 years old\n"; $message =~ s/(\d+)/{ twice($1) }/e; #数字を検索して、2倍して置換 print $message; これなのだけど my $message = "He is 5 years old\n"; $message =~ s/(\d*)/{ twice($1) }/e; #数字を検索して、2倍して置換 print $message; これじゃダメなのはなんで?
* は0回以上の繰り返しだから、先頭でマッチする。
(\d*) 全てが任意なので、全ての行で置換が行われることに
先頭つーか、全ての文字の間にマッチする。
266 :
265 :2008/05/29(木) 18:48:46
\d\d* でやってみ。
>>265 egじゃなくてeだから、この場合は先頭だけだろう。
お、eをgと見間違えたわ。
269 :
デフォルトの名無しさん :2008/05/29(木) 21:59:34
いーじーさんにつーれられーてー・・・ いや何でもない
270 :
デフォルトの名無しさん :2008/05/29(木) 22:23:27
逝っちゃった
横浜港 乙
港のヨ〜(ry
273 :
デフォルトの名無しさん :2008/05/31(土) 19:56:52
cpan起動出来なくなりました。 #cpan Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work. The COLUMNS and LINES environment variables didn't work. The resize program didn't work. at /usr/local/lib/perl5/site_perl/5.8.3/i386-freebsd/Term/ReadKey.pm line 362. Compilation failed in require at /usr/local/lib/perl5/site_perl/5.8.3/Term/ReadLine/Perl.pm line 63. とエラーが出ます。 恐らく、perlのバージョンアップした際に不具合が生じているのかと思うのですが・・・。 ネットで解決法を探すも情報がほとんどなく手がかりもつかめません。 perl v5.8.3 OS FreeBSD 4.2-R 助けて下さい。お願いします。
もっかいCPANインスコしなおせばいいじゃん
275 :
273 :2008/05/31(土) 21:57:38
インストールしなおしてみましたが、ダメでした。 同じ症状です・・・。トホホ。
12 May 2008 20:15:40 を 2008/05/12 20:15:40 という風に返すモジュールないですか?
>>273 どこでおかしくなっているか明示されているんだから、
見てみればいいだけ。
>>276 use
HTTP::Date qw(str2time time2iso)
print time2iso( str2time("12 May 2008 20:15:40") );
>>276 Date::Manipかな。日付を扱うならDate::Calcとともに定番。
perl -MDate::Manip -e 'print UnixDate("12 May 2008 20:15:40", "%Y/%m/%d %H:%M:%S")'
281 :
276 :2008/06/01(日) 00:57:56
282 :
デフォルトの名無しさん :2008/06/01(日) 04:50:03
activeperl v5.10.0 built for MSWin32-x86-multi-thread において GD v2.39 GD::Graph v1.4308 GD::Text v0.86 で use GD; use GD::Text; use GD::Graph::bars; my $graph = GD::Graph::bars->new( 800, 800 ); my $gd_text = GD::Text->new(); GD::Text->font_path( _______DIR______); $gd_text->set_font(_______FONT______, 178) ;#or die $gd_text->error; $graph->set_title_font(_______FONT______, 178 ); _______DIR______ = undef | '' | 何か意味のある値 _______FONT______ = undef | '' | 何か意味のある値 をWindowsXP SP2あるいはWindows2k SP1で実行したとき どうもシステムのフォントを破壊?するようです
283 :
232 :2008/06/01(日) 04:57:25
以下windows板に書いた物。
windows XP
起動してみると ”ようこそ”が明朝体になってて
ファイル名の全角空白までも文字化けしている状態になりました。
標準で恐らく第1水準漢字が表示できたりできなかったりするフォントが選択されているようです。
検索 -> 索 が表示できない
削除 -> 削 が表示できない
書き込む −> 込 が表示できない
またcmdで日本語が返ってくるような状態
>> c:\hoge\foo.bar (実際には存在しないファイル)
とかタイプすると ■■■■■ ■■■■と文字化けして
(ファイルが見つかりませんとかそんな感じのメッセージ)と返ってきます。
http://support.microsoft.com/kb/880991/ja に従ってフォントキャッシュを消して再起動しても改善されませんでした。
Windows 2000 SP1では IE6の検索ウインドウに英字を入れるとイタリックに化ける
という共通してんだか共通してないんだかな現象が発生します。
232に書いたコードを実行したときに即に破壊するわけではなく、次回起動時から影響が出始めるので
何がどうなってるのかまったく分からない上に妙な分野にまたがった問題のために、
5時間戦って何にも戦果が上がらずもう疲れたのでとりあえずよし牛でも行ってからOS入れなおすことにしますた。
GD(GD::Textだと思うんだけど)使うときは気をつけてください。
284 :
282 :2008/06/01(日) 05:17:28
すみません、 訂正 283 で s/232/282/g; で読んでください。 再現したくないのでぜんぜん検証ができないのですが これはCPANの作者さんにも報告したほうがいいのでしょうか?
どういう風にできないの?
要素に配列への参照か文字列を含んだ再帰的な配列を出力するプログラムを作ろうとしているのですが ややこしくてついアイスに手を出してしまいます。 どうすれば幸せになれますか my @a=(1,2,3); my @b=qw(a b c); my $c=[\@a,\@b]; my $aa=[1,2,3]; my $bb=[4,5,6]; my $cc=[\$aa,\$bb]; sub pr{ my($depth,$ary_ref)=@_; if((ref $ary_ref) eq "ARRAY"){ foreach (@$ary_ref){ pr(($depth+1),$_) } }elsif(defined $$ary_ref){ print $depth,":",$$ary_ref,"do something\n"; }else{ print "do nothing\n"; } } pr $cc; pr $c;
288 :
287 :2008/06/02(月) 08:56:48
自己解凍しました。
書きたかっただけだろw
sendmailで受信したメールを、procmailからperlスクリプトを起動して処理しているのですが処理結果ない場合があります。 どこかでエラーが出て止まっていると思うのですが、エラー内容をファイルに出力できないでしょうか? .procmailrcを :0 |perl ./foo.pl 2>&1 > ~/out.txt としてみましたがout.txtにはなにも出力されませんでした。(空ファイル)
291 :
デフォルトの名無しさん :2008/06/02(月) 12:44:59
Windows だとその書き方はダメで perl ./foo.pl > ~/out.txt 2>&1 というふうに 2>&1 を後ろにもっていく必要がある。 Unix 系はどうか知らん。
2>&1は後ろに持っていくはず。 Unix系でも。
perl ./foo.pl 2> ~/out.txt じゃだめだっけ?
>>290 リダイレクトは左から評価されるんで、順序に注意汁ってこったな
2>&1みたいのはイメージ的には $b = $a みたいな変数のコピー
>~/out.txtみたいなのは $a = "hoge" みたいな代入
と思っておけば、イメージ的にはほぼ間違い無い
$b = $a;
$a = "hoge";
とかやっても、$bは"hoge"にならないでしょ
逆順だと上手くいくけど
少しそれるが、この右からとか左からとかってのは結局のところ 対象の言語の実装がfastcallとかstdcallとかってことかね
296 :
290 :2008/06/02(月) 19:33:01
>>291-294 ありがとうございます。解決しました。
perlじゃなくてshellの問題でしたね。すいません。
294氏のイメージは理解しやすかったです。
binmode(STDOUT); と指定したものをテキストモードに戻すにはどうしたらよいでしょうか?
binmode(STDOUT, ":crlf"); perlfunc読めよ糞が
299 :
デフォルトの名無しさん :2008/06/02(月) 22:59:05
↑ キミ、後輩を育てられないタイプだね。
うん。自分でもそう思う。 でも、いまのところ自営業で後輩いないからなんとかなってる。
相手に糞とか言う輩は、殆どの場合己がそうだから。
相手をくそとか言う輩は,ほとんどの場合周囲からくそと言われてるから。
>>301 > 相手に糞とか言う輩は、殆どの場合己がそうだから。
調査不可能なことを断言する嘘つきの出現です。
断言してないような
305 :
デフォルトの名無しさん :2008/06/03(火) 02:30:56
質問してもいいでしょうか? winxp sp2を使っていて、activeperlを入れています。 パソコンのボリュームの調整をするコードを書きたいのですが、 perlからでもそういうのはいじれるのでしょうか? メイン音量・WAVE、あと、wmpなど音楽再生ソフトの音量もいじりたいです。 どこか参考になるサイトなどありますでしょうか?
なんでperlで? VBでも使った方が良くね?
>>305 どうしてもPerlでやりたいなら、Win32APIをつかえば?
それ以上は、Perl関係ない。
308 :
デフォルトの名無しさん :2008/06/03(火) 17:03:21
use utf8; binmode STDOUT, ':encoding(cp932)'; このコードを他のOS環境で使うためには :encoding(cp932) を手作業で書き換えてもらってるんですが 自動取得することはできますか? そのOSのデフォルトのコードページとかエンコードとかを 自動取得することは出来ますか?
>>308 「そのOSのデフォルトのコードページとかエンコードとか」というのが
そもそも不明。
310 :
デフォルトの名無しさん :2008/06/03(火) 18:18:44
>>308 OSごとにデフォで使われてる文字コードを完璧に判定することはできない。
同じ記述なら一括で置き換えればいいだけだし
共通する部分なら最初に開発した段階で
定数なり関数なり作ってそこに定義しておくべきだった。
>>308 OS名や環境変数で、ある程度は判別できるだろうね。
>>311 > OS名や環境変数で、ある程度は判別できるだろうね。
「そのOSのデフォルトのコードページとかエンコードとか」が存在するかどうか
とか、それを守っているのかとか、そもそも一貫性があるのかとか
はいちいち調べないとね。
出力の話なんだから環境変数LANGみて空ならCP932にするだけで ほぼ解決しないかな?
314 :
デフォルトの名無しさん :2008/06/03(火) 21:48:18
中国とかフランスとかドイツの Windows って、環境変数 LANG に何て設定してあるの?
315 :
デフォルトの名無しさん :2008/06/03(火) 22:25:52
そもそもUNIX系OSには「OSのデフォルトのコードページとかエンコード」なんて概念自体無いわけだが。 LANGはOSのデフォじゃなくて、「その人が端末に表示したいエンコード」。 端末装置はユーザごとに異なるのが当たり前・・・というUNIXの基本を忘れてるよ。 んで、メンド臭いなら全部 UTF8 にしたら? 今時のWindowsのメモ帳ならUTF8開けるよ。
Unix環境なら use open ":locale"; とかでよきに計らってくれるようだが Win32だと良い方法はないかも
317 :
デフォルトの名無しさん :2008/06/03(火) 22:32:43
> use open ":locale"; これも駄目。 何故なら、プロセスの実行環境と、その出力を閲覧するユーザのlocaleが一致する保証は無いから。
>>317 それが「いい」か「だめ」かはケースバイケースでしょ。
それで少なくとも伝統的なUnixのI18N/L10Nプログラムと同じ動作にはなる。
Cでsetlocale(LC_CTYPE, "")するのとほぼ同じだから。
無論、設定ファイルや何かでオーバーライドできるようにすることが
望ましいけどね。
>>313 他国語版使ったこと無いから知らんけど、cp932が有効なのが
そもそも日本語版Windowsだけなんじゃないかな。
>>314 中国はbig5?(と思ったら、Windowsでは、GB2312(cp936)らしい??)
フランス等ラテン語件はlaten-1(ISO-8859-1)なんじゃね?(cpだと1252)
>>316 VCからなら、locale取得したり、変更したりする関数があったハズ。
Win32APIから叩けそうな気がするけど、どうなんだろ。
まあ、日本語環境のみで使用するってんなら、
>>313 でええかも。
320 :
305 :2008/06/03(火) 23:32:11
>>306 CGIでPerlをかじりました。
実行ファイルにしてしまえば(自分のパソコンにはperl入ってるので不要ですが)Perlで問題ないと思いました。
Perlではwindowsを操作するようなプログラムはかけないなんてことはないと思ってたんですが。
特に簡単なのなら言語なんてほとんどなんでもいいのかと。
>>307 win32apiとやらを調べてみます。
321 :
デフォルトの名無しさん :2008/06/04(水) 01:36:05
>>315 UNIXのメモ帳で端末のエンコードが変更できるんですか?
エンコードの概念が無いなら、いったいどうやって漢字を表示するんでしょう?
テキストファイルをopenするのに、いったい何のコードでデコードすればいいんでしょう?
>>321 > UNIXのメモ帳で端末のエンコードが変更できるんですか?
「UNIXのメモ帳」という謎の概念が提示されました。
viとemacsの戦い
ああ、いるんだよ。別なOSを「別なWindows」だと思ってるやつ。
しばらく俺の雇用は安泰だな
まあ、確かにメモ帳ライクな外見&操作を意識したテキストエディタはあるけどな。 それならUNIXのメモ帳と言っても何ら差し支えは……。
>>322 > > UNIXのメモ帳で端末のエンコードが変更できるんですか?
これ全体が謎なんだな。
>>320 Perlもモジュールだなんだでいろいろ出来るようにはなったけど
基本はテキスト処理をするための言語だぜ?
ちょっとじかじったくらいなんだったら
それに適した言語をかじり直したほうがたぶん早いよ
>>320 win32apiをPerlから使うのは結構面倒なので、場合によるだろうけど、
>>305 をみると、Perlでコーディングする意味はないと思う。
やってで気ないことはないけど、適材適所ってヤツがある。
VBだと金がかかるという場合、もしVista使ってるならサイドバーガジェットという選択肢もあるかな。
>>319 ちょっとやってみた感じだと、ActivePerlでもPOSIXモジュールのsetlocale()は
機能する模様(実際にはMSVCRTのsetlocale()を呼んでいるのだろう)
use POSIX qw(locale_h)
$old_locale = setlocale(LC_CTYPE, "");
とかやると、Japanese_Japan.932とかいう文字列が帰ってくる。
.の後ろがコードページのはず。
cygwinみたいにロケールが完全に腐ってる環境ではどうしようもないけどな。
>>323 おーっと、ここで 「ed・はるみ」 が乱入w
帰れカス
Kwaliteeってなんですか?
$ ed hello, world ? help ? quit ? exit ? q ? ? ? --help ? -help ? fuck ?
ワロた
336 :
デフォルトの名無しさん :2008/06/05(木) 20:11:12
open FILE, '<:utf8', "unko.txt"; read FILE, my $content, (stat FILE)[7]; close FILE; この (stat FILE)[7] の部分が、見た目が汚く感じるんですが もっと美しい書き方はありませんか? read FILE, my $content, 9999999999; とか、死んでもイヤです。 どっかのクソ言語の ReadAll メソッドみたいなのが欲しいです。
open my $file, '<:utf8', "unko.txt"; my $content = do{local $/; readline $file} close $file;
-s FILE
my $content = join("",<FILE>);
341 :
デフォルトの名無しさん :2008/06/06(金) 00:39:53
>>338 そっか、それがあったか。それ使わせてもらいます。感謝感謝。
あとの残りはクズですね。
全部読むなら$/をクリアするのが常套手段だろ。
343 :
デフォルトの名無しさん :2008/06/06(金) 00:59:50
OBJS = ${CSRC:.c=r30} .c.r30: ${CC} $< Makefile中の$<をPerlを使って置換してCCに渡すことは可能でしょうか? $<に含まれているスラッシュを\\に置き換えるために $< =~ s|/|\\\\|g このような置換を行いたいです。 環境はCygwinPerl5.8.8です。
345 :
デフォルトの名無しさん :2008/06/06(金) 01:11:15
sub write { ($fileName, $text) = @_; open(FH, "+>$fileName"); print FH $text; close(FH); } こんな感じでファイルを出力するコード書いたのですが、 サブルーチン経由だとなぜか動きません サブルーチンなしだと正しくファイルが書き出されました なにがおかしいのでしょうか
writeという標準関数があるから
>>346 writeという標準関数の存在しりませんでしたが
今回はなぜこのコードが動かないかについてよろしくお願いします
というのも、同じ仕様(関数名,引数,戻り値)を複数の言語で記述してみてるだけなのです
組み込み関数を再定義するためにはお作法がある。writeが再定義可能かは知らん。 perlsub読むか、親切に解説してくれるおせっかいが通りかかるのをまて。
あ、なるほど そういう意味でしたか 文法自体はあってるんですね ありがとうございます
350 :
デフォルトの名無しさん :2008/06/06(金) 02:35:57
&writeでもだめなのかな。
>>343 makeのsubstやpatsubst関数じゃだめ?
perlを始めたばかりなのですが、 foreachやwhile等で、何回目のループかをカウントしているような 変数は無いでしょうか? 自前で用意すればいいだけなのですが、そのような変数が無いかと思い 質問させて頂きます。
あったとしても、時前で用意した方が他の人も読み易いんじゃないかな。
そういえば、不精なPerlのハッカーたちは、foreachを使わずに全てforを使う……だなんて どこかに書かれてたような気がするけど、実際どう? 自分は使い分けてる。
自分は for かな後ろ見りゃわかるし。 foreach で (;;) とかやらなきゃどっちでも良いとは思う。
forもforeachも一緒じゃないの?ただのシンタックスシュガーかと思ってたけど
>>357 それを前提として書いたつもり。
a) for my $n (0..9) {}
b) foreach (my $n=0; $n<10; $n++) {}
a は許容できるが、b は嫌かなってこと。
for しか使わね。それと、C type の for は使わね。
俺も同じくforのみ
どうでもいい。 んで、暗黙のループカウンタなんてあったら言語仕様としてきもい
C言語の const 変数の様なのは定義できないでしょうか? perl 5.8です。
363 :
356 :2008/06/06(金) 16:14:23
んー、やっぱforだけとかの人のほうが多いのね。 まさにPerlスタイル。 >362 use constantとかはー?
use Readonly ;
>>361 $. は?w
つまりキモイってことですよPerlはw
柔軟な頭を持ってない奴が負け惜しみを言ってますw
ゴミを美味いと思う自分の狂った味覚を「柔軟さ」と主張する人生ですかw
君がゴミだと思って捨てていた部分は実は高値で取引される珍味でした。
369 :
デフォルトの名無しさん :2008/06/06(金) 17:56:23
>>362 Cライクにやりたいなら
use constant NAME => 'hoge';
ただし Perlでベアワードはメンドくさい。
"my name is NAME"
とやっても展開されないから
"my name is ".NAME
とするしかない。
*NAME = \'hone';
これを使えば
"my name is $NAME"
で展開できる。
*C_STR = \'xxxx'; # 文字列定数。参照は $C_STR
*C_NUM = \100; # 数値定数。参照は $C_NUM
*C_ARRY = [1,2,3]; # 配列定数。参照は @C_ARRY
*C_ASSOC = {k1 => v1,k2 => v2}; # ハッシュ定数。参照は %C_ASSOC
>>368 まぁ、珍の字はニュアンスぴったりだと思うよ。
Perlの仕様を漢字一字で表せといったら、珍・奇・醜・糞あたりが有力だろうし。
371 :
デフォルトの名無しさん :2008/06/06(金) 18:44:43
forは数値カウンタのときやCライクな使い方のとき。 配列から読み取るってときはforeachにしてるな。こっちはPHPぽい方で
・上にあがってるから ・Perlを盲目的に全肯定するキチガイだけが住人ではないから
誰も全肯定なんてしとらんがな・・・
それを言ったら、誰も負け惜しみなんて言ってないよな。
>>352 レスありがとうございます。
substを使ってうまくいきました。
ありがとうございました。
まず匿名の臆病者は自分の (好きな|メインの) Lightweight Language を言えよ
BER圧縮された数値(オフセット値、ID)のビット列に対し、 二分探索法を行なっている実装例ってありませんかね?
そういうのはCでやった方が
↑おつかれさまでした
383 :
デフォルトの名無しさん :2008/06/08(日) 19:02:55
他のファイルに変数を設定したファイルを用意し、 そのファイルを読み込み設定された変数を利用したいのですが、 どのようにすれば実現できますか?
そのようにすれば
そういうふうにプログラムすりゃいいでしょ
386 :
383 :2008/06/08(日) 19:14:47
すみません。 サンプルコードなど頂けませんでしょうか?
do "configs";
D'OH !
389 :
383 :2008/06/08(日) 19:19:09
reqireでできました。 阿呆しか答えてくれないので、聞く手間をかけずに調べれば良かったですね。
reqireなんてあったか?
391 :
383 :2008/06/08(日) 19:26:33
>>389 は私ではありません。
requireも試してみたのですが、変数の値が継承されないようで
うまくできませんでした。
>>387 ありがとうございます。
試してみたのですが、requireと同じように変数の値が継承されません。
doと言うものを調べたのですが、while文のdoしかなかなか見付からず
使い方が悪いのかも知れません。
すみませんが詳しく教えて頂けるとありがたいです。
まず自分で調べる手間をかけずにいきなり聞くという方法で何か学ぼうとするのもなんだかなあ…。 何かを知ろう学ぼうとするなら知る学ぶ為の正しい手段を取るべきだと思うけどなあ…。
何ができないと言っているのかがわからない
1行ずつ読み込んでdoじゃだめなわけ?
doはファイル名を引数に取るわけだが
397 :
デフォルトの名無しさん :2008/06/08(日) 22:03:27
open FILE, "unko.pl"; read FILE, my $unko, -s FILE; close FILE; eval $unko;
それならdoでいいだろ。
関係ないけど do-dai っていい曲だよね
400 :
デフォルトの名無しさん :2008/06/09(月) 01:10:43
WinXP、perl5.8.8、でPerl/Tkからボタンを押した時にthreadsを使ってバックグラウンド処理をしようと考えています。 バックグラウンド処理そのものは最後まで実行されますが、終了同期を取ろうとjoinを呼び出した時に、クラッシュして更に、Free from wrong pool during global… となります。 これを回避出来た猛者はいますか?
子プロセスから親プロセスのTkウィジェットにアクセスするとactiveperlが落ちてしまいます。 $top = MainWindow->new(); $frame1=$top->Frame(-height=>25)->pack(-side=>top,-fill=>'x',-expand=>'no'); $listbox1 = $frame1->Scrolled('Listbox',-scrollbars=>'osoe')->pack(-fill=>'both',-expand=>'yes'); $listbox1_ref = \$listbox1; if ($pid = fork()) { MainLoop; } else { &refresh($listbox1_ref); } sub refresh { my $listbox1_ref = shift; $$listbox1_ref->delete(0,'end'); opendir(DIR,'mail/'); @file = sort readdir(DIR); @file = grep(!/^\.\.|^\./,@file); foreach(@file) { my $time = localtime((stat "mail/$_")[9]); $$listbox1_ref->insert('end',$time); } } ログには Free to wrong pool 1ec5020 not 274dc8 at C:/Perl/site/lib/Tk.pm line 250. と出て終わってるようです。refreshの処理中に落ちてるみたいです。 ググったところ、同じ症状の方もいるようですがこの場合の解決策が見つかりませんでした。 子プロセスから親プロセスのウィジェットにはアクセスできないのでしょうか?ご教授ください。OSはWinXP SP2です。
改行が多すぎると怒られたので 色々はしょったら読みづらくなりました。 大変申し訳ないです。。
403 :
デフォルトの名無しさん :2008/06/09(月) 11:00:13
,. -ー冖'⌒'ー-、 ,ノ \ / ,r‐へへく⌒'¬、 ヽ {ノ へ.._、 ,,/~` 〉 } ,r=-、 /ク ̄`y'¨Y´ ̄ヽ―}j=く /,ミ=/ ノ /ル'>-〈_ュ`ー‐' リ,イ} 〃 / / _勺 ミ;;∵r;==、、∴'∵; シ 〃 / ,/ └' ノ \ こ¨` ノ{ー--、〃__/ 人__/ー┬ 个-、__,,.. ‐'´ 〃`ァーァー\ . / |/ |::::::|、 〃 /:::::/ ヽ / | |::::::|\、_________/' /:::::/〃
405 :
383 :2008/06/09(月) 11:24:22
すみません。私の書き込みが悪いとおもうので、再度書き込ませていただきます。 -- define.pl ------ my $hoge = "hoge"; -- body.pl ------ do "define.pl"; print $hoge; というファイルがあったとしても、body.plでdefine.plの変数が使えません。 どのようにすれば、他のファイルの変数を使えるようになりますか?
myしてやがる……
408 :
デフォルトの名無しさん :2008/06/09(月) 12:31:41
いぢわるしねいで、ちゃんと教えてやれよ。 my じゃなく、 our で宣言しろって事だよ。
409 :
383 :2008/06/09(月) 13:03:46
そんなのがあったのですね・・。 簡単に本を読んだのですが、myとlocalがあってmyを普通使う。localはあまり使わない。 という説明でした・・。 リャマ本というのを簡単に確認したのですが。ourって載ってます? 見つけられなかったのですが。
410 :
383 :2008/06/09(月) 13:04:12
お礼を言い忘れました。 お手数をおかけしてすみませんでした。 ありがとうございました。
最初から405かいときゃ無駄なレスしなくていいのに jこれだから小出しするやつはうぜぇ
413 :
273 :2008/06/09(月) 13:41:12
>>273 自己レス
いろいろと遠回りしたけど、ReadKey.pm入れ直しで
スンナリ解決しました。
ハァ・・・、なんですぐにやらなかったのか。
自己嫌悪だわ。
何時間費やしとんねん!
思うんだけど,この業界の人って,自分で調べたことに対して疑問を抱いた!みたいな 感じでブログとかに書いておくと,すげえ補足を書いてくれたりするよね。 俺はそういうところが好きだ。
416 :
デフォルトの名無しさん :2008/06/09(月) 13:48:00
質問です。Perlでクラスを使ってみたいのですが どのように書けばいいのでしょうか? 知らない用語ばかり出てきて、さっぱり答えにたどり着きません。。 例としてPHP版で書きます。これと同等の機能をPerlで書いてください。 お願いします。 class Hoge { private $var1 = 'A'; function var1() { return $this->var1; } function getValue() { return 1; } } class Hage extends Hoge { function getValue() { return 2; } } $hogehoge = new Hoge(); print $hogehoge->getValue(); $hagehage = new Hage(); print $hagehage->getValue();
#!/usr/bin/perl use strict; use warnings; { package Hoge; sub new { my $class = shift; my $self = {var1 => "A"}; bless $self, $class; return $self; } sub var1 { my $self = shift; return $self->{var1}; } sub getValue { my $self = shift; return 1; } } { package Hage; use base qw(Hoge); sub getValue { my $self = shift; return 2; } } my $hogehoge = Hoge->new(); print $hogehoge->getValue(), "\n"; my $hagehage = Hage->new(); print $hagehage->getValue(), "\n";
./にローカルインストールしたモジュールを使うことができません。
使おうとしているものはCurses.pm
http://search.cpan.org/src/WPS/Curses-1.06/Curses.pm です。もしよろしければご教授ください。
$ ls
Curses.pm* test.pl*
$ cat test.pl
#!perl
unshift @INC, ".";
use Curses;
exit;
$ perl -w test.pl
Can't locate loadable object for module Curses in @INC (@INC contains: 略 .) at test.pl line 4
Compilation failed in require at test.pl line 4.
BEGIN failed--compilation aborted at test.pl line 4.
$
420 :
デフォルトの名無しさん :2008/06/09(月) 15:48:35
use lib '.';
421 :
デフォルトの名無しさん :2008/06/09(月) 15:54:07
ba5.txtには以下になってます。 4131048 4131053 x x 4850328 x x x x 3870357 3870369 x x 4131038 4131045 x x x この場合にxの行を一番最後の行の数値に置き換えたい場合 perlだとどのようにすればいいんでしょうか。 シェルでやろうとしたんですけどシェルだとちょっと難しいみたいなので perlでやりたいと思ってます。誰かいいスクリプトを教えて下さい。 宜しくお願いします。
>>420 use lib '.'やuse lib qw(.)を試してはいるんですが、
>>419 と同じエラーが出てしまいます。
また、use Curses;をuse ::Curses;として実行すると、
>>419 のCompilation failed in require at test.pl line 4.が消え、
Can't locate loadable object for module CursesもCan't locate /Curses.pmと表記が変わります。
>>419 本当にCurcesモジュールをインストールしたのか?
Curses.pmをコピーしただけじゃないのか?
>>417 ありがとうございます。
継承するときは、
use base qw(Hoge);
なんて書くんですね。
sub newってなんなんでしょう?
なんでそんな関数が必要なのですか?
>>423 >コピーしただけ
はい。アクセス権の関係でインストールが出来ないので、
test.plと同じディレクトリにCurses.pmを配置し利用したいと思っています。
>>425 だから、Cursesモジュールは、C言語で書かれたバイナリがメインで、
Curses.pmはそのインターフェイスでしかない。
ちゃんとコンパイルしてインストールしないとだめ。
エラーメッセージにある "loadable object" っていうのがそれ。
アクセス権の関係ってどういうこと? インストール過程で、
インストール先を指定できるぞ。
コンパイラも使えないのか?
>>421 聊かエスパーぎみにレス。↓こういう事がしたいのか?
$ perl -pe '$_=$t if/^x/; $t=$_' ba5.txt
4131048
4131053
4131053
4131053
4850328
4850328
4850328
4850328
4850328
3870357
3870369
3870369
3870369
4131038
4131045
4131045
4131045
4131045
429 :
421 :2008/06/09(月) 17:16:09
>>428 さん
そのとおりです!
ありがとうございます!
>>426 ありがとうございます。何か大きな勘違いをしていたようです。
Cの方でcurses/ncursesを使っていたので、システム上にcurses環境があると救いようの無いいい加減な誤認があり、
また、@INCサーチパス上にCurses.pmを置くことが出来ないのでアクセス権という的外れも甚だしい話をしてしまいました。
現在make中です。今のところエラーは吐いていません。
wget
http://search.cpan.org/CPAN/authors/id/G/GI/GIRAFFED/Curses-1.23.tgz tar xvf Curses-1.23.tgz
cd Curses-1.23
#Makefileの生成
perl Makefile.PL GEN PANELS MENUS FORMS
#コンパイル
make
>>427 コンストラクタなんですか?
普通、コンストラクタは必要がある場合を除いて
書かないと思うのですが?
書かないとまずいですか?
釣れますか?
>>427 初心者には perltoot を読むのを薦めるよりも
perlboot を読むのを薦めた方が良いと思うよ
なんとなく読む気が無さそうな気配ではあるけども
5.8 なら以前どこかで perlboot の邦訳も見掛けたた気がするけど
>>428 すげー。そういう意味だったのか。
そこまで読めなかったよ。
5.005の頃、よくXS書いてたんだけど その後、Perlはワンライナーでしか使わなくなってしまった。 その頃のXSの知識ってまだ使えるのかな。
おや、なんだかどこかで見たような……。
438 :
デフォルトの名無しさん :2008/06/10(火) 11:24:14
マルチ死ねよwwwwwwwwww
HTML::FillInForm を使用しているのですが、出力されるhtmlから DOCTYPE 宣言が消えてしまいます。 対処法がありましたら教えて下さい。
440 :
439 :2008/06/10(火) 13:58:23
441 :
439 :2008/06/10(火) 14:05:33
>>440 × sub declation {
○ sub declaration {
ロード済みのサブルーチンと同じpackageかつ同じ名前のサブルーチンを含む外部plファイルを requireすると、後の内容で上書きされてしまいますが、元のサブルーチンを壊さないですむ 方法はないでしょうか。
443 :
デフォルトの名無しさん :2008/06/11(水) 18:07:18
皆さん、エスパーでよろ。 意図した挙動にならず、どこが問題かのきっかけも掴めずにかなり時間をかけてしまったが、 ようやくやりたいこと出来た。が、どうにも腑に落ちない。 DB(mysql)からデータとってきて、Scraperに渡して・・・と、こんな感じで組んでいたんだけど、 レコード数は3とします。 パターン1------------------------------------ $rows = $sth->rows; print "hajimari"; while(my $ref=$sth->fetchrow_hashref()){ $scraper->scrape($ref->{url}); print "roop dayo"; } print "owari"; このような感じでやっていたんだが、ループが1回しか回らない!?なんで? てなことで、webで情報あさったり、モジュールのソース眺めてもわからんし。
444 :
デフォルトの名無しさん :2008/06/11(水) 18:07:56
パターン2------------------------------------ $rows = $sth->rows; print "hajimari"; while(my $ref=$sth->fetchrow_hashref()){ print "roop dayo"; } print "owari"; と、Scraperになげなかったら、ちゃんと3回ループするんだよね。 でScraperでこけてんのかと思いきや、これも特に見当たんない。 問題なさそうだ・・・。
445 :
デフォルトの名無しさん :2008/06/11(水) 18:08:25
パターン3------------------------------------ $rows = $sth->rows; print "hajimari"; $i = 0; while(my $ref=$sth->fetchrow_hashref()){ $url[$z] = $ref->{url}; $i++; } for($z = 0;$z < $rows;$z++){ $scraper->scrape($url[$z]); } print "owari"; ちょいと思うところがあり、一旦配列にほりこんでみる・・・。 キター!!!3回まわったじゃんか! ふむ、思うところというのは、Scraperでこけないでループ1週目は ちゃんとループしているということ。 で、結局ちゃんとした原因が解ってないんだけど、メモリ制限とか あるのかな? アドバイス下さい。 (もしかしたら、CGIまわりの問題?) OS:FreeBSD Perl:5.8.3
デバッグしろよ
またきたのか
Dump吐いてみたら?
内部状態をインスペクトしたら
printf だ! printf を挟め!
if(!$hoge->{'hoged'}){ $hoge->{'hoged'} = []; } push(@{$hoge->{'hoged'}}, $hoging); これをスマートに書く方法ありませんか? ちなみに$hogingは2箇所以上に書くなら一時変数必要です。
452 :
デフォルトの名無しさん :2008/06/11(水) 19:04:06
少し説明がヘタだとは思いますが以下の処理をしたいです。お願いします。 ★処理の方法 行の先頭が [ の場合には、行の先頭が 20 の行の先頭にそれを加える 行の先頭が 空白の場合には一旦処理を終えて再度行の先頭の [ を読む 行の先頭に < がきた場合にはその処理を終えて再度行の先頭の [ を読む 結合した場合、その文字列の最後に必ず区切り文字としてタブを挟む ●処理前のabc.txt <100100> [1044]あいうえお 20321 1137 4850328 60 20321 1137 4850328 60 20321 1137 4850328 60 【合計1044】 [1047]かきくけこ 20319 1090 3870357 20319 1101 3870369 【合計1047】 [1051]さしすせそ 20328 1206 4131038 52 20328 1206 4131045 52 20328 1206 4131045 52 【合計1047】 【累計】 <100200> [1057]たちつてと 20328 1206 4131045 52 20328 1206 4131045 52
453 :
デフォルトの名無しさん :2008/06/11(水) 19:04:54
●処理後のabc.txt <100100> [1044]あいうえお 20321 1137 4850328 60 [1044]あいうえお 20321 1137 4850328 60 [1044]あいうえお 20321 1137 4850328 60 【合計1044】 [1047]かきくけこ 20319 1090 3870357 [1047]かきくけこ 20319 1101 3870369 【合計1047】 [1051]さしすせそ 20328 1206 4131038 52 [1051]さしすせそ 20328 1206 4131045 52 [1051]さしすせそ 20328 1206 4131045 52 【合計1047】 【累計】 <100200> [1057]たちつてと 20328 1206 4131045 52 [1057]たちつてと 20328 1206 4131045 52 どうかよろしくお願いします。
>>452 宿題を肩代わりするスレじゃないんだけど。
少しはperl文を書いてから出なおせ。
たしかに最近どうみても入門者向けの課題を回答させようとする連中が多いような?
>>451 push(@{$hoge->{'hoged'}}, $hoging);
宿題を人に頼む奴は大学やめればいい 学部生いわく。
458 :
443 :2008/06/11(水) 19:59:01
>>446-450 おしかりありがとう御座います。
デバックの仕方を勉強します。
Data::Dumper
で一目瞭然でした。
猛省します。
原因はなんだったのかって?恥ずかしすぎて・・・。
言いたくないんですけど。
ループ内で。。。、DBハンドルが・・・。
ごめんなさいごめんなさいごめんなさい
猛省します。
大事なことなので2回言いました。
460 :
454 :2008/06/12(木) 01:05:52
>>454 すみません。bashで書いていたんですけどbashだとうまくいきそうにないので
perlでお願いしてみました。すみません。bashのコードとしては以下のような感じです。
無茶苦茶なコードですみません。
#!/bin/bash
for iii in `cat abc.txt`
jjj=`sed -n '2p'`
do
if test [ $jjj = "^20" ]
then
paste "$jjj" "\t" "$iii" > ccc.txt
else
fi
done
bashでは無理っぽいのでスクリプトも途中までの処理しかしてないです。
perlで処理すればと思ってお願いにきました。perlはあまりよくわからないのでお願いします
461 :
452 :2008/06/12(木) 01:08:15
寝ぼけてて名前間違えました。すみません。
正直いうと、
>>452 に書いてある処理の一覧が全然論理的じゃないので俺には理解できない。
つまり、「一旦処理を終えて」と「その処理を終えて」がどう違うのかとか、
そもそも「その処理」や「その文字列」とは何なのかとか、
行の先頭が空白なのに行の先頭の[を読めとはどういうことなのかとか分からない。
処理前と処理後を見ればやりたいことはわかるが、 この程度、forと正規表現使えばどうにでもできるだろ あと、処理の方法はひどすぎる 自分でもう一回読んでみろ
>>460 俺は、「perl文を書いてから出なおせ」と書いた。bashなんか求めてねえ
お前さんがperlで書く気0なのに答えてやる義理なんざねえよ
「perlの知識0です。エスパーしてください。」
って質問には
>>428 で答えてしまって反省してんだよ
>>436 のリンク先でも読んでちったー自分で考えろ
>>442 require するときに退避しといて戻せばいいんじゃない?
{
local *hoge::f;
require ...
}
これだと$hoge::fも影響受けるのがやりすぎだというなら、
{
local *hoge::f = sub{};
require ...
}
466 :
デフォルトの名無しさん :2008/06/12(木) 11:03:25
オブジェクト指向までやらなくてもせめてモジュールにして Exporter使う方が楽だろうと思う。 読みたいファイルが他人が作ったもので中身も見たくない のならしょうがないけどな。
5.10にしたらsvkが動かなったんだけどsvk使ってる人はどうしてんの?
require や do でベタの perl を呼ぶ時に引数与えたい場合どうするのが普通なんでしょか? % ./hanage.pl -help を do とかを通してやりたい時、というです。 @ARGV=("-help"); # とかしておいて、 do "hanage.pl"; # とすると、実現できているようですけど、これが普通でしょか? また、ほかに方法があれば。
それで動いてるならいいじゃないの?何が不満なの?
471 :
469 :2008/06/13(金) 02:46:35
ひとつは、自信がないから。 ひとつは、ほかのやり方を知りたいから。"There's more than one way to do it" 目から鱗、鼻から悪魔、みたいな記述が perl ならまだある筈だと。 自分の例だと面白くも何ともないのでねぇ。
{ local @ARGV=("-help"); do "hanage.pl"; } とかでいいだろ。べつに@ARGVじゃなくてもいいけど。
…do EXPR は、goto文並みにobsoleteな感じがするんだが、皆さん使うの? require EXPR ですら、perl4的でどうしても避けられない場合にのみ嫌々使うんだけど
すみません。ものすごい基本的なこともか知れませんが質問させて下さい。 @listに複数行に,で区切られた5つのデータがあるとします。 my $cnt = 0; foreach( @list){ @list2[$cnt] = split( /,/, $_); $cnt++; } というのを考えたのですが、 Use of implicit split to @_ is deprecated どのようにすればいいのでしょうか?
>>474 @list2[$cnt] = @_ = split( /,/, $_);
475は無し。何も考えずに書き込んだ。
>>473 #--- config.file ---
my $dir = '/path/to/base/dir';
{
foo => 1,
bar => [ 2..5 ],
baz => "$dir/extra.file",
};
#---
なんて設定ファイルを作って
$conf = do '/path/to/config.file';
で読むという手抜き実装はよくする。
設定ファイルを Perl で書けるのが柔軟で楽。
>>473 useだとコンパイル時に読み込まれちゃうから
動的に読み込むファイル決める場合は
"use $file;"するかdo "$file"するくらいしかないじゃん
前者よりはdoのほうが素直じゃね?
>>480 動的に use したいだけなら require の方がもっと素直だね。
>>479 ,
>>480 レスthx.
config file だったらYAMLとかそっち使っちゃってるw
480の方は状況があまり想像出来ん。Storable知る前だったら
Data::Dumperの出力云々で使ったかもしれんが…。
俺に機会が無いだけなのねw
あ。ちなみにData::Dumperの動的処理の時も(しぶしぶ)require使ってた。 481氏の意見と同じ感覚。
CSVファイルがありこれをソートしたいのですが、 3番目の要素でソートしたりできませんか?
>>484 perlを使うよりsortコマンドのほうが早そうだけど?
CSVの扱いはPerl向きじゃない気がする。
エクセルでやれば?w
Pythonだとこんな感じ import sys, csv from itertools import imap from operator import itemgetter writer = csv.writer(sys.stdout) for row in sorted(csv.reader(sys.stdin), key=itemgetter(2)): writer.writerow(row)
ああimapとかimportする必要ねえな 無視して
なんでもデリミタをコロンにしてたらUNIX病だと怒られた
あれ?PerlにもCVS用のモジュールがあったような?
そしてSJISでハマるに一票。pythonも同じと思うが。
基本すぎてわらけるかもしれないけど、教えてください。 関数の引数の扱いがよくわかりません。 たとえば、 sub test{ # $_[0] == "test"; # $_[1] == "test2"; } &test( "test", "test2"); となるとおもうのですが、 @test = ( "test", "test2"); &test( "test", @test); としたばあい、引数はどうなるのでしょうか? 色々と試してみたのですが、 &test( @test); としたばあいは、 @_ == @test; だということはわかったのですが・・。 (もし違っていたら指摘していただけるとありがたいです。
perl -F',' -lane 'push @dat, [ @F, $_] ;}{ print $_->[-1] for sort {$a->[2] <=> $b->[2]} @dat; ' FILE sort -k3 -t, -n < FILE
require がうまくできません。 上記の質問を参考に、 test.cgi --- require './hoge.pl'; とかいて、 hoge.pl --- our $test = "hogee"; 1; とかいているのですが、 perl test.cgi すると、$testは読めていないようです。 ながに悪いでしょうか?
>>495 マニュアルを見ずに仕様を突き止めるゲームでも開催されてるの?
>>498 「$testは読めていないようです。」の「ようです」に隠された何か。
>>492 そうなのか。不治の病にかかってしまった。
myにすればいいんだよ
>>474 splitをスカラコンテクストで使ってはいけない。
$input = <>; というコードをwindows上で実行し入力待ちの状態でウィンドウ右上の×印を 押すと「すぐに終了」のダイアログが出てきてしまいます。 入力待ちの状態では$SIG{'QUIT'}をキャッチすることが出来ません。 Term::ReadLine等も試しましたが挙動は同じでした。 入力待ちの状態でも正常終了するようにすることは出来ないでしょうか。
Ctrl + C ??
>>504 自前でwindow開かないと無理と思われ。
多次元配列があるのですが、2次元目のある要素を元に1次元目をソートさせることはできませんか?
すみません。 簡単なサンプルでいいんでコードを書いて頂けませんか?
>>509 ググれば例などいくらでも出てくるんだが?
perl -MData::Dumper -le 'print Dumper sort { $a->[1] <=> $b->[1] } ( [2,3],[3,2] ) ;'
$VAR1 = [ 3, 2 ];
$VAR2 = [ 2, 3 ];
511 :
デフォルトの名無しさん :2008/06/16(月) 08:14:00
Perlでファイルの中の指定した文字列(正規表現".*hoge$"等)にマッチする行を 削除したいのですが、どうすれば良いでしょうか?
>>511 #!C:/perl/bin/perl
open(IN,"example.log");
while(<IN>){
if($_ =~ /hoge/){ $line .= "\n"; }
else{ $line .= "$_\n"; }
}
close(IN);
open(OUT,">exmple.cgi");
print OUT $line;
close(OUT);
print"Content-type:text/html\n\n";
print "消去完了";
みたいな感じですか?
Perlコーディング初心者質問スレ Part 57
http://pc11.2ch.net/test/read.cgi/php/1203935151/l50
514 :
デフォルトの名無しさん :2008/06/16(月) 10:18:02
111 222 333 444 555 666 というようなファイルがあったとして(数字は仮定です)3行目の行の 先頭にtabを2つ入れたい場合、どのようにすればいいのでしょうか。
くだすれ池
>>514 ……
行数を数えながら一行ずつ読み込むループにして
if 3行目 then
先頭にtabを2つ入れる
読み込んだ行を出力する
という中身を回せばいいよ。
変数の中の文字列の頭のスペースを取り除きたいのですが、 どのようなほうほうがありますか?
>519 正規表現使う典型ケースです
質問です。 HTML数値エンティティを文字に変換する際にはどうすればよいでしょうか。 下記の通りに実行したのですがうまくいきません (-ÿしか対応していない?) #!/usr/bin/perl use HTML::Entities::Numbered; $str='あいうえお'; print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される
525 :
524 :2008/06/18(水) 01:12:01
$str='&#x3042;&#x3044;&#x3046;&#x3048;&#x304A;'; ですorz
>>524 > print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される
いや、期待するなよ。
そのあたりに踏み入ったことはないのだが、マニュアルを見る限り HTML::Entities::decode を使うのではないか?
528 :
デフォルトの名無しさん :2008/06/18(水) 12:04:39
すんごい初歩的な質問で申し訳ないのですが、 Perlやってる友達がお前こんなのもできないだろと自慢してくるので、明日までにこれをやらないとまたバカにされるのですが、 プログラム自体やったことがなく意味不明すぎてよくわかりません。。誰かもしよかったら教えてください。 キーボードから整数値$aの値を入力してEnterを押し、 続けて$bの値を入力してEnterを押すと、 $aを 3 倍した値と、$bを 8 倍した値の和 を計算して$cに代入し, $cの値を画面に出力するプログラム 結果は print "$cn"; の形で出力する この結果の出力以外の画面出力はしないこと.
530 :
デフォルトの名無しさん :2008/06/18(水) 12:14:12
>529 というか、その友達から出された問題なんです。
宿題だろ・・・
それが出来たところで他の事聞かれてあぼんだな
「1/10の確率」 を表現するのに、これ↓はありなのか? return 0 if rand(1000) > 100;
あり得ないという根拠は?
>>533 randが正規乱数だと仮定するならありだろ。
正規乱数だと仮定するならなしだろ randが一様乱数を吐くのならありかもしれんが
538 :
デフォルトの名無しさん :2008/06/18(水) 14:25:04
綺麗な記述を勉強したいです。 どっかで配布されてる非常に綺麗で整理された記述を教えてください。 あまりにいっぱい配布されすぎててチェックできません。
>>538 man perlstyle
つーか、好きにしろ
>>538 perl medicとかは偏ってはいるけど
ポリシーとしてはまあ参考になるかもしれん
買うまでの事は無い本なので図書館で探せ
541 :
524 :2008/06/18(水) 21:54:54
>>527 HTML::Entities::decode で無事に出来ました
今後はマニュアルをしっかり読みますm(_ _)m
ありがとうございました
>538 Plagger読んどけ
544 :
デフォルトの名無しさん :2008/06/18(水) 23:17:04
こっそり書いてみる。意味は教えないよ perl -e 'print <STDIN>*3+<STDIN>*8,"\n"'
$cに代入してないじゃん
>>528 544とは別人だけど。
perl -e '$c=<>*8+<>*3;print"$c\n";'
また、次の問題を出されるだろうから、がんばって。
>>546 > また、次の問題を出されるだろうから、がんばって。
なにを?
腹筋と腕立て
>>547 生きるべきか、死ぬべきか。
もちろん死ぬべきだけど。
0 xor die;
to be to be ten made to be
「10%の確率」を表現する場合、 自分の考えだと、 return 1 if rand(1000) < 100 この方が人間がソースを読んだときに理解しやすいのだが、 もしかして、前述のは、 「90%の確率でボツにする」 って意味なのかな。
それか、 (1)rand(100)で、0から99.9999までの数値を生成する。 (2)intで、小数点以下を切り捨てて、整数にする。 (3)できた数字に1を足す (4)1から100までの数字ができる (5)その中で、1から10までの範囲に入ったらtrueにする ↑こうしたほうが、人間が読んでわかりやすくて なおかつ正確だと思う。
質問 アンパサンド(&)がくっついてる文字列は 基本的にサブルーチンを呼び出している、って 考えていいの? 他にアンパサンド&が使われる局面は &&でandって意味、っていうケースしか ないみたいだけど。 他にもあるの?
マニュアルを見ずに仕様を突き止めるゲームでも開催されてるの?
逆引きできる本が無いと見つけにくいのかな ぐぐっても検索できないし ビット演算子で&てあるね
質問 サブルーチンの中で、 my を使わずに変数を宣言すると、 それは基本的に必ず自動的に全部 グローバル変数となってしまうの?
「サブルーチンを呼び出す時は&を使います」 て解説は普通にどんな参考書にも載ってるけど、逆に 「&をソースコード中に発見したら、それは どんな処理をしている可能性がありますか? 考えられる可能性を全部あげなさい」 って質問は、パールのことを熟知してる人しか 答えられない。
宿題だ宿題。 ひとつの宿題に答えると、30の宿題が投入されます。 そして、Perlで良い成績を取ったPerlを知らないバカが業界にやってきます。
ソースコード中に&を発見した場合、 (1)サブルーチンを呼び出している (2)論理和andの意味である (3)ビット演算をしている 以上の3つの可能性があり、 そのうちどれに該当するかは、 それを書いたププログラマーに メールで質問するか、自分で 空気を読んで直感で判断する。 こうですか?わかりません
>>2 に挙げた本をどれか一冊通読してから質問してほしいな。
質問するほうも答える方も時間の無駄だ。
質問 myってサブルーチン内でしか宣言したらだめなの? もしメインルーチン内でmyを宣言したらどうなるの? エラーになるの?
質問するより実行してみるほうが早いという考えに至らないのは何故なのか?
クリティカルな業界にいると なかなかそういう発想にはならないんだよ 脳外科手術とか、 飛行機の操縦とか、 宇宙船の建設とか。
クリティカルな疑問を2chで質問して解決できるのはどういう業界だ?
>>568 索引で&や&&はすぐ探せると思うけど、$&を探すのは結構大変だと思います。
>>568 著者がバカだと載ってない。
ていうか、プログラマーって
「一度読んだら記憶する」
って記憶力が高い人が多いけど、
「自分は記憶してるから他人も記憶してるだろう」
っていう、勝手な性格な人が多い。
まともなプログラマの多くは初心者向けの解説本を書けない。 それゆえ、初心者向けの解説本のほとんどはまともでないプログラマか、 そもそもプログラマでもないようなライターが書いていて、往々にして不正確である。
デバッグモードで入力コマンドのフォントに色がつきます この色は変更できるのでしょうか?
それ、 rand(100) < 10 でいいやん。
>>554 それ、 rand(100) < 10 でいいやん。
なんで100と10なんだ?
576 :
デフォルトの名無しさん :2008/06/19(木) 16:11:54
>「自分は記憶してるから他人も記憶してるだろう」 >っていう、勝手な性格な人が多い 反面、言語仕様なんだから知ってて当たり前、 知らなかったら仕様くらい自分で調べろって風習もある
そんな未開の部族の奇習を押し付けられても困ります! だからセガガガでもはや人間ではなくなってしまった人々とかって 言われるんです! だいたい人間から遠い順にクラス分けして (1)0と1だけでプログラミングするヤツ (2)マシン語だけで (3)アセンブラで (4)Cで (5)VBで (6)perlで (7)HTMLで って階層になってると思う。 数字が多いほど人間。
>>574 これって
0から99.999999.....の数を生成して、
9.999999.....以下だったらtrueですよね。
本当に10%になってます?
>>578 実際にやってみると楽しめるんじゃないかな。
>>578 違うだろww9.999999.....未満www
582 :
デフォルトの名無しさん :2008/06/19(木) 16:40:11
>>570 > プログラマーって「一度読んだら記憶する」って記憶力が高い人が多い
間違い。別に記憶力はそんなに高くない。
限りある記憶力を、どう駆使すれば効率よく作業できるかを日々模索しているだけ。
わかりやすい例としては「根っこの知識と、調べ方」を身につけて、その領域の殆どを"事実上"カバーするとか。
> 「自分は記憶してるから他人も記憶してるだろう」
これはもっと間違い。
「真面目に勉強しているなら、記憶力を上手に駆使する技術を磨こうとするだろう」
が正解。
君の書き方は、とびっきり馬鹿でとびっきり怠惰なクソ野郎が、現状をどう曲解すれば
「自分は悪くない、周囲のプログラマが勝手な性格なだけ」
という方向に話を持って行けるか、を頑張ってこじつけた結果に過ぎないよ。
記憶力に限界があると思ってる奴は障害者の可能性が高い。 記憶するためには時間が必要で、時間は物理的な限界があるが。
揚げ足取りもいいけど、この流れにそういう方向の細かさを適用するなら、 その「障害者」の判断なんかもっと突っ込みの対象だと思うよ。 自爆かこわるい。
マニュアルを検索しましょう
>>575 べつにぃ、rand(10) < 1 でも、rand(3) < 0.3 でも何でもいいよ。好きにすればぁ。
お題が「10%の確率」だから、「100 分の 10」と考えるのが自然だろ?
>577 HTMLでプログラミングするやつは人間じゃないと思う。 あ、でも(1)よりは人間かもしれん。
どうでも良いが、なんでモマイラはそんなに日本好きなのだw 関連スレに算譜系が一つもないのは何故なんだwww
590 :
デフォルトの名無しさん :2008/06/19(木) 23:22:15
単なる言語仕様を自明の真理みたいに語る プログラマは割とよく見かける 「当たり前じゃん何言ってんの」的な。 >自分が知っているから他人も知ってい るだろう
$SIG{INT}にハンドラを登録して、ctrl+Cを送るとハンドラは動作してくれますが、違うターミナルから、kill関数でINTを送信すると、ハンドラがはたらかずに死んでしまいます。 どうしてでしょう?
プログラマは、作業環境などによってはコミュニケーションの 経験不足なんかもあるのかもしれんが、社会性が子供なのが一因かとも。
>>578 いいところに気がついたな。2進数が基本な大方のコンピュータの
擬似乱数発生器は大抵Nビットの整数を作るようになっているので
発生されうる数は2^N個だから、1回発生させた乱数がどの範囲に
あるかの判定だけでは絶対に1/10にはならない。
596 :
デフォルトの名無しさん :2008/06/20(金) 12:41:10
>594 kill 'INT',殺すプロセス番号 と送っています。 ちなみにプラットホームはWinXP、Perl5.8.0
> kill 'INT',殺すプロセス番号 こんな記法は誰から教わった? 闇討ちしてやれ。
>>595 なんかすごい人がきたな。
あなたはパーラーレベル14以上ですね?
あぁ、すまん。シグナル名でもOKなのか。 Xpは9と15しか送れないみたいだな。 C:\>kill -l SIGKILL(9) SIGTERM(15)
そんな事より犬夜叉と蟲師でも観ようぜ!
602 :
デフォルトの名無しさん :2008/06/20(金) 18:57:21
>600 マジ? そりゃ詐偽じゃない? 一言マニュアルに書いて欲しい…
>>602 5.8.1で修正入ってるよ。Changes5.8.1に以下のような記述がある。
[ 20572]
Subject: [PATCH] kill 'INT' doesn't work on Windows
From: Jan Dubois <
[email protected] >
Date: Fri, 08 Aug 2003 17:49:03 -0700
Message-ID: <
[email protected] >
ソース(win32/win32.c)見たけどSIGINTのときは
GenerateConsoleCtrlEvent(CTRL_C_EVENT,pid)
を使ってそれっぽく動くように改良したらしい。
605 :
デフォルトの名無しさん :2008/06/21(土) 04:39:05
sortって安定ソート? 不安定ソートだとしたら、そこそこ軽くて使いやすい安定ソートの方法は?
606 :
デフォルトの名無しさん :2008/06/21(土) 05:24:08
perlのソートはどんなんなってるか忘れたけど、 いろんな状況でかなり速いです。 変な順の入れ替えは起きないって記憶してるから安定だと思います。 全部あやふやな回答ですが信用率90%です。(俺の自己採点)
>>605 sortプラグマで切り替えられる。
perldoc sortでも読んどいてくれ。
>>608 perl5.8 以降ではデフォのsortアルゴリズムは mergesort 。perl5.6 系では quicksort。
で 5.8 系 mergesort は望もうが望むまいが stable(5.6 系がそうなのかは知らん)。
perlでバイナリファイル内の検索を行おうと思ってるんですが、 いちいちバイナリ=>文字列変換していると計算コストがかかってしまいます。 バイナリデータのままで比較することってできますか? たとえばバイナリデータで00の箇所を文字列変換しないで探せないかどうか。
611 :
デフォルトの名無しさん :2008/06/21(土) 10:16:47
例外処理のデバッグをしたくて、デバッガで $@ に値をセットして、 if($@){} のルートをとおそうとしています。 でも、$@ = error; などとしても、$@ は空のままでした。 $@ 変数に無理やり値をセットすることはできないのでしょうか?
perlのみで以下のスクリプトが書けますでしょうか? 例えば、料理のサイトに検索ボックスが有ったとして、そこに『カレー』と打てば カレーに関するレシピが出るという作りになっていたとします。 それを、perlのスクリプトを実行して、『カレー』のレシピが出で、連続して『肉じゃが』 と打てば肉じゃがのレシピが表示されるというようなスクリプトです。 一々、検索ボックスにマウスポインタを持っていかないで、コマンドプロンプトのみで 操作できると楽なんですが。
>>612 それができない言語がもしあるなら教えて欲しいもんです
614 :
デフォルトの名無しさん :2008/06/21(土) 12:16:10
>>610 "\x0"使えばいんじゃないの?
というか変換しないと探せないってどういう意味かよくわからない。
615 :
デフォルトの名無しさん :2008/06/21(土) 12:17:40
>>611 $errcode = @$;
としてからこっちの変数つかえばいんじゃないの?
あと error じゃなく "error" じゃないの?
>>610 > perlでバイナリファイル内の検索を行おうと思ってるんですが、
> いちいちバイナリ=>文字列変換していると計算コストがかかってしまいます。
バイナリ=>文字列変換なんて明示してやらせないぎり起きないだろう。
> バイナリデータのままで比較することってできますか?
できるよ。
>>613 「指定したURLを何かのブラウザで表示する」という機能が必要だから
出来ない言語もあるんじゃね?
>>617 勝手に条件を増やすなよ。
そんなことどこにも書いてないだろw
「GRID化されたOracle10gにネイティブ接続する」という機能が必要だから 出来ない言語もあるんじゃね?
>>618 料理のサイトで検索したレシピを表示する、っていうんだから、
単純に考えればそのサイトをブラウザで表示するってことだろ。
621 :
612 :2008/06/21(土) 16:42:37
何か色々とありがとうございます。 まだ勉強したての自分には難しそうですね。 感じとしては、スクリプトに<STDIN>
622 :
612 :2008/06/21(土) 16:47:56
失礼しました。途中で書き込んでしまいました。 感じとしては、スクリプト内に<STDIN>を書いておいて、実行時に 『カレー』と打ち込んだら、サイト内にある検索ボックスにその文字が 反映されて自動的に検索できないかと考えています。 連続して『肉じゃが』と打ったら今度はその文字が検索ボックスに反映 されて、自動的にページを表示するようなスクリプトを書きたいと考えています。
>>623 不愉快な思いをさせて申し訳ありませんでした。
AJAXって意味なのか?
626 :
611 :2008/06/21(土) 17:15:36
>>615 >$errcode = @$;
こんなやりかたがあるなんて知らなかったです。
これで、$@ に値をセットすることができるのでしょうか?
今度やってみます。
>>622 HTMLでフレーム作れば済みそうだ。
自前の入力欄と、レシピ表示のフレームで。
Javascriptでいつでも検索欄にフォーカスがくるようにすればいいんじゃないかな。
Windows環境でMath::Random::MTを使ったスクリプトを動かす必要があるのですけども、 ActivePerlとCygwinのPerlではどちらがお薦めでしょうか?
>>629 すべての実行端末に ActivePerl をインストールさせることが可能なら ActivePerl。
すべての実行端末に Cygwin 一式をインストールさせることが可能なら Cygwin。
インストールの簡単さなら ActivePerl やろ。クリックするだけやもん。 環境変数 PATH も設定してくれるし、拡張子の関連付けもやってくれるし。 モジュールの追加のみ ppm コマンドを叩かないといかんが。 C> ppm install Math-Random-MT
参考書読んだら#をハッシュと読めって書いてあるのだが、 本当にハッシュと読むのか。シャープじゃないのか。
>>632 シャープは♯であって#ではない。
#はハッシュ、またはナンバーサインと呼ぶ。
ちなみに日本語ではイゲタ
電話のボタンだったら、シャープとか米印って言われた方がしっくりくるな
まあNTTが最初にシャープと言い出したのと PC普及以前は身近で最も#を見かけるのが電話だったことから 日本ではシャープと呼ぶ慣習が定着してしまったんだろうな ちなみにアメリカの電話では似たような文脈でパウンドサインと呼ばれるが Wikipediaによると、それもローカルルールとのこと
639 :
デフォルトの名無しさん :2008/06/22(日) 22:17:44
>電話のボタンだったら、シャープとか米印って言われた方がしっくりくるな 電話の米印は#じゃないほうの記号だけどね。
プラットフォーム間の移植性に関する質問です。 100msec周期のインターバルタイマーが必要で、LinuxではTime::HiResの setitimerを使っているのですが、Windows XPのActivePerlではsetitimerが 使えないようで、代替手段が無いものか探しています。よろしくお願いします。
>>640 「使えない」の意味によって無駄なレスかもしれないけども、
もし「ppmに無い」という意味だったら、
Cコンパイラとnmakeを使ってCPAN経由でビルドしてみては?
>>611 use Data::Dumper;
eval { die "hoge"; };
print Dumper($@);
eval { die ["hoge"]; };
print Dumper($@);
>>641 setitimer が何なのかを把握した上で書き込みとかすればいいと思うよ。
無責任だと思わないかい?
そういう
>>643 のカキコも何の追加情報もないけどな
というかそもそも2chでそないなこと言ってもなあ…わざわざそんなん言わんとなんでもありでいいんじゃねえの
> そういう
>>643 のカキコも何の追加情報もないけどな
> というかそもそも2chでそないなこと言ってもなあ…わざわざそんなん言わんとなんでもありでいいんじゃねえの
というかそもそも2chでそないなこと言ってもなあ…わざわざそんなん言わんとなんでもありでいいんじゃねえの
>639 「 * や # のことを、それぞれ〜」 っていうフレーズが抜けているだけだろう
>>643 を2ちゃんねる用語に直すと 「ググレカス」 だな。
言い方を変えても、何も得ることが無い、非建設的な書き込みに変わりない。
> 言い方を変えても、何も得ることが無い、非建設的な書き込みに変わりない。 オマエモナーwww
649 :
611 :2008/06/23(月) 02:32:34
>>648 そうかそうか、自分の無意味さを認めたか。えらいぞー。
>>640 Cygwin 上なら ITIMER_REAL 限定でエミュレートされているようだけれども、ActivePerl 縛りが漢のチャレンジャースピリッツ。
細かい精度は気にするとハゲる(負け惜しみ)。
# Time::HiRes::usleep() version
use Time::HiRes qw(usleep);
my $interval = 100000;
while (1) {
usleep($interval);
print "Get's!\n";
}
# Time::HiRes::tv_interval() version
use Time::HiRes qw(tv_interval gettimeofday);
my $floating_interval = 0.1;
my $mark = [gettimeofday()];
while (1) {
if ( tv_interval($mark) > $floating_interval ) {
print "Get's!\n";
$mark = [gettimeofday()];
}
}
652 :
640 :2008/06/23(月) 09:27:28
>>641-650 私の説明不足で荒れてしまい、申し訳ありません。
>>651 ありがとうございます。どちらも動作することを確認しました。tv_intervalバージョンはCPU負荷が上がり
すぎるので、usleepバージョンの方がベターですね。
>>630-631 レスをありがとうございます。
Cygwinが敷居が高いらしいので、
とりあえずActivePerl5.10.0を入れてみようと思います。
0.1秒精度の alarm 相当が欲しいんじゃないのか? sleep でいいなら最初から select(undef,undef,undef,0.1) でいいだろう。
activeperlのダウンロードなんだけど、 参考にしているページでは、 5.8系と 5.6系とあって、 ほとんどのサーバーでは5.6系に対応しているので 5.6系をダウンロードしてください、 5.8系では対応してなくて動かない可能性があります、 と書いてあるのだが、実際activestateのページにいってみると、 なんと、5.6系は消えてしまって、 5.1系と、 5.8系の二つしか残っていないのだ。 この場合、どちらをダウンロードすればいいのだ?
>>655 5.1じゃなくて5.10な。とりあえず5.8で問題ない。
657 :
640 :2008/06/23(月) 20:52:13
>>654 タイマーイベントが取れるならそれがベストです。良い方法をご存知であればご教示下さい。
658 :
デフォルトの名無しさん :2008/06/23(月) 21:15:08
>>655 まず、その「参考にしているページ」とやらは参考にするな。
日本のサーバー屋は一時期Perl5.6同梱のLinuxを大量に設置したから、リプレースするのが面倒でそういう戯言を言う奴が多い。
Perlは基本的に(PHPと違って)バージョンアップによる互換性問題は少ない方だが、5.6系だけは鬼門というのが一般常識。
特にUNICODE関係※は痛いから、おとなしく5.8以降(今なら5.10)を使うべし。5.6を使うくらいなら、まだ5.005の方がまし。
それと、いまだに5.6を入れてるサーバー屋がいたら相手にしないこと。
※5.6の段階ではUNICODEとマルチスレッドは「実験的実装」とちゃんとアナウンスがあったから、5.6でUNICODEを使った奴がお馬鹿さんとも言う。
>>658 >5.8以降(今なら5.10)を使うべし
え?どっち?
安定動作なら5.8のが良いってDLページにかいてあるじゃん
混乱してきたww
>>655 用途は知らんが今からActivePerl使うなら5.8以降でないと色々ツライ目に合うかもしれん。5.6系以前は問題外だ。
5.10は使いたいモジュールのPPMが無かったりすると手間取るからな。
>>662 いまどき5.6なんて言ってるととほほでK.NTになっちまうぞ?
サーバにインスコしてあるバージョンに合わせんと意味無いだろ。 自宅のPCに 5.10 インスコしてデバッグしても、サーバが 5.6 だから動かないんじゃ 何のためのデバッグかわからんだろが。 まずは自分の使う予定のサーバを調べろ。
667 :
デフォルトの名無しさん :2008/06/24(火) 00:02:11
自宅PCに5.6インスコしたところで、腐れ鯖屋はどうせ拡張モジュールのインスコ許可してなかったり、奇妙キテレツな鯖設定してたり、自宅PCと鯖屋のapache(httpd)設定およびライブラリ関係が同一の筈が無いんだから同じ事だろ 64ビットマシンに32ビットOSをインスコして料金だけ64ビットマシン級のボッタクリをする鯖屋なんぞ、それこそ腐るほどあるぞ perlのバージョンだけ何が何でも5.6に執着する意味がわからん
こんな風だからいまだにPerlのCGI関係じゃjcode.plとかがのさばってんのな
5.6がベストとかどこで刷り込まれたんだよ jcode.pl最強厨と同じだろ
おとなしく Moooooooooooooose とかいっとけばいいじゃん。
>>655 の言う 「参考にしているページ」 とやらが、いったい何処の何なのか、それが不明だな。
文書を読む際は、それが書かれた年月日を考慮すること。
日付の無い文書は信用しないこと。
手元で 5.10.0 を愛用しつつ、貸鯖で走らせにゃならん時だけ 5.005 向けにバックポートしている俺はマゾ。
以前サイトを移転した時に 貸鯖はわざわざ5.8系を探して使ってたので知らなかったが まだそんなに5.6系以下のとこが多いのか…
infoseek とか wakwak とか
よくわかりませんが、5.8と5.6二つインストールされてます。俺は。 ところが、5.6で動かしたことありません。俺。
>>676 おまいは、>658の説教を小一時間聞かなければならない刑に処す
まあ5.6で貸鯖がバンバン立った時期って某所や某所で汚いPerlのCGIが大量に出回り始めた時期だよな? そういうレガシーコードで動いてる掲示板とか日記とかがまだ大量にあるんだろうな
>>678 5.6.0 のリリースは2000年。matt's、レスキュー、KENTがPerl4ベースの
汚いスクリプトを撒き散らし始めたのは90年代前半から。
汚い汚い言っててもしょうがないので、モダンなperlを紹介していけばいい。 Moooooooooooooooooooooooooose
put @cards S1; って書いてて、 「おかしーなー動かない動かない」 ってうめいてたら、教科書よくよんだら、 putじゃなくてpushじゃん。 なんだよputって。
くやしかった、らおまいが「美しいコード」を一般公開してみろやwww ま、どうせ出来んだろうけどね。口ばっかり達者で何一つ行動できないおまいさんにはな。
このすれのどこかに > 「美しいコード」 ってかいてある?
>>681 5.10じゃCのputみたいなsayもあるじゃないかw
「Cのput」
思わず笑っちまったよ。 プッっと
よし、最近perlの勉強している俺が晒してみる。 添削よろしく 長すぎたので二つに分割しました。 begin-base64 644 hanoi.pl IyEvdXNyL2Jpbi9wZXJsIC13CnVzZSBzdHJpY3Q7CnVzZSBjb25zdGFudCBUT1dFUk1BWCA9PiA4 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg5YaG55uk5pyA5aSn5pWwCm15 ICRkaXNrID0gIiI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgZGlza+aemuaVsOOBr+aWh+Wtl+WIlwoKZG8geyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyDlhobnm6TmlbDlhaXlipvjg6vj g7zjg5cKICAgIHByaW50ICLlhobnm6Tjga7mnprmlbDjga8xfiIsIFRPV0VSTUFYLCAi44G+44Gn 44CCOiAiOwogICAgY2hvbXAoJGRpc2sgPSBzY2FsYXIoPFNURElOPikpCn0gdW50aWwgKCRkaXNr ID1+IG0vXltcZCtdJC8gJiYgKCRkaXNrIDw9IFRPV0VSTUFYICYmICRkaXNrID4gMCkpOwoKbXkg JXBlZyA9IG1hcCB7JF8gPT4ge1NUQUNLID0+IFtdfX0gJ0EnLi4nQyc7ICAgICAgICAgICAgICAg ICAgIyDjgrnjgr/jg4Pjgq/jga7liJ3mnJ/ljJYKZm9yIChyZXZlcnNlIDEuLiRkaXNrKSB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyDloZRB44GrZGlza+OBruaemuaV sOWIhgogICAgcHVzaCBAeyRwZWd7J0EnfS0+e1NUQUNLfX0sICRfICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIOWIneacn+WApOOCkuWFpeOCjOOCiwp9CiZkaXNwbGF5OyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg5Yid5pyf55S76Z2i 6KGo56S6Cm15ICRjb3VudGRpc2sgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMg6Kmm6KGM5Zue5pWw44Gu5Yid5pyf5YyWCiZIYW5vaSgkZGlzaywgJ0En LCAnQicsICdDJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg44OP44OO44Kk 44G4R28KcHJpbnQgJGNvdW50ZGlzaywgIuWbnuOBp+e1guS6huOBl+OBvuOBl+OBn+OAglxuIjsK ZXhpdDsKCnN1YiBIYW5vaSB7CiAgICBteSAoJGQsICRBLCAkQiwgJEMpID0gQF87CgogICAgaWYg KCRkID4gMCkgewogICAgICAgICZIYW5vaSgkZCAtIDEsICRBLCAkQywgJEIpOwogICAgICAgIHBy
>>687 つづき2
aW50ICRkLCAi55Wq44Gu5YaG55uk44KSIiwgJEEsICLjgYvjgokiLCAkQywgIuOBuOenu+WLleOB
meOCi1xuIjsKICAgICAgICBwdXNoIEB7JHBlZ3skQ30tPntTVEFDS319LCBwb3AgQHskcGVneyRB
fS0+e1NUQUNLfX07ICAgIyDjgrnjgr/jg4Pjgq/np7vli5UKICAgICAgICAmZGlzcGxheTsKICAg
ICAgICAkY291bnRkaXNrKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyDoqabooYzlm57mlbDjgpLoqJjpjLIKICAgICAgICAmSGFub2koJGQgLSAxLCAkQiwgJEEs
ICRDKQogICAgfQp9CnN1YiBkaXNwbGF5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMg56e75YuV5o6o56e744KS6KGo56S6CiAgICB1c2UgY29uc3Rh
bnQge0hMID0+IDEyLCBUMSA9PiA1LCBGSVQgPT4gMSwgQUREID0+IDJ9OyAgICAgICMg6KGo56S6
6Kq/56+A5a6a5pWwCiAgICB1c2UgY29uc3RhbnQgTklMVE9XRVIgPT4gKCcgJyB4IEhMIC4gJ3wn
IC4gJyAnIHggSEwpOyAgICAgICMg56m65aGUCiAgICBwcmludCBtYXAgKCgnICcgeCBITCAuICRf
IC4gJyAnIHggSEwpLCAnQScuLidDJyk7ICAgICAgICAgICMg5aGUQUJD44Oe44O844Kv6KGo56S6
CiAgICBwcmludCAiXG4iLCBOSUxUT1dFUiwgTklMVE9XRVIsIE5JTFRPV0VSLCAiXG4iOyAgICAg
ICAgICAgICMg5aGU5YWI56uv6KGo56S6CgogICAgZm9yIG15ICRkaCAocmV2ZXJzZSAxLi4kZGlz
aykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIOWGhuebpOaemuaVsOWIhuODq+ODvOOD
>>688 つづき3
lwogICAgICAgIGZvciAoJ0EnLi4nQycpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIEHjgYvjgolD44G+44Gn44K544K/44OD44Kv5qSc5p+7CiAgICAgICAgICAgIG5l
eHQgaWYgKCgkZGggPiBAeyRwZWd7JF99LT57U1RBQ0t9fSkgJiYgICAgICAgICAgICMg5YaG55uk
5p6a5pWw44Gv44K544K/44OD44Kv44KI44KK5aSn77yfCiAgICAgICAgICAgICAgICAgICAgKHBy
aW50IE5JTFRPV0VSKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICMg56m644Gu5YaG55uk44Gn
44GX44GfCiAgICAgICAgICAgIG15ICRkbiA9ICRwZWd7JF99LT57U1RBQ0t9WyRkaCAtIEZJVF07
ICAgICAgICAgICAgICMg5YaG55uk55Wq5Y+344KS5Y+W44KK5Ye644GZCiAgICAgICAgICAgIHBy
aW50ICcgJyB4IChITCAtICgkZG4gKyBGSVQpKSwgICAgICAgICAgICAgICAgICAgICMgICAgICDl
t6bnqbrnmb0KICAgICAgICAgICAgICAgICAgJGRuIHggKFQxICsgKCRkbiAtIEZJVCkgKiBBREQp
LCAgICAgICAgICAgICAgIyAgICAgIOWGhuebpOeVquWPtwogICAgICAgICAgICAgICAgICAnICcg
eCAoSEwgLSAoJGRuICsgRklUKSkgICAgICAgICAgICAgICAgICAgICAjICAgICAg5Y+z56m655m9
CiAgICAgICAgfSBwcmludCAiXG4iCiAgICB9Cn0KX19FTkRfXwojICAgICBlbmpveSBoYW5vaSAg
ICAgICAgIHBlcmwsIHY1LjguNgojICAgICAgICAgIHwgICAgICAgICAgIFRoZSBUb3dlcnMgT2Yg
SGFub2kKIyAgICAgICAgKioqKiogICAgICAgICAgICAgICBEc2lwbGF5CiMgICAgICAgKioqKioq
KiAgICAgICAgQVNDSUkgR3JhcGggVG93ZXJzCiMgICAgICAqKioqKioqKiogICAgIAojICAgICAq
KioqKioqKioqKiAgICAgIEF1dGhvcjogWmlua2UgTW90bwojICAgICoqKioqKioqKioqKiogICAK
IyAgICoqKioqKioqKioqKioqKiAgU2F0IEp1biAyMSAyMDA4IDE6MTM6MzggQU0KIyAgKioqKioq
KioqKioqKioqKiogCiMgKioqKioqKioqKioqKioqKioqKg==
====
ごめん三つに分割しちゃったよ。改行多すぎるって プルグラムは、よくあるハノイの塔をperlで書いた物です。 厳しいご意見お待ちします。
>>683 汚い、汚いを連呼するキチガイがおるだろ!!!
とりあえずbase64を選んだセンスにでもつっこんでおくか
美しいコードを書いてみろよ、キチガイ
キチガイくんは、さぞかしご立派なコードを書いてるんだろ?
結局、口ばっかり達者で何一つ行動できないんだな、キチガイくんw
そういや弾も名指しで某Kを馬鹿にしてたな 弾に文句を言えないからといってこんなとこで暴れるなよ>K
>>687 まあ良いんでないの?
ハノイを見て思ったことだけど、
cgi系にひどいコードが多いのは、元々出力物自体が構造も
へったくれもないもんだったことが原因なんだろうな。
逆強制ギプスみたいなもん。
> そういや弾も名指しで某Kを馬鹿にしてたな permalink でくれ
699 :
687 :2008/06/25(水) 02:25:29
>>697 特に、手直しするような所は無いと受取ってよろしいのですね。
タワー表示部分くらいしか、いぢる所が無かったので、どうしても
ありがちなコードに成ってしまいました。
まだ、小さなスクリプトしか書けませんが、徐々に精進します。
評価をありがとございました。
で、キチガイ君は、どれほどご立派なコードが書けるんだい? みんな待ってるよ、早く、ご立派なコードを公開してくれるのをさwww さぁ早く。みんな待ってるんだよ。手元にたくさん在るんだろ?ご立派なコードが。 たくさん在りすぎて迷ってるのかい?
>>697 出力部分をモジュール化して、書き込みとかログ管理の部分もモジュール化してやれば
いいんだろうけど、そこまでやるほどのものかって言うと微妙なんだよな。
/ ドッカン / / ,,_ ドッカン ━━━━━'), )= ☆ゴガギーン ∧_∧ヽ\ / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ) 〉 〉_ _ ____ ∧_∧ ∠ おらっ!出てこい、キチガイ! / ⌒ ̄ / "'''"'| || (`∀´ ) \ おまいのご立派なコード晒せや! | | ̄l | |/ / \ \___________ . | | | | || | | /\ヽ | | .| | | へ//| | | | ( | .| ロ|ロ ゙!l''ヽ/,へ \|_ | | | | .lヽ \ | | ヽ\/ \_ / ( ) | .| 〉 .〉 | | | | / / / / | | 〈| | | / / / / | | || | | / / / / └──┴──┘ | |
この人大丈夫なんだろうか
後日、自分のレスを見てキチガイは自分だったと気が付くのかな
「Perlはじめの一歩」(カットシステム 豊沢 聡)って わかりやすいよねー
それで?
著者乙
2レスもするほど妬まなくても(^_^;
危うい自尊心
perlって死んだ言語なのに
今年に入ってから、3冊も
新書出てるんだよねー
でも漏れが調べた範囲内では、
>>705 が一番わかりやすいけど。
もうしばらくしたらperl6本がいっぱいでるよ
712 :
デフォルトの名無しさん :2008/06/27(金) 00:33:29
PHPって生きてる言語らしいけど 今年1月に出る筈だった5.3は風の噂にも聞かなくなったよねー その癖、4系絶滅宣言と同時に5.2系絶滅宣言も出しちゃったりして Zend社ロードマップ: 4系 → もー面倒みません>< 5.2系 → もうすぐ5.3出すからさっさと捨てな 6系 → いつ出るかって?知るかボケ! で?今PHPの旬のバージョンって何だっけ?
新しいのばっか追いかける必要は無いだろ。 インストールが趣味? よくいるよね、インストールしただけ満足するやつ。
そういうのがよくいるレベルの職場にしか就職できないんですね、わかります。
今週はずっとくだらない言い合いだな
一人で暴れてるへんなのがいるだけ
そういう時は「またお前か」とレスすればいい
昨日、ActivePerl 5.10.0 で Perl/Tk が削除されていることに気がついた。 互換性が無い Tkx に置き換えられてるし… (ノ´Д`)ノ⌒┻━┻ 速攻で 5.8.8 に戻した。
perl/tkなんて本当に使える人いるのか。 都市伝説じゃないのか。
え????tk使えないの????アホなの???????????????
かつてはwish使ってましたが何か?
スペシャルラーメンタイマーくらいしか作れない
「スペシャル」の内容次第では称賛に値するな。 ラーメンできるまでの間、ペンタゴンに侵入してやりたい放題できるとか。
それはバージョン2で対応します
今正規表現の勉強してるんだが、 ^(ハット)って出てきたとき、 行頭、って意味の場合と、 否定、って意味と、二つの場合があるよね。 これってどうやって見分けるの? ザナドゥの毒薬ポーションみたいに 1ドットだけ違うとかかんべんしてほしいんだけど。
あー、あとさー。 perlのゲーム作れないかな? 「ゆうしゃはforeachを覚えた!」 とか、魔法のようにして関数を 覚えていくの。
それとsortするときに、 昇順、とか降順、を表すのに、 $a<>$bとかってでてきたんだけど、 これって予約語ですか?
あと@allって予約語?
一冊、Perlの本を買ったらどうかな。
パンチ3/5!? ・・・だったっけ?
あと..なんだけど、 配列で、1..100ってやったら、 1から100までの数字を一気に 生成する、って意味だけど、 それとはべつに、正規表現で ..って使う場合もあるよね。 まぎらわしくない? どうやって見分けてるの?
なんか本かって嫁
>>730 これ立ち読みしたけどけっこう良さそう.
入門者の一冊目ではないけど
735 :
デフォルトの名無しさん :2008/06/28(土) 21:01:41
|┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \ |┃ | (__人__) | |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
今日ヨドバシ行ったらKENTの本があってびっくりした。 2007年に出た本なのに、中身はPerl4。
KENTさん最強じゃねぇか あの人以上のプログラマなんてこの世に存在せんぜ
/ ドッカン / / ,,_ ドッカン ━━━━━'), )= ☆ゴガギーン / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ヽ\ / / お!まだやるつもりか? ( ) 〉 〉_ _ ____ ∧_∧ ∠ おらっ!出てこい、キチガイ! / ⌒ ̄ / "'''"'| || (`∀´ ) \ おまいのご立派なコード晒せや! | | ̄l | |/ / \ \___________ . | | | | || | | /\ヽ | | .| | | へ//| | | | ( | .| ロ|ロ ゙!l''ヽ/,へ \|_ | | | | .lヽ \ | | ヽ\/ \_ / ( ) | .| 〉 .〉 | | | | / / / / | | 〈| | | / / / / | | || | | / / / / └──┴──┘ | |
全てのオチはここにたどり着くのかw
>>725 正規表現内部でエスケープされない [ ] で囲まれた部分は文字クラスの定義です。
文字クラスの内側では ^ はその文字クラス全体の否定を表します。
文字クラスの外側では ^ は文字列先頭にマッチするアンカーです。
詳細は perlretut 及び perlre マニュアルページで楽しんでください。
>>726 作ってうpれです。でもこのスレではウケない気がします。
>>727 それはたぶん $a <=> $b のことだと思います。
そうであれば $a と $b はスカラ変数、<=> は数値比較演算子の一種です。
<=> は Perl の組込の演算子なので予約語と言えなくもありません。
$a, $b は他の変数と同様に利用でき、通常は変数名を予約語とは呼びませんが、大人の事情によりこの二つの名前は Perl によってこっそり特別扱いされます。どんな事情かは宿題にします。
perldoc -f sort がヒントです。
>>728 @all は通常の配列です。
Perl の変数にはいくつか種類があります。perlvar マニュアルページを調べてみましょう。
>>732 正規表現の外では . は文字列連結演算子です。最近は以前ほど出番が多くありません。
.. と ... は双子の範囲演算子です。ラテン系の配管工に例えると .. が赤いほうです。
perlop マニュアルページに演算子の完全なリストがあります。
あなたが m// の内側(つまり正規表現のパターン部)を見ているなら、.. は . メタキャラクタが二つ続いた姿です。
Perlな人はこれらを、ほとんど脊髄反射で区別しています。
みんな変態ですが、要は慣れです。がんばりましょう。
そして次からは
http://pc11.2ch.net/test/read.cgi/php/1204488452/ で質問してください。
自治すんな
もしかして専用エディタ使えば 色で判断できるのかな?
英語のonlyって形容詞と副詞の、 二つの意味があるよね。 これってどうやって見分けるの?
接続助詞もあるよ
文脈
m(_ _)m は正規表現かもしれない。
ミニマルPerlが結構良い
完成した自作ソフトチューニングの為に、ベンチマークを取りたいのですが 例えばソフト1回の実行で各関数が何%の実行時間を占めているかを 取得する方法は有るでしょうか?
Devel::DProf でググるといいんじゃないかな
752 :
750 :2008/06/29(日) 11:47:31
>>751 希望のものができました。有難う御座いました
お願いします。範囲演算子で --- &list(1..15); sub list { foreach (@_) { print " $_" if($_ == 5 .. $_ == 10); } } --- とすれば5から10まで表示されますが、これを &list(1..7); &list(1..15); とすると、最初の&listで5から7が、後の&listで1から10が表示されます。 最初の&listで範囲演算子の右辺が真になる前に終了しているから なんですが、これをリセットする(5から7と、5から10を表示させる)方法って あるのでしょうか?
前調べたことがあるんだが、結局そんな方法は見つからなかったなあ 俺のケースでは..の後ろにリストの一番最後であるという条件を加えた。
>>754 んーやっぱりないですか。コードの別のとこで
見直してみることにします。
ありがとうございます。
>>753 # 要はループ最終回までに右辺が真になりゃいいので
sub list {
my $end_of_range = '10E0';
push @_, $end_of_range;
foreach (@_) {
if($_ == 5 .. $_ >= $end_of_range) {
last if /E0/;
print ' ', $_;
}
}
}
# 一方ロシアは
print " $_" if($_ >= 5 and $_ <= 10);
>>756 リストの末尾に直接最終値をぶち込んでおく手か。
なるほど・・・
758 :
756 :2008/06/30(月) 01:07:04
759 :
756 :2008/06/30(月) 01:24:07
補足すると、 $_ >= 5 and $_ <= 10 に対して、E0 バージョンはアドホックで小汚く、何より明白なバグがある。 なのでその要件なら範囲演算子にこだわらず、比較同士の論理積を取ればよかろう、と。
すごいアイデアを思いつきました。
http://cat.piq.jp/ ↑このサイトみたいに、
ふたつの「キチガイ」書き込みを
左右に並べて表示して、
「どちらの書き込みのほうがキチガイだと
思いますか?」
と表示して、クリックで投票できるようにして、
ランキングを表示できると面白いと思うんです!
「左側のキチガイ書き込み」 vs 「右側のキチガイ書き込み」 こんな風にして、クリックで投票させて、 キチガイランキングをつくるんです。 材料は、ユーザーに投稿させればいいんです!
>>760-761 俺もすごいアイデアを思いついたぜ
ここはお前の日記帳じゃないんだ、チラシの裏にでも書いてろ、な?
いま、 「これだけで身につく Perl入門例題80」 という本の、2004年発行の初版を読んでいるのですが、 175ページのQ110の、説明を読んでいるのですが、 キーを表す変数 値を表す変数 ↓ ↓ $value = $uriage {$key}; と書いてあるのですが、これって誤植 ですよね?説明が逆だと思うのですが。
たぶん誤植だな 変数名を見ても間違いない
>>763 せっかく読んでるんだから読むのを止めろとは言わないが刊行年が微妙だな。
既に5.8系が出てる時期だけども多分記述はそれ以前の古い物だろう、
それを念頭に置いて読むなら為にはなるかもしれん。
あとmyやlocalやourの説明はまだ先なのか、それとも今後も全然出て来ないのか…。
素人がなんとか『Perl言語プロブラミングレッスン[入門編]』というのを読み終わったんですが、 ステップアップとしてお薦めのPerl本といえば何になりますでしょうか? やっぱりラクダ本がいいんでしょうか?
>>767 リャマ→ラクダ→PBP
というオライリーコンボが王道かな。
読むのと平行して必ず何か書き続けると吉な予感。
# それにしても結城さんの本はハズれないなあ。
>>699 > 特に、手直しするような所は無いと受取ってよろしいのですね。
受取るのはそりゃかまいませんが、突っ込みどころがないわけでもないんです。
単に BASE64 で寄越すあたりで萎えちゃってるんだと思うですよ。遅レス失礼。
結城は地雷多すぎだろ
>>771 んなもん何でも良いじゃん。小姑みたいなやつだ。
774 :
767 :2008/06/30(月) 23:17:25
>>770 ハイ。その順番で頑張ります。
ところで、リャマ本というのは『はじめてのPerl』の事でOKでしょうか?
>>774 はじめてのPerl×
初めてのPerl 第3版 ○
>>775 サンキューです。週末にでも本屋さんで確認して買ってみます。
アルパカ本(続・初めてのPerl 改訂版)も忘れないでください
とりあえず本を買うとは、、、普通ならこうでしょ? % man perl % man perlsyn % man perlsub % man perlfunc % man ... まあ、適当に何冊も本読み散らかして理解した気になってればいいんじゃない?
そうは言うが オフラインにはオフラインの良さがあるよ と思う俺は異端なのかね? さすがにラクダ本は腕がくたびれるが
とりあえず気になった本は(会社のお金で)買いまくる派なうちのおすすめは
初めてのperl
effective perl
らくだ
クックブック
#それぞれ最新のやつ…最近続とかついてよくわからんね(汗
>>779 pdfとかソースもとりあえず印刷しちゃうオフライン派
(そしていろいろめんどくさいから用がなくなったらシュレッダー)
エコってなんだろとか思うけどorz
>>778 manなりperldocなりはリファレンスにはなるがチュートリアルにはならん。
目的が違うなら手段も違う、初心者にいきなり薦めるのは無謀。
>>781 最近はチュートリアルも man に含まれているようですが。
だいたいperlなんか学ぼうとするヤツの目的はヒマつぶしなんだろうから、
いっぱい本買って小説みたいに読むのがいいとおもうよ
別れた二人が惹かれ合うところ辺りから引き込まれるんだよな
>>781 横レスだが
man ( perldoc ) perlは、ラクダ本のまんまだぞ?
お前の言うことは「ラクダ本を初心者にいきなり勧めるのは無謀」
…なんだ、正しいな。
俺は初心者にはリャマ本一択だな あれを面白いと思える奴は見どころがある…と思う
思ったんだけど、もしかして英語が読めない人っているんじゃないかな? いや、そんなはずないか。バカなことを言っちゃいました。
>>778 > まあ、適当に何冊も本読み散らかして理解した気になってればいいんじゃない?
逃避行動として本に執着して「勉強しているふり」をして、いつまでもプログラムを
書かない奴を何人も見てきた。「次の本」とか言う奴を見かけると、その点が気になる。
正直、長文の英語はあんまり読みたくないなあ。 まあ、プログラミング関係の英文は、文法が正直だと言われる工学系の文章の中でも、特に簡単なほうだとは思うけど……。
まぁ、たいして英語が読めない俺が言うのもなんですが、 会話の言語だろうとプログラムの言語だろうと、実践と慣れですよね。 頭の中で日本語に変換されないで直で読めると取りあえずOKだと思います。 俺は英語の場合はけっこう日本語に変換されるけど。 本はあれです、いい所もあるけど、悪いところもあります。 俺は画面で字をずっと読んでると具合悪くなるので印刷したり本で読んだりもします。
CPANモジュール使うのに英文不可避だろ。 英語読めなかったらもう致命的。ていうか日本語だけでよくやってきたな、と感心する。
Perlはちょっと前に始めたんだけど、書籍はかなり買ってしまった。 初めてのPerlや、ラクダ本2冊、クックブック2冊などなど。 しかーし!なんとPerl6では、5を勉強した人が発狂するほど書式や 言語使用が変わるという話じゃないですか!もう5勉強する気なくなりました。 今のうちに本を売りさばいとくのが得策ですよね?あと6っていつごろ リリースされそうなんでしょうか…。そもそもPerlに未来はあるのでしょうか。 こんな仕打ち、C++言語をやってるときには、くらったことない。 互換性って大事だなぁ。
> CPANモジュール使うのに英文不可避だろ。 ソース読めばおk
駄目な奴は何をやっても駄目
つまり、一つでも駄目じゃないものがあったら、そいつは駄目な奴ではない。 そういう意味では非常に「査定の甘い」言葉である。
とはいえ自分に一つでも駄目じゃないものがあるかと問われると難しいものがある
>>791 君にはpythonが向いてるんじゃない?
>>791 時代によって要求言語そのものがガラッと変わるのなんてザラだし
(Web時代に入ってからえらく変わった)、その程度で
ピーピー言ってるようじゃ どの道だめだね。
Perl5->6の変化なんて、D言語に比べたらかわいいもんだろ。
でもラクダ本とかいつまでも持っててもしょうがないですよねぇ?
燃料にでもすれば
イチャモンつけたいだけだろww
いまだに「はじめて読む8086」を持ってる俺に対する挑戦か? 本って一旦買うと捨てられなくってな。
図書館にでも寄贈すればいいよ。
>>796 一見すると、この世界の諸行無常を正論で語ってるように見えるけど、
Perl5と6の違いをそこに絡めて「その程度」扱いするのは、幾ら何でも不自然だよ。
あと、
>>791 にダメの烙印押すより先に、Perl6の先行きのほうがもっとダメっぽいことを
ちゃんと言ってあげたほうがいいと思うよ。
pythonでもつかってろよ
だからPerl6の行く末の話は厳禁なんだって 信者がありとあらゆる手で話をそらして噛み付くから
人にどう対応するか指示を出すだけで、自分は対応しない人ってなんなの?
Perlはもはや終わりという話は、過言でもなかったのか。 オブジェクト指向取り入れたあたりから、言語が肥大化して Perlの価値が薄れていったんだろうけど。6で決定的になりそうな予感。
ぶっちゃけ、新人にはPythonやっとけと言いたい。
>>791 手元に動くおもちゃがあるのに、届くかどうかもわからんクリスマスプレゼントを待つというなら止めやしません。
仮に届いたとして、その Perl6 のノウハウが固まる頃には、きっと Perl7(仮) のリリース予定がアナウンスされているだろうけれど、そん時ぁどうすんだべ。
ちなみに Perl6 は鳳たんの Pugs で遊べるよ♪
Perl6 はプロジェクトのコアとなる Parrot による多言語統合実行環境という側面も併せ持っています。 当然 Perl6 及び 5 をサポートしますが、結果としての姿は「次世代のPerl」というよりも、むしろ「ボトムアップから生まれた UNIX 文化風味の .NET」とでも言うべきものになるでしょう。
Perl6がリリースされても、Perl5書き続けるだろうな。ほとんど保守のために。 Perl6はPerlとは別の言語って認識になるような気がする。 つまり俺が知ってるPerlは5で打ち止めってことだな。
-> かわいいよ ->
>>791 安心しる、Perl6なんて一部の言語マニア以外誰も使わんから。
UNIX系OSの大半に/usr/bin/perlが入ってる時点で、Perl5は覚えて損はない。
814 :
デフォルトの名無しさん :2008/07/02(水) 01:00:12
$@%文化がPHPと同じ$文化になる時点で終わりだな
-> も . に替るんだっけ?
>>813 ほほう。最近の perl の居場所は /usr/local/bin/ ではないのか。
FHS準拠だと /usr/bin/ だろうね
調子に乗って cygwin 版 perl を 5.8.5 から 5.10.0 にしたら namazu が動かなくなってハマった。 始めは cpan で 5.8.8 を /usr/local/bin に入れたんだけど kakasi の dll モジュールのロードでこける。 kakasi 本体でなら動いたけど処理が遅い。 結局、kakasi を cygwin 版をやめてソースから入れ直し + 5.10.0 用の NKF.pm と kakasi.pm 作成で 5.10 から動かす事に。 5.8.8 を入れた意味が無かった。 要するに、こんな長文読んでくれた人乙って事だ。
要するに、こんな長文 まで読んだ
なんというツンデレ
>>820 ツンデレっていう言葉を使いたかったんだろうけど、使い方を間違ってるよ。
質問させて下さい。 変数$str1 中にある「あいうえお」を「かきくけこ」 に変換しようとしています。しかし、$str1はhtml文字列で、 不定箇所にタグが含まれています。 (但し、ここでは、問題になるタグは<b>と</b>のみとします) 現在、$str1中で<b>と</b>に囲まれた部分は各文字の後に、 普通は使わない特殊な文字(ここでは「★」とします) を付けるようにして対処しています。 例えば$str1が「あい<b>うえおさ</b>しすせそ」であれば、 これを「あいう★え★お★さ★しすせそ」に変換し、 $str1 =~ s/あ(★?)い(★?)う(★?)え(★?)お(★?)/か$1き$2く$3け$4こ$5/g; を実行して「かきく★け★こ★さ★しすせそ」を得た後に 「かき<b>くけこさ</b>しすせそ」に変換しています。 もっとスマートなやり方はないでしょうか?
s/あ((?:<.+?>)?)い((?:<.+?>)?)う((?:<.+?>)?)え((?:<.+?>)?)お/か$1き$2く$3け$4こ/g;
>>823 こういうカキコ見ると
一瞬、「荒らしか?」と思うよな。
でもちゃんと回答してるんだぜ
>824 とりあえずラリー先生に謝ろうぜw
… tr/// が使えるケースでは無いのか?
>>822 単純にあ→か、い→き、・・・、と置換するのではだめなのか?
それなら間のタグとか意識する必要もないが。
まあどうせ元の文はもっと複雑でここに書かれていないいろんな条件が付くんだろうけど。
>>822 $str =~ tr/あ-お/か-こ/
「あ」→「か」じゃなく、あくまでも「あいうえお」→「かきくけこ」なんじゃない?
830 :
822 :2008/07/03(木) 00:11:11
>>823 ありがとうございました。
やっぱり、$1 $2 $3 …の行列になるのは仕方ないようですね。
>>830 my $replacement = '';
$str1 =~ s/(あ(?:<.*?>)?い(?:<.*?>)?う(?:<.*?>)?え(?:<.*?>)?お)/
$replacement = $1;
$replacement =~ tr/あ-お/か-こ/;
$replacement;
/eg;
# ちょいと意固地になってみやした。
>>828 これで
「おはようございます」
を返還したら
「こはようござきます」
になるの?
$abc="おはようございます"; $abc =~ tr/あ-お/か-こ/; print $abc; ↑これだとなぜか動きません。 バグはどこですか?
use encoding
$w = 'おはようございます'; $w =~ tr/お/こ/; # 小文字に正規化 print $w,"\n"; ↑これなら動く。でもこれ↓だと $w = 'おはようございます'; $w =~ tr/あ-お/こ/; # 小文字に正規化 print $w,"\n"; エラーになる。なんで? Invalid range "?αソソセ?-?αソソセ・ in transliteration operator at a.pl line 2.
use encoding
イマドキはむしろ use utf8 及び use Encode を勧めるところでしょう。
>>833 >>835 序盤に下記二行を加え、スクリプトそのものは UTF-8 で書いてね♪
use utf8; # スクリプトを utf8 として扱う
use Encode; # 入出力用(decode(), encode() 他がエクスポートされる)
日本語使うなら、ファイルの先頭に use utf8; binmode STDOUT => "encoding(cp932)"; と書いて、ソースをUTF8で書くのが一つのパターンだな。 あるいは、 use encoding "cp932"; と書いて、ソースをSJISで書くか。 いまどき、SJISで書く人は奇特だといえるが。
小文字に正規化ってコメントが謎だな
(^_^;)
perlでオブジェクト指向なプログラミングの よさげなサイト教えて下しあ
次スレからは、このテンプレ入れようよ。 --------------------------------------------------------- # 【Perl 日本語処理の基礎の基礎】 # このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。 # このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。 # 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。 # まず、以下の行を先頭に入れて下さい。 use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; # 次に、あなたが実行したい処理の内容を入れて下さい。 print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n"; sleep(1); # 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう # おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
>839 CGIでの話になるんだけど、携帯電話のブラウザはShift_JISが基本だから、 さくっとShift_JISで書いてしまうことはある。 いや、ちゃんとしたコードを書くときはHTML::Templateとかで表示を分けるんだけどさ。
>>843 先生!
open FILE, '<:encoding(cp932)', 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
がエラーになります!なんで???
ちゃんと utf8 でコードを書いたのに。
>>845 IOフィルタかましてUTF-8で書けばいいじゃん。
理由になってないよ
>>846 >>843 の通りにやったのなら、
open FILE, 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
と書くべきだと思われる。
おなじだろ。
use utf8してんでそ? ファイルのパスがutf8 flaggedなだけじゃないかな つーかファイル開く時に例外処理入れるのは乳児でも忘れない常識 それとopenは引数3つにするかIO::Fileなり便利なモジュールを使うべし open my $fh, '<', $file or die $!;
>>843 を使っても、ファイルパスに指定する文字列は sjis でないとダメ。
readidir の返り値とかも utf8 フラグ無しの sjis だったりするから注意。
訂正 × readidir ○ readdir
そのへん5.10でも改善されてないの?
>847 いやだから、さくっと書くときって言ってるじゃん。
>>848 ありがとうございます。さっそくそのとおりやってみましたが、ダメでした。
「No such file or directory at C:\TEMP\f.pl line 8.」 と出ます。
もちろん、07年度売上.csv というファイルはデスクトップの上にあります。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
open my $fh, '<', $file or die $!;
試しに下記のバッチファイルを作ってみたら、ちゃんと内容が表示されます。
type "C:\Documents and Settings\NECPCuser\デスクトップ\07年度売上.csv"
もうワケがわかりません。
>>850 さんのアドバイス通り、 IO::File というのを使ってみました。
use utf8;
use IO::File;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
my $io = IO::File->new();
$io->open('C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv', 'r') or die $!;
・・・やっぱ 「No such file or directory line 8」 です orz
#use utf8;
#use open IO => ":encoding(cp932)";
#binmode STDIN => ":encoding(cp932)";
#binmode STDOUT => ":encoding(cp932)";
#binmode STDERR => ":encoding(cp932)";
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
open my $fh, '<', $file or die $!;
print <$fh>;
当然ですが、スクリプトをシフトジスで保存したら正常に動きます。
という事は、
>>843 が間違っているのでしょうか???
# utf8 で保存 use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; use Encode; $file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv'; open my $fh, '<', encode("cp932", $file) or die $!;
文字コードの扱いに関する限りPerlとActivePerlは別物と考えたほうがいい
850,851に答え書いてあるじゃん 単にファイルパスがutf8フラグのついたUTF8文字列になってるからPerlがファイルを見つけられてないだけ
NTFSはファイル名をウニコードで持ってるのに、 なんでANSI文字コードじゃないといかんの? まさか、CreateFileAつかってるんか?
>>842 他の言語でオブジェクト指向してみたことあるなら、そのめんどくささと脇の甘さに嫌気がさす。
オブジェクト指向に触れたことがないなら、それを学ぶために別の言語から入る事を勧める。
ようするに perl OO なんてやめとけ。
>>862 昔の「しがらみ」というものがあるだろう。
ウニコードでやりとりするようにすると、昔のソフトが全滅する。
Perlのオブジェクト指向は、サブルーチンの呼び出し、引数渡しの手続きを省力化する手法という認識だな。 他言語のオブジェクト指向の制約の厳しさを考えると、オブジェクト指向と呼んでいいものかどうか。 そういうふうに割り切って考えると、Perlのオブジェクト指向(みたいなもの)は案外悪くない。
>>843 の
binmode STDERR => ":encoding(cp932)";
はやめたほうがいいかもね。例えば die "finish";
を実行すると、STDERR に
finish at (ファイル名)(行番号)
と出力されるが、ソースファイルが日本語のファイル名だと、
元々sjisの文字列をutf8とみなして、さらにsjisに変換しようとするから、
エラーが起こって何も出力されなくなる。
STDERR に日本語出力するときは、その都度変換すべきだろうね。
867 :
デフォルトの名無しさん :2008/07/04(金) 15:21:33
質問です。 指定したディレクトリの直下にあるファイルのファイル名を 全て取得するには、どうすれば良いのでしょうか? よろしくお願いします。
>>867 File::Slurpのread_dirを使う。
File::Find::Rule とかもべんりだゼ!
>>864 いや、utf8フラグたってるかどうかで切り分ければいいんだから、そんな問題は発生しないはずだ
> このスレを1から全部読め。 説明できないということは、お前さんも結局何も知らないわけですね。
>>862 W系使う直前で MultiByteToWideChar(CP_ACP,.. してるから。
(W系で受け取った結果は CP_ACPでMultiByte文字列化)
それはもう、utf8フラグなんて無視してCP_ACP(システムのデフォルトコードページ)のみ。
このへんは(utf8フラグを見てCP_ACPとCP_UTF8を使い分けていた)5.6の方がマトモなんだよな。
Perlはutf8フラグの存在が癌 プログラム言語史上かつてないほどの 糞仕様を作ってしまった。
>>873 酷いな。なんでそんなことしちゃったん?
>>874 それはちがう。
perlに明示的な型がない以上、バイナリシーケンスと文字列を区別するために何らかのフラグは必要。
>>874 つかいかたを理解できなかったからって、こんな場所でつまんないこと書くなよw
>>872 「説明しない」のは「説明できない」からだ、というのを論理的に証明できれるなら、その結論もアリ。
がんばって。
できれる
we can be able to do it.
おかげさまで売り上げの集計ができそうです。 ところが、今度は rename で 「No such file or directory」 エラーが出ます。 # utf8 で保存 use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; use Encode; $file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv'; $bak = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上(集計済).csv'; open my $fh, '<', encode("cp932", $file) or die $!; # (中略) close $fh; rename $file, $bak or die $!; # ☜ ここ 集計済にしておかないと、売り上げが重複してとんでも無いことになっちゃうんです・・・
>>879 「出来る」ことをそこまで強調した英文を初めて見た。
頭が極端に悪い人?
ようはアルファべットでは問題なくても 日本語を正規表現で置換するときには utfなんちゃんらの処理が必要ってこと?
もうちょっとはっきり言ってくれないと。 yesともnoとも答えてやれんがな。
頭が悪すぎる
だから。 tr///の正規表現で置換するとき、 アルファベットは問題なくても、 日本語では問題が出るのかって聞いてるの。
そんなことどこで訊いてたんだよ。
どんな問題を解決したいのかを明確に書きましょう。
今までの話をまとめて、
>>843 のこのテンプレは、こんなもんでどう?
---------------------------------------------------------
# 【Perl 日本語処理の基礎の基礎】
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1.の行を入れると、DOS窓への日本語出力は簡便になりますが、
# ソースファイル名に非ANSI文字が含まれる場合にdie 文の出力が失敗します。
# ※2.OSに渡す文字列(ファイル名,dosコマンドのオプションなど)は、
# この例のようにcp932でエンコードする必要があります。
いい加減今の時代にDOS窓って呼び方はやめないかw
>>887 #
>>884 の内容から
>>887 を導けたらエスパーなので、「だから。」とイキまれても困ります。
# tr/// の痴漢モジリストは正規表現と違うけれど本題でないのでスルー。
# 「アルファベット」が us-ascii なのか [:alpha:] なのか不明ですが面倒なので us-ascii と仮定。
utf8 プラグマの効果範囲でマルチバイトの文字列操作が正しく行われるためには
・扱う文字列が、Perl ソースコード中に正しく UTF-8 で記述されたリテラルであるか、
・または Perl 内部表現に正しく decode() された文字列である
・そして、出力時には出力先にとって処理可能な形式に encode() する
必要があります。
つまりこゆこと (UTF-8 で書き、cmd.exe 又は command.com 等の cp932 環境上で実行):
use utf8;
use Encode;
my $ウホッ = 'ぷるん';
$ウホッ =~ s/ぷ/にゅ/;
print encode('cp932', $ウホッ . さぶ());
sub さぶ {
return('アッー!');
}
皆様の暖かいアドバイスのおかげで、やっと意味が理解できました!
ファイル名と思しきとこは全て、encode("cp932",ほげほげ) するんですね!
open だけかと思ってました。rename も encode("cp932",ほげほげ) が必要なんです。
# utf8 で保存
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
$file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
$bak = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上(集計済).csv';
open my $fh, '<', encode("cp932", $file) or die $!;
# (中略)
close $fh;
rename encode("cp932", $file), encode("cp932", $bak) or die $!; # ☜ ここ改良!
いろいろ実験してみたら、他にも
unlink, utime, stat, -f -e -s など、
さらには LWP::UserAgent の mirror メソッドするときも
$ua->mirror("
http://ほげほげ.com/ ", encode("cp932", "ほげほげ.html"));
って感じで、なんでもかんでも encode("cp932", ほげほげ) するワケですね。
一体全体、なんでまたこんなクソ仕様にしたんでしょう???使えねーーーーーーよ。
死ね perl !
馬鹿は大変だな。
つか、どういう意図でこんなクソ仕様にしたんでしょう?
ちょっと手元のスクリプトを Windows 対応にしてみたら 30箇所も encode("cp932", ほげほげ) する必要があった。 perl 死ね!
>>899 × Windows 対応
○ 日本語版 Windows 対応
↑ まるで 「日本語死ね!」 とでも言いたげだな
900=左斜め上の国の人?
>30箇所も encode("cp932", ほげほげ) する必要があった。 あーあ
いいよね、日本語つかわなくて済む国の人は。うらやましいよ。 つうか、perl 使わなければ日本でも問題なし。perl 死ね!
>>895 # 下記のように先に保管してしまう手もあります。
# マルチバイトのファイル名操作が必要だったり
# マルチバイトのファイル名をハードコードする必要があったり
# といったむずがゆい場合に少し楽ができます。
my $file = 'C:/Documents and Settings/NECPCuser/デスクトップ/07年度売上.csv';
my $bak = $file;
$bak =~ s/\.csv$/(集計済).csv/;
my %filename = (
utf8perl => $file,
cp932 => encode('cp932', $file),
bak => encode('cp932', $bak),
);
# ここではたまたまハッシュに格納していますが別に何でも可。
>>897 シングルバイト圏の連中があいかわらずA系のAPIを使ってるから。
こういう仕様にしようと思ったからこうなってるんじゃなくて、
何も考えてないからこういう結果になっただけだ。
これじゃ困るから全部W系のAPIを呼ぶようにしろと説得してくれ。
困ったのが opendir/readdir opendir するときは、引数のディレクトリ名は encode("cp932", ほげほげ) しなきゃいけない。 ところが readdir で返される配列は、ななんとシフトJIS! ということは、返された値を1個1個、decode("cp932", ほげほげ) しなきゃならない。 これをやらないと、今度は、この値を使って open/rename/unlink/-f -d -e -s などなどするとき 間違って encode("cp932", ほげほげ) してしまいそう。 また、ファイル名を正規表現で加工したいときもあるだろう。 だから、readdir で返される配列は、decode("cp932", ほげほげ) しといたほうが安全。 混乱を避けるためには decode("cp932", ほげほげ) しときなさい、ってこと。 あと、__FILE__ も、@ARGV もだ。 こんなことしてたら、マトモなアプリなら30箇所でも40箇所でも encode("cp932", ほげほげ)/decode("cp932", ほげほげ) が出てくる。 perl 死ね!
>>905 open FILE,'<',$file; を、
open FILE,'<',encode("cp932"',$file); に書き換えるコストと
open FILE,'<',filename{cp932} に書き換えるコストと
どっちも大してかわらない気がする。
どうせエディタで置換するわけだし。
use utf8; これは、utf8 でコーエィングされてる、という意味。 use ユニコード・・・ではないんだよ。
use utf8; これは、utf8 でコーディングされてる、という意味。 文字列の内部表現も utf8 ってこと。 use ユニコード・・・ではないんだよ。
>>909 文字列の内部表現はUTF8なのに、
OSの機能を呼び出すときにUTF16じゃなくてANSIに変換してるのが問題なの。
そのスレを出すのは意味不明。
ほうほうほうw それじゃぁお尋ねしますがねぇw >全部W系のAPIを呼ぶようにしろ これで解決するんですかい? 「W系のAPI」 とやらに utf8 文字を渡すつもりwww
この問題を解決するには、
utf8 文字を UTF-16LE に変換して 「W系のAPI」 に渡す
utf8 文字を ANSI(CP932) に 変換して 「A系のAPI」 に渡す
いずれにしても、変換が必要。
>>906 が utf8 と ユニコードの違いがわかっていない証拠
……何を言っても無駄か
917 :
905 :2008/07/06(日) 23:40:01
>>908 > どっちも大してかわらない気がする。
同感ですがご意見を振り切って暴走の結果 MultiEncodingHash.pm ができました。
package MultiEncodingHash;
use strict;
use warnings;
use utf8;
use Carp;
use Encode;
use Tie::Hash;
our @ISA = 'Tie::StdHash';
sub FETCH {
my ($self, $enc) = @_;
return $self->{org} if $enc eq 'org';
return encode( $enc, $self->{org} );
}
1;
>>914 UTF-8⇔UTF-16の変換は単純な演算でできるんだから、
そうやって渡すよう実装するに決まってるだろう。
UTF-8 Cygwinと同じことをするわけだな。
そんなこと考えるまでもないだろうに、
わざわざ説明しないとわからないくらい馬鹿なのか?
>>918 おめえutf8 cygwin使ってねえだろ。
>>916 そういうことですね。
あなたに言えることの中には、有効なものは一つも無いわけです。
まさに無駄です。
trってなんの略? gがグローバルってのは参考書に書いてあった。 でもsは載ってない。
>>921 tr/// => transliteration
s/// => substitution
Perl の内部表現は UTF-8 と一致しているわけではないので どちらにしろ utf8 flagged な文字列をそのまま外には出せません。
>>923 ,925
サンキュー
どこかのWEBに載ってるの?
質問 perlの予約語とかを 色分けして表示するエディターで windows向けので一番いいのを教えて。 無料のやつで。
>>927 探せばいくつでも見つかるので片っ端から試して一番いいやつを教えてください。
↑ 言葉遣いはやさしいが、言ってることは 「ググレカス」 と同じ。
>>926 > サンキュー
> どこかのWEBに載ってるの?
添付マニュアルに書いてあるから、どこかのWebにも確実に載っている。
馬鹿であることの証明にほかならない。 そしておれも馬鹿。
馬鹿の考える証明なんて証明でもなんでもない。
ランキングサイトとかってないの? それこそperlで実装しろや、って感じだけど。
>>907 入出力にutf8が一切絡まないなら、ソースもsjisで書いたら? dirtyかもしれないけど何も苦労しないよ。
処理内容によっては別の苦労があるにせよ、オレなら迷わずそうする。文字列内の2バイト目が\x5cの文字に注意。
↑ コイツ最高にアフォ! いったい何のために、せっせと苦労して utf8 してるのか全く理解しとらんな。 >別の苦労があるにせよ、オレなら迷わずそうする。文字列内の2バイト目が\x5cの文字に注意。 その、「別の苦労」 があるから utf8 するんじゃないかよ。 「2バイト目が\x5c」 だから utf8 するんじゃないかよ! 話が堂々めぐりになるだろ。
utf8するってどんな動詞だよ。
utf8, vi. (utf8s; utf8ed; utf8ing; utf8ed).
>>941 ブライト艦長の「スタンバッておけ」と同じ用法だ
考えてみりゃ「ググる」も同じだよな 「こないだヤフーでググったらさぁ」 ← 微妙に違うw
英語圏でも"Google it."っていうからな。 名詞の動詞化はよくあること。なし崩しに「通じないほうが馬鹿」って流れになっていく。
それでもutf8するはないわ
別の苦労があるにせよ、オレなら迷わずググル。
「表」とか? ちなみに2ちゃんねるは 文字コードはどういう実装にしてるの?
質問です。 WWW::Mechanize を用いてフォームに入力するプログラムを作っています。 プルダウンに値を入力するのですが、その前に入力する値のリストを取得したいのです。つまり <SELECT name="hoge"> <OPTION VALUE="AAA">BBB <OPTION VALUE="CCC">DDD <OPTION VALUE="CCC">FFF <OPTION VALUE="EEE">HHH <OPTION SELECTED VALUE="III">JJJ </SELECT> となっているソースから値のリストを取り出したいのです。 直接ソースから自作のプログラムを書いて抜き出してもいいのですが、そういったモジュールがあればそれも含めて教えていただけないでしょうか。
952 :
950 :2008/07/08(火) 09:42:35
>>951 まさに期待通りの答えでした。
どうもありがとうございました。
953 :
867 :2008/07/08(火) 16:32:30
以外の2つについて日本語でわかりやすく説明したいのですが、どう説明したらいいでしょうか? $esc_0208 = shift || $esc_0208; $_[$[] =~ /($re_jis0208)/o && ($esc_0208 = $1)
>>954 コードの意味は分かってるが日本語で説明する方法が分からないのか、
それともコードの意味すら分からないのかどっちなんだ。
上は||は分かるのですが、この場合どう解釈すればいいかがわかりません 下はコードの意味がわかりません
jcode.plの一部ですね。 とりあえず自分なりに書けば誰か添削してくれるんじゃない? でもいちいち説明がいるほど難しいコードだろうか
>>956 演算子の意味が分からないならperlop嫁。
下は、perlvar嫁
上は$esc_ascがshiftならshiftを、shiftじゃなければ$esc_ascを返す でいいんですか?
>>959 そんなわけがないだろ。
演算子の優先順位考えろよ
$esc_0208 = (shift || $esc_0208);
shiftが真ならshift、shiftが偽なら$esc_0280を返すでいいでしょうか?
(´-`).。oO(マルチと言うよりも、or脳っていうのかなぁ。。。)
マルチといったら「はわわ」と返さないお前らに絶望した
なにそれ?
perlで彼女が出来るプログラムとかって書けますでしょうか?
シフトJIS環境に固有の問題とPerlのi18nの問題をわけて議論しろよ
もうその話はおわったよ…
use 彼女;
syntax error.
>>969 Can't locate 彼女.pm in @INC....
参考書読んでたら、なんかDBMってのがあって、 ビルトインのデーターベースみたいで、 もしかしてこれ使えば mysqlとか入れなくていいの?
>>972 連想リスト/ハッシュを永続化する程度の機能しかないし、よく壊れるし。
まあ、DBMで済むことをmysqlとか使っててバカだなと思うことはあるが。
そこでSQLiteですよ と思っていた時期が私にもありました
まあ、ある要求があって、 DBMで済むことなのか、 mysql入れないとだめなのか、 それを判断できるのはプロに 頼まないとだめなんじゃない?
まあ、もともとDBMは、1000行のファイルを線形探索するのは 重すぎて論外だったので存在するようなもんだからな。 20年以上前に。
その判断できるプロってのがなかなかいないんだよね〜
連想リストって何?
次スレ立てますね。
>>891 もテンプレ追加で。
よろしく。
>>233 の普通の文字操作も入れておいたほうが良いんじゃないかな。
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n";
use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; # ※1 use Encode; これは余計な混乱や誤解生むだけだから入れないほうがいいと思うよ
>>983 おまい perl 使ったこと無いのか?
pearlなら少々
> マルチも大概にしとけ。 なにか問題あるの?
ある。
マルチの何が問題なの?
なんで問題ないと思うの?
マルチを良しとするやつは、解答者を使い捨てにして構わないと思っている異常者
>>990 それ、いわゆる 「悪魔の証明」 ってヤツだね。
>>992 「問題あるだろ、常識で考えて」ってレスが付くもんに
「悪魔の証明だね」なんて言ったら鼻で笑われるぞ。
じゃぁ話を整理すると、 設問: マルチの何が問題なの? 回答: 問題あるだろ、常識で考え って事だな。ぜんぜん回答になっていない。 「常識」 で済むなら警察いらん。裁判いらん。 これ、中世の魔女裁判でよく使われたやりくちじゃないか! じゃぁ、こんなのはどうだ? 設問: 光速に近いスピードで移動する物体は、なぜ時間が遅れるのか?証明せよ 回答: ふつう、そうだろ、常識で考え おれって天才?
て抜きですまん
ネチケット(笑)ってやつでしょ?
よくいるんだよ。自分の無知棚に上げて
>>994 みたいに屁理屈コネ出す奴
ほっとけ、天動説がどうとか言いだすからw
999 :
デフォルトの名無しさん :2008/07/11(金) 02:15:12
それでも地球は回ってる
常識で考えて問題ないなら、問題ないなんていわんだろ、常識で考えて。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。