1 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:10:40 ] "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/08/11 現在の最新版(安定版): 5.10.0 ● 2008/08/11 現在の開発版: 5.9.5 ▼ 前スレ Perlについての質問箱 36箱目 pc11.2ch.net/test/read.cgi/tech/1215569470/ リンク集は>>2-3 Perl 日本語処理の基礎の基礎 >>4 過去スレは>>5-6 あたり
237 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:02:15 ] >>236 言いだしっぺの法則は、「お前がやれ」って返って来る法則のことじゃないのか?
238 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:10:39 ] >>237 いなかっぺ大将は、「キクしゃん、ハナしゃんと西一の三角関係」を描いた物語ですよ確か。
239 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:49:44 ] >>238 違うダス! わしとキクしゃんの恋愛物語なんダス!
240 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 08:37:58 ] かなりのおっさんがいる?
241 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 17:41:35 ] にぎりっぺ
242 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 18:58:42 ] ActivePerl v5.10.0 を使用しています。 LWP::UserAgent を使用して、たとえば https://mixi.jp に接続すると、 Client-SSL-Warning: Peer certificate not verified がレスポンスヘッダに出てくるのですが、 これを解消するためにはどうすればよいのでしょうか。
243 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:16:50 ] Crypt::SSLeayを入れる
244 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:19:37 ] Crypt::SSLeay は 0.57 が入っていました。
245 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:01:55 ] OSはWindows2000でActivePerlについての質問です。 よくCPANから○○をとってきてインストールしろとか みますが、Activeperlを使っている人は、PPMで インストールできるモジュールしか使えないのでしょうか? PPMのインストールのメニューに出てくるという意味です。
246 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:07:55 ] PPMを起動すると、 kazato.run.buttobi.net/cgi-bin/material/src/vm002_0191.png こんな画面がでてきて、ほしいファイルを右クリして インストールする仕組みになっています。 これって誰が管理しているか知りませんが、 たぶんactivestate社がやってるんですよね。 で、PPMのメニューに出てこないものは インストールできないのかなと。
247 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:09:17 ] 最近perlも飽きてきた。 どの入門書読んでも、だいたい同じこと書いてあるから。 で、今日はレファレンスについて勉強してみようと思いますが、 グーグルで検索するときに、レファレンスなのでしょうか? それとも、リファレンスなのでしょうか?
248 名前:デフォルトの名無しさん [2008/08/23(土) 21:17:47 ] ぐぐれカスとも言えない新技だな
249 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:51:20 ] >>247 両方ぐぐれよ。 あるいはreferenceで。
250 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 22:12:34 ] >>245 やってやれないことはないけど、気合と根性が必要。 俺はPPMに無いものはCPANからアーカイブを取ってきてMinGW+nmakeでインストールしてる。 が、Windowsには類似のAPIがない、UNIXべったりのモジュールには苦戦してる。 (同じ機能はあってもAPIの仕様が全然違う)
251 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:53:26 ] セーブファイルをネット上に保存する、ってのは かんたんにできるのかな。 アップローダーみたいな、、、っていうのかな? print (FILE www.abc.com/abc.txt); みたいな。
252 名前:デフォルトの名無しさん [2008/08/23(土) 23:56:31 ] 以下のように@とかそういうのを全部変換したくて延々書いているのですが、 速く処理出来るようにするにはどのようにしたらよいのでしょうか? $str=~s/T/1/g; $str=~s/U/2/g; $str=~s/V/3/g; $str=~s/W/4/g; $str=~s/X/5/g; $str=~s/Y/6/g; ・・・ $str=~s/@/(1)/g; $str=~s/A/(2)/g; $str=~s/B/(3)/g; ・・・
253 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:58:38 ] アロー演算子っていうのは、 ハッシュのレファレンスを表すときにしか 使わないんですか?
254 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:01:07 ] >>252 コーディングの行数を減らしたいってこと? コンピューターの処理速度を速くしたいってこと?
255 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:03:32 ] $str=~tr/T-]/1-10/g; $str=~tr/@-I/(1)-(10)/g; これだと動かないかな。
256 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:15:10 ] use strict 'refs'; ↑これって書かないと動かないの? それとも、use strictを書けば、その中に含まれるの?
257 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:37:44 ] ha??
258 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:44:24 ] >251 自分のパソコンと相手のパソコンが繋がれてあったとして、 こちらのパソコンを操作するだけで相手のパソコンのHDDに書き込むことができるか?という問いに近い。 >252 ローマ数字に対応してるかどうか分からんけど、Unicode::Normalizeとかは? ギャル文字の正規化めんどくせぇなあ……(ぼやき)
259 名前:デフォルトの名無しさん [2008/08/24(日) 00:44:35 ] >>254 処理速度のほうです。 >>255 有り難う御座います。 $str=~tr/@-I/(1)-(10)/; $str=~tr/@-H/1-9/; 上の方法では出来ず、下の方法では出来ました。 括弧を付ける方法とかあるんでしょうか?
260 名前:側近中の側近 ◆0351148456 [2008/08/24(日) 00:54:15 ] >>259 (っ´▽`)っ $str=~tr/@-I/\(1\)-\(10\)/; ではどうだ?
261 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:26:01 ] >260 そーゆーことじゃなくね?
262 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:53:33 ] # tr/// が、正規表現とは関係がなく、また文字列を置き換えるものでもないという点は FAQ にも程があるんでこれ以上は自分で調べてもらうとして。 sub to_arabic_number { my $str = $_[0]; my @circles = qw/@ A B C D E F G H I J K L M N O P Q R S/; my @romanU = qw/T U V W X Y Z [ \ ]/; my @romanL = qw/@ A B C D E F G H I/; my $i = 1; foreach (@romanL) { $str =~ s/$_/$i/g; $i++; } $i = 1; foreach (@romanU) { $str =~ s/$_/ $i/g; $i++; } $i = 1; foreach (@circles) { $str =~ s/$_/ ($i)/g; $i++; } return $str; }
263 名前:262 mailto:sage [2008/08/24(日) 01:58:58 ] P.S. >>260 は釣りなのかネタなのか知らんが、武士の情けで見逃してやるから人生やり直して来い。
264 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:08:50 ] >>262 さすがにそのコードは人に見せられるレベルじゃないだろ…
265 名前:デフォルトの名無しさん [2008/08/24(日) 02:10:41 ] >>262 有り難う御座います。 処理速度は遅いような気がするのですがどうでしょうか。
266 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:14:28 ] >>262 よりは>>252 のほうがいいと思うよ
267 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:20:31 ] >>262 は嫌がらせ。
268 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 03:10:52 ] use feature qw( :5.10 ); use Time::HiRes 'sleep'; system q|cls|; #---------------------------------- my @a; @a=localtime; sleep(.5); say "\@a=@a[0..8]"; sleep(.5); say "scalar(localtime)=",scalar(localtime); sleep(.5); say "localtime=",localtime; sleep(.5); localtimeという関数はホンマおもしろいなー 3通りもの出力があるんだから。
269 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 03:49:57 ] oracleにselect文を実行したときの取得レコード件数が知りたいんですが何か方法ありますか? phpだとmysql_num_rows()とか便利なのあるんですけど、perlだとわかんないorz
270 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:00:20 ] エスパー期待してるんですか?
271 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:06:30 ] しゃぶりついてくるやつ期待してるんだろう。
272 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:17:54 ] いや、だから、 oracleにselect文を実行したときの取得レコード件数を 知るための関数でしょ?
273 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:18:41 ] ところで、ファイルに引数を食わせるときに、 スペース混じりの引数を食わせるには、 どうしたらいいですか?
274 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:42:39 ] www.aritia.org/hizumi/perl/perlwin.html ここ読んでたら、なんか 日本語のファイル名も扱える みたいじゃないですか。 どうやるの?
275 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:48:27 ] use feature qw( :5.10 ); system q|cls|; #---------------------------------- "abcde" =~ m/b(.)d/ ; say "$1"; ↑これを実行すると、c、と出てきますが、 ここの$1は、ソースコードの、どこまで有効なの? ずーっと後ろまで?
276 名前:262 mailto:sage [2008/08/24(日) 05:01:37 ] >>265 遅いよー。 括弧を考えず、一桁でいいなら tr/// のが高速。 でも文字列単位の置換、文字数の異なる置換に対応できない。 速度的には、サブルーチンにせず >>266 の言うように全部インラインで書いたほうがマシ。 @circle_patterns = (); foreach (@circles) { push @circle_patterns, qr/$_/; } # (以下必要なセットで繰り返す) # とあらかじめ準備しておいて、 # 置換ループに入ったら、 $i = 1; foreach (@circle_patterns) { $str =~ s/$_/($i)/; $i++; } # (以下必要な...略) # などとやればちょっとは速くなる気がする。 置換対象が行数の多いファイルなら、一気読みで $str にひとつにまとめて突っ込んでしまうのも手。 データの傾向やらで効果的な最適化は変わるだろうから、いろいろ試して比較してみてね。
277 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:01:39 ] >>262 w
278 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:04:26 ] Win32::Soundとかっていう書き方、あるじゃないですか。 これってPerlの世界でのみ、通用するものなの? それとも、一度おぼえたら、他の言語にいっても通用するの?
279 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:13:04 ] $str=~ s/[@-I]/($&)/g; $str=~ tr/@-H/1-9/; $str=~ tr/T-\/1-9/; $str=~ s/[I]]/10/g;
280 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:15:05 ] $str=~ s/[@-I]/($&)/g; $str=~ tr/@-HT-\/1-91-9/; $str=~ s/[I]]/10/g;
281 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:16:29 ] >>276 は嫌がらせの激遅コード
282 名前:262 mailto:sage [2008/08/24(日) 05:18:44 ] >>279 GJ せっかくだからさらにちょっとだけ性能改善。 # 最近の perl では $& のオーバーヘッドってどうなってんだろね? $str=~ s/([@-I])/($1)/g;
283 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:33:01 ] sでも文字クラスって使えるんだ?
284 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:54:56 ] >>269 $sth -> rows; のことか?
285 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 08:47:06 ] うちのバイト募集に>>262 みたいのが来たら、即座に却下だな。 つーか、ゴミでスレを埋め尽くすのはいいかげんやめておくれ。
286 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 11:02:53 ] 初心者です。 配列かなんかに保持しておいて、ループさせるという考え自体は悪くない……ですよね? よほど速度がクリティカルになる状況じゃなきゃ、そこまで酷いとも思えないし。
287 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:10:50 ] 私初心者だけどクリティカルな状況でなければさほど酷くもなかろう と言われましても。
288 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:13:55 ] こんなのはいかが my @circles = qw/@ A B C D E F G H I J K L M N O P Q R S/; my @romanU = qw/T U V W X Y Z [ \ ]/; my @romanL = qw/@ A B C D E F G H I/; my %hash = (); %hash = (%hash, map { $circles[$_-1] => "($_)" } 1..20); %hash = (%hash, map { $romanU[$_-1] => $_, $romanL[$_-1] => $_ } 1..10); sub to_arabic_number { my $str = shift; $str =~ s/([@-ST-]@-I])/$hash{$1}/ge; $str; }
289 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:22:13 ] >>288 [参考になる+11]
290 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:54:50 ] >>288 やるならとことん逝こうぜ。個人的には%hashを全書き換えしてるのが気になる。 my @nums = ( [qw(@ A B C D E F G H I J K L M N O P Q R S)], [qw(T U V W X Y Z [ \ ])], [qw(@ A B C D E F G H I)] ); my %hash = map { my $num = $_; map {$num->[$_ - 1] => "($_)"} 1..(scalar(@$num)) } @nums; my $re = join("", map {$_->[0].'-'.$_->[$#$_]} @nums); sub to_arbic_number { local $_ = shift; s/([$re])/$hash{$1}/geo; return $_; }
291 名前:デフォルトの名無しさん [2008/08/24(日) 13:01:27 ] ------------- >>276 >>288 ありがとうございます。参考になります。 eって遅くなるのかと思って試してませんでした。 文字数によってはeを利用したほうが速くなりそうですね。 単純に-で繋げて表現出来ない文字列も多いので、eが有用というのは私的には!!でした。 色々試してみます。ありがとうございます。 ------------- >>280 >>282 ありがとうございます。そういう方法もあるのですね。一つ一つ書いていくより かなり速くなりました。 I-Sの場合が無いのでまだ速度を比べられないのですが、この場合はどのよう にしたらよいのでしょうか? trではやはり2文字になるのでダメで、一つ一つ書いていく方法しか思い浮かば ないのですが、方法はないのでしょうか?
292 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 13:04:26 ] ■■学校を作ろう!■■ VIP発でサイトを作ろうと思うんだ。(詳しくはWikiを見てくれ) パートスレになるんでパー速(GEP)に移動している。 今スタッフを募集しているから、来てくれないか? ■Wiki www36.atwiki.jp/vipvipschool/ ■募集スタッフ プログラム担当(特にErlang、Perl) デザイナー(サイト上のアイコン、ロゴなど) WEBデザイナー(サイトデザイン案に沿って、htmlやCSSを書ける) 他にも宣伝担当なども募集している。 ■スレ ex14.vip2ch.com/test/read.cgi/news4gep/1219068297/
293 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 13:07:34 ] 見てもらったらわかるが、IRC・スレともに過疎って今にも潰れそうだから行かないほうがいいぞ
294 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:16:48 ] >287 具体的に何が悪いかを指摘せずに、ソースだけ書かれても 後から見た人は困るって意味さ
295 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 15:46:25 ] $str=~ s/([@-H])/($1)/g; $str=~ s/([I-R])/(1$1)/g; $str=~ tr/T-\@-HI-R/1-91-90-9/; $str=~ s/]/10/g; $str=~ s/S/20/g;
296 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 15:54:45 ] >>286 君はプログラミングは諦めて他の道へ進んだ方がいい
297 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 16:06:28 ] >296 質問スレで質問しちゃだめなん?
298 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 16:13:24 ] >>296 っていうか、来ないでくださいって感じ。
299 名前:デフォルトの名無しさん [2008/08/24(日) 16:19:48 ] >>295 そういう方法がありましたか。まったく思いつかなかったです。 試してみます。有り難う御座います。 >>286 考え自体は全然悪くないと思います。 スピードよりも見やすさのほうが通常は大事だと私は思います。 どうやって見やすくかつ速く出来るかで悩みます。 でもどっちを優先するかは時と場合によります。
300 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 18:55:13 ] モジュールWWW::Mechanizeを使って、クッキーの送信と受信をしたいんだけどどうすればいいの?
301 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 20:24:11 ] 質問です。Perlでファイルのアップロードをしようとして フォームから値を送るサンプルを弄くってるのですが my $local = $q->param('upfile'); my $fname = basename($local,""); my $path = '.file'; my $newfile = "$path/$fname"; こういう感じでbasenameを使って、ウィンドウズ環境から上げると パスが .file/C:\Documents and Settings\Admin\デスクトップ\hoge.txt となってしまい、ちゃんとアップできません。 他のサンプルとかでもこうやってるようなのですが みなさんはどうやってるのですか。
302 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 20:30:13 ] すみません my $path = '.file'; は my $path = './file'; です
303 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:33:29 ] >>301 $local =~ tr|\\|/|g; # or $fname =~ s/(?:\\|\/)([^\\\/:*?"<>|]+?$)/$1/; # 思いつきで書いた。どっちもその場しのぎ。当然テストなんかしてない。
304 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:40:39 ] >>303 まあ tr に g オプションはないよな
305 名前:303 mailto:sage [2008/08/25(月) 01:06:49 ] 吊
306 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 01:40:11 ] まぁ、trを正規表現と勘違いしてるやつ多いよな……。
307 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 01:52:09 ] yでおk
308 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:35:23 ] perlちょっと飽きたかも。 入門書読んでも、どの本も 同じことしか書いてないし。 だいたい,スカラー変数の説明から始まって、 配列、ハッシュ、ループ、プリント文、あとなんだ、 サブルーチン、正規表現、こんな感じ。 あとはコンテキストがどうたらこうたら。 演算子の優先順位がどうとか。
309 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:39:17 ] あとは、if文、それと、正規表現で取得した文字列の再利用の方法とか。 あと入出力。それと、変数のスコープとか。 ファイルからの入力、ファイルへの出力。 再帰、引数利用の引数渡し。 それ以上難しいのは、グロブ、レファレンス、パッケージ、 モジュール、二次元配列、二次元ハッシュとかかな。 基本は1ヶ月もやれば覚えてしまうね。目新しさがないというか、 飽きる。「ああまたこれか」みたいな。
310 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:40:40 ] あと、->があったとき、 レファレンスとして使われている可能性と、 オブジェクト指向での記述として使われている可能性と、 2つあるの?
311 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:47:10 ] 今なんか、おもしろそうな機能を発見したぜ $\ use English: $OUTPUT_RECORD_SEPARATOR / $ORS [入出力関連] 出力時の行末文字 デフォルト値は NULL です。 $\ の使い方 $\ = "\n"; print "Hello Perl World !"; ↑これを使うと、行末文字を変更できるのだ ということは「にょ」とかもできるはず。さっそくやってみよう。
312 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:49:15 ] $\ = "にょ"; print "おはよう"; さっそくやってみたぞ 実験結果 おはようにょ 成功!みごと成功したようだ!
313 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 07:32:03 ] >>308 ,309 飽きる原因 ・理解してるのに同じ事を繰り返してる ・理解出来ないのに同じ事を繰り返してる どっちも馬鹿には違いないがw つか、入門書を何冊も読んでる時点で相当の馬鹿 >>311 ,312 チラウラカスうぜぇ
314 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 07:34:56 ] >・理解出来ないのに同じ事を繰り返してる ↓ 何度も同じことを繰り返してるのに理解出来ない の方が良かったな 失敬
315 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 08:19:00 ] スペースキーを押したら、次のメッセージが出る、 っていうのは,Perlでは実装できない? Cのときはできたんだけど。scanfだっけ?
316 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 09:57:01 ] なんか、 pc11.2ch.net/test/read.cgi/prog/1213800787/297 このレベルの話があって、漏れは一回読んで意味がすぐ理解 できたんだけど、 pc11.2ch.net/test/read.cgi/prog/1213800787/298 みたいに、理解できない人もいるみたいなんだけど、 これってコミュニケーション障害?
317 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 10:45:32 ] >>316 俺もわからん。あんたがエスパーなんだろう。 というか板違い甚しい。他所でやってくれ。
318 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:02:52 ] 1〜4 を 0、5〜9 を 10、11〜14 を 10、15〜19 を 20 といった具合に、 四捨五入したいのですが、どのように記述すればいいのでしょうか。 If 文でこつこつ書いて、あまりの多さにめげてしまいました。
319 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:45:56 ] >>318 sub round10 { int(($_[0] + 5) / 10) * 10; }
320 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 13:11:34 ] これ5を代入すると0になるな
321 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 13:31:10 ] 効率いいかしらないけど・・・ print round(10); sub round {sprintf('%.1f',($_[0] / 100 ))*100}
322 名前:321 mailto:sage [2008/08/25(月) 13:34:06 ] 結構古いバージョンから問題なく動いてるコードなんだけど そもそもsprintfって四捨五入するの保証してるのか不明デス
323 名前:318 mailto:sage [2008/08/25(月) 16:21:26 ] ありがとうございます。50行ぐらいあったコードがなくなってすっきりしました。
324 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 17:16:13 ] うちの環境だと、>>319 は正当が出て、 >>321 は、print round 15 すると答えが10が返る。 # ま、原因は浮動小数点の処理にあるのは明白なんだけど。 >>321 氏は「その環境では上手く行ってたとしても別環境では上手く 行かない事がある」程度には認識した方が良いかと。 >>323 何故に50行?ベタ実装してもそんなに行は食わないだろ? sub round { my $t = chop ( my $i = shift ) ; my %h = map{ $_, $_ < 5 ? 0 : 10 } 0..9 ; ( $i || 0 ) * 10 + $h{$t} ; } printf "%d->%d\n", $_ ,round $_ for 0 .. 30 ;
325 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 19:10:41 ] 読めねーw
326 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:47:39 ] >>299 $str=~ s/([@-S])/($1)/g; $str=~ s/([@-S])/ord($1)-ord('@') + 1/eg; $str=~ s/T-]/ord($1)-ord('T') + 1/eg; >>318 $data=~ s/(\d*)(\d)/$1 * 10 + (($2 < 5) ? 0 : 10)/e;
327 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:02:28 ] >>326 $str=~ s/([@-S])/'(' . (ord($1)-ord('@') + 1) . ')'/eg; でいい気がするんだが
328 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:12:57 ] >>318 sub round($) { return $_[0] % 10 >= 5 ? int($_[0]/10+1)*10 : int($_[0]/10)*10; }
329 名前:326 mailto:sage [2008/08/25(月) 21:17:50 ] >>327 そだね あと、ミス × $str=~ s/T-]/ord($1)-ord('T') + 1/eg; ○$ str=~ s/[T-]]/ord($1)-ord('T') + 1/eg;
330 名前:326 mailto:sage [2008/08/25(月) 21:28:07 ] さらに、ミス、スマソ × $str=~ s/T-]/ord($1)-ord('T') + 1/eg; ○ $str=~ s/[T-]]/ord($1)-ord('T') + 1/eg;
331 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:41:15 ] 全部クラス化した方が効率いいだろ。 @num{ord('@')..ord('S')} = 1..20; @num{ord('T')..ord(']')} = 1..10; $str =~ s/([@-ST-]])/$num{ord($1)}/eg;
332 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:44:09 ] あ、上のやつは()つけといてくれ。。。見逃した。 ・・・=map{"($_)"}1..20
333 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:48:50 ] >>324 一応、自己(嫌悪)レス。 sub round{ my $t = chop ( my $i = shift ) ; ( $i || 0 ) * 10 + ( $t < 5 ? 0 : 10 ) ; }
334 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:20:40 ] 質問です。 perlを勉強し始めて間も無い物です。 MacOSX 10.5でLWPを使った簡単なマクロツールを使っているのですが、 Terminalにログをだらだらと表示する画面では無く、 viや、CPANを実行した時の様な専用画面が表示されるようにしたいと考えています(exitを打ち込んだから、shellに戻る様なイメージ)。 ぐぐるにもどう言った言葉で表現すればいいのか分からないので、 困っています。ヒントだけでも良いので押しえてください。 よろしくお願いいたします。
335 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:34:13 ] >>334 Curses
336 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:50:49 ] >>335 ありがとうございます!! 当スレの過去ログ等も調べさせて頂き、 色々見てみたのですが、インストールは出来そうだけど、 perlとどう対話(?)させれば良いのかが分からないです…。 もし私のような初心者にも分かりやすいサイト等があったら お教え頂けますでしょうか。
337 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:52:30 ] ググれよ