トップページ⇒tech
1001コメント344KB

Perlについての質問箱 28箱目

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2006/10/31(火) 14:52:21
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

http://www.perl.org/get.html
● 2006/10/31現在の最新版: 5.8.8
● 2006/10/31現在の開発版: 5.9.3

前スレ
Perlについての質問箱 27箱目
http://pc8.2ch.net/test/read.cgi/tech/1157874614/

リンク集は>>2-3
過去スレは>>4
0951デフォルトの名無しさん2006/12/20(水) 21:31:31
>>940
なぜ正規表現。ref 使ってくれ…。
0952デフォルトの名無しさん2006/12/20(水) 21:53:05
>>949
Perl には continue なんてありませんが、next なら使えます。
0953デフォルトの名無しさん2006/12/20(水) 22:17:02
>952
待て。ちょっと待て。
0954デフォルトの名無しさん2006/12/20(水) 22:25:09
>>952
がんばって生きろ。
0955デフォルトの名無しさん2006/12/20(水) 22:25:47
>>949
まずやってみれ。
0956デフォルトの名無しさん2006/12/20(水) 22:33:36
あー ループブロックの後ろに付ける continue ブロックってあったねそういえば orzz
あんまり使わないし見ないので忘れてた(´・ω・)
09579372006/12/20(水) 23:41:42
>939
ありがとう。じゃああきらめて別の書き方しよう。
0958デフォルトの名無しさん2006/12/21(木) 00:59:11
>>937
開いたファイル名を何がしかの形で保存しておくだけで実現すると思うんだけれど。
取り出せないファイル名でファイルを open するというのは、少なくともぼくはやったことがないので。

それでもちゃんと CPAN には、
FileHandle::Deluxe
による文字列化機能があります。
09599372006/12/21(木) 01:11:38
>958
うわ、ありがとう。
インターフェース的に、ファイルハンドルだけ渡したほうが
すっきりするような状態になってたからすごく助かる。
0960デフォルトの名無しさん2006/12/21(木) 19:21:23
$x、$y、$zを大きい順に並び替える場合
どうすればよいのでしょうか?
0961デフォルトの名無しさん2006/12/21(木) 19:33:51
配列に突っ込んでソート
09629602006/12/21(木) 19:40:20
ソートの方法がわからないのですが・・・
0963デフォルトの名無しさん2006/12/21(木) 19:41:51
ココってperl初心者スレだっけ?
0964デフォルトの名無しさん2006/12/21(木) 19:45:26
検索ぐらいしてください。いくらでも例つきで出てきます。
ttp://www.google.com/search?num=50&hl=ja&q=Perl+sort&lr=lang_ja

ちなみに、sortにリストで渡して、結果をリストで受ければ配列要らず。
09659602006/12/21(木) 19:47:13
できればソートを使わずに、配列で表示させたいです。
0966デフォルトの名無しさん2006/12/21(木) 19:47:38
使えよwwww
09679602006/12/21(木) 19:49:04
やはり使わないと不可能でしょうか?
09689662006/12/21(木) 19:52:05
すまん言い方が悪かった。なんかウケてしまったw
ソートってのは並び替える関数だから覚えると便利だよ
リストと配列の違いも調べるといいよ
sort使わずに、っていう条件なら住人の食いつきもいいかも。
09699602006/12/21(木) 19:53:42
>>968
sort使わずにの条件でお願いします。
0970デフォルトの名無しさん2006/12/21(木) 19:57:39
なんで?理由は?
0971デフォルトの名無しさん2006/12/21(木) 19:59:54
比較演算子とかifとか知らないのかな
0972デフォルトの名無しさん2006/12/21(木) 20:03:55
どう考えてもこれで十分だろ。
($x, $y, $z) = sort { $b <=> $a } ($x, $y, $z);
0973デフォルトの名無しさん2006/12/21(木) 20:12:01
sortを使わないとなると、if文やリスト、配列を使うのでしょうか?
0974デフォルトの名無しさん2006/12/21(木) 20:25:37
>>973
変数3個なら並び方は順列で6通りだから if〜elsif 文でなんとかなるだろ
0975デフォルトの名無しさん2006/12/21(木) 20:26:12
$i = @nums = ( $x, $y, $z );
foreach (0 .. $i) {
  foreach (0 .. @nums) {
    @nums[ $_, $_ + 1 ] = @nums[ $_ + 1, $_ ] if $nums[$_] < $nums[ $_ + 1 ];
  }
  unshift @sorted, pop @nums;
}

sort() を使わないと、こんな愉快なコードを保守する破目になりますが、かまいませんか?
0976デフォルトの名無しさん2006/12/21(木) 20:35:39
それは変数三つに対して大仰だろう
if ($x < $y) { ($x, $y) = ($y, $x) }
if ($y < $z) { ($y, $z) = ($z, $y) }
if ($x < $z) { ($x, $z) = ($z, $x) }
0977デフォルトの名無しさん2006/12/21(木) 20:39:14
って順番間違えたorz 正しくはこうだ
if ($x < $y) { ($x, $y) = ($y, $x) }
if ($x < $z) { ($x, $z) = ($z, $x) }
if ($y < $z) { ($y, $z) = ($z, $y) }
0978デフォルトの名無しさん2006/12/21(木) 20:55:22
そろそろ >>960 の釣り宣言が入る頃だな
0979デフォルトの名無しさん2006/12/21(木) 20:57:04
>>976-977
スネーク、三大美徳の基本を思い出して!
09809602006/12/21(木) 21:05:54
@a=($a=10,$b=5,$c=30);

if($a<$b){
($a,$b)=($b,$a)
} elsif($a<$c){
($a,$c)=($c,$a)
} elsif($b<$c){
($b,$c)=($c,$b)
}

print $a $b $c

xyzをabcに変えました。
これでできません・・・どうしたらよいのでしょうか?
09819602006/12/21(木) 21:27:49
教えてくれるほどの技術の人が居ないようなので
別のところで質問することにします。
さようなら
09829602006/12/21(木) 21:29:31
>>981
偽者はやめてください
0983デフォルトの名無しさん2006/12/21(木) 21:31:29
>>980
自分で$x,$,$zで質問して、なぜ$a,$b,$cに代えるの?
無知なフリして無駄に時間を使わせないで下さい
しかもつまらないし

皆さんも、親切なだけではなく、ガマン強いですね
もう相手にするのはやめては?
0984デフォルトの名無しさん2006/12/21(木) 21:36:33
>>980
上のほうで if (条件) { ブロック } を3つ並べる例を出してもらってるのに
if〜elsif〜elsif〜に動作変えちゃったのはなぜ?

つーか、sort で…というのを踏まえて $a $b を使う方向に変えたのかなあ。
09859602006/12/21(木) 21:44:48
($x=10,$y=100,$z=30);

if ($x < $y) {
($x, $y) = ($y, $x)
} if ($x < $z) {
($x, $z) = ($z, $x)
} if ($y < $z){
($y, $z) = ($z, $y)
}

print "$x,$y,$z";

でやったらできました。
しかしifの中がいまいちわかりません。。
0986デフォルトの名無しさん2006/12/21(木) 21:59:17
>>979
そうだ、プログラマは無精であるべきだったな。
対象が増えることを予期するべきだった。私とした事が。
罰として久しぶりに次スレ建ててくる。
0987デフォルトの名無しさん2006/12/21(木) 21:59:40
どうしてsortを使わないのかいまいち分かりません。。

本当は分かるけど。課題なんだろ。
0988デフォルトの名無しさん2006/12/21(木) 22:29:51
>>986はスレ立てを蹴られたのか、テンプレの準備がなかなか進まないのか。
0989デフォルトの名無しさん2006/12/21(木) 22:31:27
ごめん、蹴られて別回線使おうとしてたところだけど駄目だった。
09909882006/12/21(木) 22:33:59
俺も蹴られたらどうしよう?と思いながら逝ってくる。
0991デフォルトの名無しさん2006/12/21(木) 22:38:00
無事に立ちました。次スレ。
Perlについての質問箱 29箱目
http://pc8.2ch.net/test/read.cgi/tech/1166708139/
0992デフォルトの名無しさん2006/12/21(木) 22:41:52
うめ
0993デフォルトの名無しさん2006/12/21(木) 22:42:02
うめ
0994デフォルトの名無しさん2006/12/21(木) 22:42:17
うめ
0995デフォルトの名無しさん2006/12/21(木) 22:42:54
うめ
0996デフォルトの名無しさん2006/12/21(木) 22:43:29
うめ
0997デフォルトの名無しさん2006/12/21(木) 22:43:35
うめ
0998デフォルトの名無しさん2006/12/21(木) 22:43:37
$s = q{$self->kakikomi(qq{\$s = q{$s};\n$s\n__END__\n埋め})};
$self->kakikomi(qq{\$s = q{$s};\n$s\n__END__\n埋め});
__END__
埋め
0999デフォルトの名無しさん2006/12/21(木) 22:43:50
うはww
1000デフォルトの名無しさん2006/12/21(木) 22:44:10
1000なら彼女できる
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。