1 名前:(・∀・)チンポー!! mailto:(・∀・)チンポー!! [04/06/02 11:39] perl書きなんだがさ、こうリクに答えてなんか作りたいんだ。 だからリクエストをくれ。
367 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 08:47:31 ] 楽天のなら作った事ある
368 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 09:24:49 ] ビックカメラのは組めませんか?
369 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 09:30:28 ] 楽天のは空売りですよ
370 名前:367 mailto:sage [2005/12/07(水) 09:41:05 ] いや、俺は楽天で1円で1GBのmp3プレーヤゲットしたんだがw サンプルページはないのか ビックカメラの 仕様が分からんとどうにもならんだろ
371 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 10:57:09 ] ビックカメラの場合 こういう場合のと www.biccamera.com/bicbic/jsp/w/catalog/detail.jsp?PRODUCT_ID=0010097057 こういう場合のがあるんだけどなんか違うの? www.biccamera.com/bicbic/app/w?ActionType=bw011100_01&PRODUCT_ID=0010007029
372 名前:デフォルトの名無しさん [2005/12/10(土) 15:47:01 ] age保守
373 名前:PAJA [2005/12/10(土) 16:52:51 ] はじめまして、PAJA といいます。 # Vine Linux 3.1 の Perl v5.8.2 です。 ./trial.pl の中で、 `vi ./hoge.txt` と記述したところ、下記のようなメッセージがでてしまいました。 " Vim: 警告: 端末への出力ではありません" やりたいことは、./trial.pl を実行すると "./hoge.txt を vi で開く" ようにすることです。 どうすれば、できるようになるでしょうか。 よろしく、お願いします。
374 名前:デフォルトの名無しさん mailto:sage [2005/12/10(土) 17:23:42 ] system "vi hoge.txt";
375 名前:PAJA [2005/12/10(土) 19:41:10 ] >> 374 ちゃんと開くことが出来るようになりました。 ありがとうございました。
376 名前:デフォルトの名無しさん mailto:sage [2005/12/11(日) 05:44:49 ] >>373 実行したものからの出力を受け取らないならバッククォートは使わない と覚えておくといいよ。
377 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 15:28:53 ] すいません。教えてください。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI"; であるとき $s1が"AI今日U<KAKIKU>SASISU%sNANI"、 $s2が"明日"、 $s3が"明日TU"、 $s4が"TATITU" となるようにするプログラムを教えてください。 どうかよろしくお願いします。
378 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 15:53:09 ] >>377 $s1 = "AI今日U<KAKIKU>SASISU%sNANI"; $s2 = "明日"; $s3 = "明日TU"; $s4 = "TATITU"; それだけしか条件がないとこれでもいいわけだが(笑) どういう規則でそうなるのか例だけじゃわかんね。
379 名前:377 mailto:sage [2005/12/14(水) 16:18:46 ] >378 すいません。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";が条件です。 自分では以下のようにしてやってみていたのですが、うまくいきません。 @list = split (/,/, $_); if ($list[2] =~ /<[A-Z]+\*[A-Z]+>/) { ($s1 = $list[2]) =~ s/[^A-Z][^<]*<[A-Z]+\*[A-Z]+>/%s/g; @s2 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*[A-Z]+>/o; $s2 = $s2[0].$s2[1]; @s3 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*([A-Z]+)>/o; $s3 = $s2[0].$s2[1]; @s3 = $list[2] =~ /<([A-Z]+)\*{1}([A-Z]+)>/g; $s3 = $s3[0].$s3[1]; }
380 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:30:10 ] だめだ。問題を説明する能力のない人らしいので エスパーさん出番です。
381 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2005/12/14(水) 16:48:42 ] こうかな。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI"; (my $s1 = $_) =~ s/([^A-Z<]+)<([A-Z]+)\*([A-Z>]+)>/\%s/; my $s2 = $1; my $s3 = $1 . $3; my $s4 = $2 . $3; use Data::Dumper; print Data::Dumper->Dump([$s1, $s2, $s3, $s4], [map { 's'.$_ } (1 .. 4)]); >>377 誰にでも理解できるように仕様を説明するように。 具体的に言うと、小学生にも分かるように。
382 名前:377 mailto:sage [2005/12/14(水) 17:07:42 ] というか、解決?かどうかまだ不明ですが一応出来ました。 379は貼り間違いました。↓は解決?したものです。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI"; ($s1 = $_) =~ s/[^A-Z][^w]{1,3}<[A-Z]+\*[A-Z]+>/%s/g; print "$s1\n"; @s2 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}[A-Z]+>/o; print "@s2\n"; @s3 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}([A-Z]+)>/o; print "@s3\n"; @s4 = $_ =~ /<([A-Z]+)\*{1}([A-Z]+)>/g; print "@s4\n"; これで一応目的の動作をするのですが、 2行目が特によくわかりません。 [^A-Z][^w]{1,3}は何でしょうか? [^w]って何?ワード文字?ワード文字は\wですよね? [^w]を普通に読むとwという文字以外すべてだと思うのですが。
383 名前:377 mailto:sage [2005/12/14(水) 17:14:38 ] >381 わかりにくくてすいません。 目的は文字列中の<*を含む英大文字>の部分とその直前の漢字の展開です。
384 名前:デフォルトの名無しさん [2005/12/23(金) 19:01:41 ] メートル単位の長さを与えて、それをヤードに変換して表示するプログラムを教えてください。 1メートルは1.1ヤードとしてください。
385 名前:デフォルトの名無しさん [2005/12/23(金) 19:03:08 ] インボカントって何か教えてください
386 名前:384 [2005/12/23(金) 19:11:02 ] 追記します。 メートル単位の長さをヤードに変換したり、ヤード単位の長さをメートルに変換するプログラムを教えてください。 >>384 でかいたような一方通行のプログラムでしたら分かります。 上のような場合、どうやって分岐(?)させればよいのでしょうか?
387 名前:384 [2005/12/23(金) 19:17:39 ] >>384 について考えたプログラムを載せておきます。 どなたか、>>386 のように改変してください。。。 use strict; my ($meter, $yard); print "長さをメートルで入力してください"; $meter = <STDIN>; chomp ($meter); $yard = $meter * 1.1; print "$meterメートルは$yardです。\n";
388 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 20:02:18 ] >>387 入力値がメートルとした場合のヤードの値 入力値がヤードとした場合のメートルの値 を計算して結果を2行書けばいいんじゃね?
389 名前:デフォルトの名無しさん [2005/12/23(金) 22:21:41 ] >>388 なるほど。 入力時の数字が、10だったら 10メートルは***ヤードです。 10ヤードは***メートルです。 とすれば良いのですね。 逆転の発想ですね!ありがとうございます。
390 名前:デフォルトの名無しさん mailto:sage [2005/12/24(土) 00:19:30 ] それなんて宿題
391 名前:デフォルトの名無しさん [2005/12/24(土) 17:51:13 ] age 宿題でもどーんとこいや
392 名前:デフォルトの名無しさん mailto:sage [2005/12/25(日) 18:26:07 ] perl -MO=Xref,-r hoge.pl の結果から以下のような結果を整形してみたいです。出してください。 ■結果 hoge.pl 250<0>main() hoge.pl 160├<1>get_home_directory() hoge.pl 135│└<2>usage() hoge.pl 190├<1>read_configration() hoge.pl 220│└<2>get_string() <<略>>
393 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2005/12/25(日) 19:31:09 ] >>392 -r 付けなきゃそれっぽくならんかね。
394 名前:デフォルトの名無しさん mailto:sage [2005/12/26(月) 00:01:42 ] あれだと、エディタのタグジャンプ使えないし、みづらいので。 cの関数コールグラフ書くフリーウェアのfunctreeみたいな使い勝手 のものが欲しいです。
395 名前:デフォルトの名無しさん mailto:sage [2005/12/26(月) 11:49:52 ] >>386 引数で数値の後に m が付いていたらメートル、yが付いていたら ヤード、ということにするならこんな感じか。 #!/usr/bin/perl -w use strict; for(@ARGV) { if(/^(\d+(\.\d+)?)(m|y)$/) { if ($3 eq 'm') { print "$1 メートル = " . ($1 * 1.1) . " ヤード\n"; } else { print "$1 ヤード = " . ($1 / 1.1) . " メートル\n"; } } else { print STDERR "$_: 解釈できません。\n"; } }
396 名前:デフォルトの名無しさん [2006/01/13(金) 16:15:09 ] 1 INDATEというファイルの中身を読み込んで処理するものであること。(INDATEも提出すること) 2 少なくとも一個のif文をつかっている。 3 for.while.foreachなどの繰り返しを少なくとも一個は使っている。 4 少なくとも一個の配列を使っている。 5 少なくとも一個の引数を使っている。 6 以下の様に実行することでOUTDATEに結果が出力される。 %KADAI3<INDATE>OUTDATE 注:3は引数である。 という課題です。頼みます。
397 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:17:49 ] >>396 教科書に答えが。
398 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:18:35 ] >>397 う・・・
399 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:40:59 ] なんだその意味不明な課題 俺が馬鹿なだけかもしれんが、何をしたいのか訳わからん
400 名前:デフォルトの名無しさん [2006/01/13(金) 16:44:17 ] >>399 1〜6を満たす自由な機能のプログラムを作るって課題なんですが…
401 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:47:08 ] ああそういう意味か %KADAI3<INDATE>OUTDATE まだこれの意味が分からんが
402 名前:デフォルトの名無しさん [2006/01/13(金) 16:56:45 ] >>401 Terminalで入力したらってことだからあまり関係ないです。ごめんなさい。
403 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 17:28:01 ] それDATEじゃなくてDATAだろ
404 名前:デフォルトの名無しさん [2006/01/13(金) 17:37:44 ] >>403 そうです。ほんとごめんなさい。
405 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 21:34:26 ] 結局>>397 でFAだな
406 名前:デフォルトの名無しさん [2006/01/14(土) 07:43:38 ] そんなぁ・・・
407 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 09:42:00 ] #!/usr/bin/perl use LWP::Simple; $url = 'girls.twistys.net/preview/ '; for ($i=1; $i<=500; $i++) { $num = sprintf("%03d", $i); $_ = get($url.$num."/"); s/\w*\d{1,2}\.jpg/push @jpgs, $&/eg; foreach $jpg (@jpgs) { getstore($url.$num."/".$jpg, $num.$jpg); } }
408 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 08:50:23 ] 仲間分けについてのプログラムについて教えてください 1番と3番 1番と5番 1番と7番 2番と6番 2番と8番 3番と5番 3番と11番 が仲間です 配列には上から 1\t3 1\t5 ……のように入っています この時1,3,5,7,11 と 2,6,8 のように仲間に分けるプログラムを作ってください
409 名前:ゆみ [2006/01/16(月) 11:24:17 ] Perl初心者です。教えてください。 日付,メールアドレス 日付,メールアドレス 日付,メールアドレス ・ ・ ・ と数万行も続くデータから、重複メールアドレスが存在したときは その行を取り除くということは出来るのでしょうか。 困っています(;;)教えてください。
410 名前:デフォルトの名無しさん [2006/01/16(月) 11:39:46 ] できるよ
411 名前:ゆみ [2006/01/16(月) 11:44:33 ] どうやればいいのでしょうか? 是非教えてください。。。
412 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 11:44:49 ] >>409 perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv
413 名前:ゆみ [2006/01/16(月) 11:51:59 ] >>412 ありがとうございます(*^^*) これはコマンドプロンプト(PC)上で行う処理方法でしょうか? サーバー上のCGIファイルの中で処理する場合の書き方はありますか? またin.csvというのが元のデータファイルで、out.csvというのが 出力された新しいファイルですよね?
414 名前:ゆみ [2006/01/16(月) 12:02:04 ] perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv これも試してみましたがうまくいきません。 1万行以上あるのに新しく作られたファイルは60行足らず。 もしかすると私の説明不足なのかもしれません。 重複したメールアドレスの存在しない日付,メールアドレス のリストを作りたいのですが。。。 意味わかりますでしょうか(**)ごめんなさい。。。
415 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 13:54:12 ] >414 m月d日に誰からメールが来てるかのリストを作るのか? だったらDBに読み込んでクエリ書いた方が手っ取り早いと思われ。 SELECT dateval, addr FROM infile GROUP BY dateval, addr;
416 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 15:43:02 ] >>414 てことはまず日で分けて、その中に同じアドレスがあっても1つで出すということだな。 じゃあこれを参考に作れ。 my %data; while (<>) { chomp; if (/^([^,]+),(.+)$/) { $data{$1}{$2} = 1; } } for my $day (sort keys %data) { for my $addr (sort keys %{$data{$day}}) { print "$day,$addr\n"; } }
417 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 15:45:47 ] >>408 何がどう仲間なのか全然分からん。 もっと詳しく説明するように。
418 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 19:15:13 ] >>408 こんなのか?データは標準入力から。 my @ary=(); my @index=(); sub pushme($$) { my ($ary,$val)=@_; my $i; for($i=$val;!UNIVERSAL::isa($ary->[$i],'ARRAY');$i=$ary->[$i]){} push(@{$ary->[$i]},$val); } while($_=<STDIN>){ /^(\d+)\t(\d+)$/; if(defined($ary[$1])){ $ary[$2]=$1; pushme(\@ary,$2); }elsif(defined($ary[$2])){ $ary[$1]=$2; pushme(\@ary,$1); }else{ my @newary=($1,$2); $ary[$1]=\@newary; $ary[$2]=$1; } foreach(@ary){ if(ref($_) && ref($_) eq 'ARRAY'){ print join(",",@$_)."\n"; } }
419 名前:418 mailto:sage [2006/01/16(月) 19:18:56 ] 本当は sub pushme に \@ary 渡すのは蛇足。 渡さなくともここでは @ary は有効なスコープ。
420 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 20:08:55 ] >>408 @list = ( "1\t3", "1\t5", "1\t7", "2\t6", "2\t8", "3\t5", "3\t11" ); $tmpstr .= join ':', map "\t$_", @list; 1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*):((?:[^:]*:)*)((?:\t\d+)*)\1((?:\t\d+)*)(?::|$)/$1$2$4$5:$3/; 1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*)\1(?=\t|:)/$1$2/; @grouping = map [/(\d+)/g], split ':', $tmpstr; $" = ","; print "@{$grouping[0]}と@{$grouping[1]}\n";
421 名前:408 [2006/01/16(月) 21:04:13 ] 配列に@nakamaに上から $nakama[0]="1\t3"; $nakama[1]="1\t5"; …… という風に入っていて、それぞれ1と3は仲間、1と5は仲間という意味になっています。 1と3が仲間で、3と11が仲間であれば1と11も仲間とします。 これで>>408 を 1,3,5,7,11と 2,6,8に分けたいのです。
422 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 21:06:04 ] >>420 おお、更新していなくて分かりませんでした。 それでうまく出来ました。ありがとうございます!
423 名前:ゆみ [2006/01/16(月) 23:00:24 ] 409です。>>416 さん有難う御座います。。。 私はホントに初心者で・・・説明べたで申し訳御座いません。 416さんのは同じ日付内で同じメアドがあった場合、排除するという 内容でしょうか? たとえば 1月1日,aaa@aaa.aa.aa 1月1日,bbb@bbb.bb.bb 1月1日,ccc@ccc.cc.cc 1月2日,aaa@aaa.aa.aa 1月2日,bbb@bbb.bb.bb 1月3日,bbb@bbb.bb.bb 1月3日,aaa@aaa.aa.aa 1月4日,ccc@ccc.cc.cc とあった場合、 ↓↓↓変換後↓↓↓↓ 1月3日,bbb@bbb.bb.bb 1月3日,aaa@aaa.aa.aa 1月4日,ccc@ccc.cc.cc というように同じメアドが重複しないように更に日付は最新(最下段) の日付を付けてリスト化したいのです。。。 日付は最上段のものでも構いませんが。。。 出来れば。。。できれば。。。データファイルの読み込み部分から 解説して頂けないでしょうか。。。DBではなく、テキストファイルなんです。。。 本当にすみません(><)(;;)
424 名前:デフォルトの名無しさん [2006/01/16(月) 23:19:38 ] ファイル読み込みくらいなら、perl入門のサイトや本で調べられるだろ
425 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:25:50 ] >>423 初心者初心者連呼するならエクセルのフィルタ使うとかにしたほうがいいんでない?
426 名前:ゆみ [2006/01/16(月) 23:33:08 ] >>424 厳しいお言葉・・・有難う御座います。 ではファイルの読み込み部分は結構です。。。 >>425 それでは意味がないのです。。。 お願いします!!!(;;)
427 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:39:52 ] こんな擦れ合ったのか〜 次の答えを教えてください。 以下のタグを結合したい。 (1)<M>hogeM</M><X>hogeX</X> → <X>hogeMhogeX</X> (2)<X>hogeX</X><M>hogeM</M> → <X>hogeXhogeM</X> (3)<M>hogeM</M><X>hogeX</X><M>hogeM</M> → <X>hogeMhogeXhogeM</X> ※<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeX</X> は結合しない。 <例> ※以下は一行で、\ は連結の意味です。 ......hoge.......<M>hogeM</M><X>hogeX</X>.....\ ........hoge......<X>hogeX</X><M>hogeM</M>.....\ .....hoge.........<M>hogeM</M><X>hogeX</X><M>hogeM</M>...\ .........<X>hogeX</X>................<M>hogeM</M>..\ ..<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X> ↓ ......hoge.......<X>hogeMhogeX</X>.......\ ......hoge......<X>hogeXhogeM</X>..........hoge....\ .....<X>hogeMhogeXhogeM</X>............<X>hogeX</X>...\ .............<M>hogeM</M>...\ .<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X> 正規表現でも、何でもOKなのでお願いします。
428 名前:デフォルトの名無しさん [2006/01/16(月) 23:52:53 ] 難しかったかな?
429 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 00:12:25 ] >>427 ヒント: 解く奴も人間
430 名前:デフォルトの名無しさん [2006/01/17(火) 00:36:53 ] >>427 無理
431 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:53:26 ] >>426 意味がないってどういうこと? csvをエクセルに読み込んで重複を消すだけじゃないの? 知識らしい知識もいらんし煽りじゃなくあなたのような人向けだと思うが。
432 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:59:03 ] >>413 でCGIで動かしたいってあるよ
433 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:50:39 ] >>423 while (<$fh>) { chomp; my($date, $mail) = split /,/; $mails{$mail} = $date; } 後は自分で何とかしろ。
434 名前:ゆみ [2006/01/17(火) 10:20:52 ] >>433 さん 素敵です! あまりハッシュって使ったこと無かったので・・・ 出来ました!!!有難う御座います!!!
435 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 21:48:54 ] <2></2>を削除する正規表現教えて (例) .....<1>.....<2>....</2>....<1>..... ↓ .....<1>.............<1>.....
436 名前:デフォルトの名無しさん [2006/01/25(水) 21:50:42 ] s/.....<1>.....<2>....</2>....<1>...../.....<1>.............<1>...../g
437 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 21:51:45 ] >>435 だけど 間違えた。 <2></2>を削除する正規表現教えて (例) .....<1>.....<2>....</2>....</1>..... ↓ .....<1>.............</1>.....
438 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:08:10 ] 正規表現の基礎の基礎じゃないか
439 名前:マル mailto:sage [2006/01/26(木) 01:37:34 ] 掲示板スクリプトで、名前が「あ」か「い」か「う」の人以外は書き込みできない、 という風にする場合 if ($name !/あいう/) { &error("名前が間違っています",'NOLOCK'); } ではないですよね。 「あ」か「い」か「う」というのはどう書けばいいでしょうか。
440 名前:& ◆p8OCeNXbYU mailto:sage [2006/01/26(木) 01:43:21 ] すみません。実際には「あ」か「い」か「う」ではなく、 「一」か「二」か「三」か・・・「三十五」か「三十六」という風になります。 一〜三十六までの漢数字を入れなければ投稿できない、という風にしたいのです。 自動で貼られてしまう広告よけのためなのですが、 何卒よろしくお願い致します。
441 名前:マル [2006/01/26(木) 01:50:09 ] 440=439です。
442 名前:& ◆p8OCeNXbYU mailto:sage [2006/01/26(木) 02:34:09 ] すみません。できました。 |で区切ればorの意味になるようでした。 if ($name !~/一|二|三/) { &error("名前が間違っています",'NOLOCK'); } というような感じで動きました。失礼しました。
443 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 03:41:24 ] これも正規表現の基礎の基礎の基礎だよな・・ マジで・・
444 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 10:33:45 ] <2>.*?</2>
445 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 12:21:36 ] >>444 ><2>.*?</2> ".*?"という文字列はGoogleで検索できないため、申し訳ありませんが、 意味を教えていただけますでしょうか? .*は文字の0個以上(.+は1個以上)にマッチだと思いますが、これに?が付いた .*?がいまいち、よく分かりません。
446 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 12:50:59 ] >>445 Perl はググる前に perldoc 。 www.kt.rim.or.jp/~kbk/perl5.005/perlre.html#Regular_Expressions
447 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 11:51:12 ] >>442 use encoding でエンコード指定しておいて $name !~ /[あいう]/ で判定する方がいいと思う。
448 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 11:54:17 ] >>445 最小マッチ デフォルトは最大でマッチする。 たとえば 'abcabcabcabc' という文字列に対して /a.*a/ は 'abcabcabca' の部分がマッチするが /a.*?a/ だと 'abca' がマッチする。
449 名前:sage mailto:sage [2006/01/27(金) 17:48:26 ] >>448 , 446 ありがとうございます。 >最小マッチ Perl歴17年ですが、この正規表現は見落としていました。 わざわざ、(1)のような書き方をしてきましたが、 (1) <2>[^<]*</2> (2)の方が読みやすいですね? (2) <2>.*?</2> 勉強になりました。
450 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 17:53:34 ] はぁ、どうして下らない嘘をつくかな
451 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 17:54:23 ] >>449 詳説 正規表現 第2版まじおすすめ
452 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 19:28:06 ] Perl 歴 17 年で正規表現もまともに使えないなんて、そんなの「歴」のうちに入らんよ。
453 名前:449 mailto:sage [2006/01/27(金) 21:55:45 ] >>452 >Perl 歴 17 年で正規表現もまともに使えない 正規表現の基本が分かっていなかったので、人にPerlを教える のは無理でしょうが、研究機関の仕事を主にPerlでこなして きたことは嘘ではありません。どんな書き方でも、限られた 時間内にバグがないスクリプトが書ければ、仕事がこなせま す。 perlの良いところは、Larry Wallが言うように、>> 449 の (1)でも(2)でも、様々な方法で目的が達成できる点です。
454 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:01:37 ] なんつーか・・ 一生VB・HSPやってるようなモンだな 進歩がなけりゃただの・・
455 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:12:42 ] 449 の2しか知らん
456 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 23:32:19 ] >>453 こなせてないじゃん。 >>435 程度のことも人に聞かないと出来ないんだろ?
457 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 14:14:55 ] Perl って1987年12月生まれなんだな。18年前か history.perl.org/PerlTimeline.html まあ17年前からPerl(というかUNIX)やってて正規表現知らないなんて ありえない
458 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 15:43:49 ] 「Perlプログラマのレベル10」 ttp://d.hatena.ne.jp/naoya/20050809/ のレベル5に > 多くの人たちがこのレベルを超えないのは、たとえ非効率であっても、 > 再利用可能なコンポーネントの作成を除けば、ほどんど何でもできるからである。 とあるように、必要性を感じられなければそれ以上のものはなかなか知ることが出来ないんだろうね…人間ってのは。 この機会にPerl5の奥深さを学んでみたらどうだ?その霧の先には素晴らしい世界が広がっているぞ
459 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 17:48:46 ] >>457 最短マッチが使えるようになったのはPerl5以降だよ。 それ以前に覚えた正規表現をそのまま使い続けていたんだろうね。
460 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 18:00:14 ] ああ、最短マッチを知らなかったってことだったのか 斜め読みしてた
461 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 15:42:23 ] >>449 くっ。負けた。俺、Perl歴16年。
462 名前:デフォルトの名無しさん [2006/01/31(火) 17:18:44 ] お願いします。 ♂チームと♀チームが2つのコートで♂♀別総当り戦をしたく 両コート同時進行として ♂が4チーム・♀が2チームの場合・・・ 【Aコート】 【Bコート】 ♂1-♂2 ♂3-♂4 ♀1-♀2 ♂1-♂3 ♂2-♂4 ♀1-♀2 ↑の3回戦で総当りになる。 では♂が7チーム・♀が3チームってなったとき どう組み合わせればよいかみたいなのを計算させたいです。 できれば3連チャンとかで試合することにならないように・・・
463 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 17:30:13 ] >>462 ♀1-♀2 が2回あるのはただの総当りではないと思われるが どういう規則なのかね?
464 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 11:03:17 ] >>463 スミマセン間違いです・・・。 ♂が4チーム・♀が2チームの場合・・・ 【Aコート】 【Bコート】 ♂1-♂2 ♂3-♂4 ♀1-♀2 ♂1-♂3 ♂2-♂4 -
465 名前:デフォルトの名無しさん mailto:sage [2006/02/05(日) 15:52:03 ] >>462 こうですか? わかりません。 use strict; use warnings; local($a,$b); my(@t,@p,@f,@ct,$w,$i,$j,$k); ($t[0],$p[0])=('',$f[0]='0'); $t[$_]='♂'.$_,$p[$_]=0,$f[$_]='011111111000',substr($f[$_],$_,1)='0' for (1..8); $t[$_]='♀'.($_-8),$p[$_]=0,$f[$_]='000000000111',substr($f[$_],$_,1)='0' for (9..11); @ct=('A:',' B:'); do { ++$_ for (@p); for (@ct) { $a=$b=$w=0; for $k (1..$#p) { $i=$j=0; ($i,$j) = ($p[$_]>$j && substr($f[$_],$k,1))?($_,$p[$_]):($i,$j) for ($k..$#f); ($a,$b,$w) = ($k,$i,$j<$p[$k] ? $j : $p[$k]) if $p[$k] && $j && ($w<$p[$k] || $w<$j); } print $_,$t[$a],'−',$t[$b]; $b=$p[$a]=$p[$b]=substr($f[$a],$b,1)=substr($f[$b],$a,1)=0; } print "\n"; $b+=/1/ for (@f); } while($b);
466 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 13:29:43 ] >>462 CPAN には、順列、組み合わせを扱う Algorithm::Permute というモジュールがある。これが使えるんじゃないの? (オレは使ったことは無いけど)
467 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 10:27:13 ] 総当たりの全組合せを求めた後で、それの並べ方を考えればいいのでは ないだろうか。同じチームがなるべく連続しないようにするなど。 そして最後にコート分けする。