Perlでリクに答えるスクリプトを作るスレat TECH
Perlでリクに答えるスクリプトを作るスレ - 暇つぶし2ch175:デフォルトの名無しさん
05/02/10 22:46:47
>>174
ちょっとした遊びでコードを書いたりするのは君には理解できないんだろうよ。

176:デフォルトの名無しさん
05/02/10 22:48:47
誰もあなたの遊びを手伝いません

177:デフォルトの名無しさん
05/02/10 23:11:56
ここはビジネスライクなインターネットですね。

178:デフォルトの名無しさん
05/02/10 23:14:53
>>169
こんな感じ?

undef $/;
open ( IN, "test.htm" ) or die "boo!";
$data = <IN>;
close( IN );
$data =~ s/<a href=.*?<dl>.*?<dt>//gs;
print $data;


179:デフォルトの名無しさん
05/02/11 10:27:51
スレッドを使ったちょっとしたスクリプトを作ってください

180:デフォルトの名無しさん
05/02/11 12:43:59
>>179
つ[perldoc thread]


181:デフォルトの名無しさん
05/02/15 07:58:35
URLをフォームに入れて送信するだけで、リンク先のページの<title>タイトル</title>を抽出して、
<a href="URL">タイトル</a>
という具合に自動で整形してくれるスクリプトってないですか?
モジュールは「HTML-Parser-3.36」が使えます。

182:デフォルトの名無しさん
05/03/12 07:18:12
>>181
Perl使え

183:デフォルトの名無しさん
05/03/12 16:06:20
むしろRuby使えよ
Perlみたいな糞言語は使うな。

184:デフォルトの名無しさん
05/03/12 16:17:13
Rubyも使えない糞が何か言っています

185:デフォルトの名無しさん
05/03/23 22:00:57
Rubyって何?ダサッ

186:デフォルトの名無しさん
05/03/23 23:21:07
phpならfile()→正規表現→ゲチュー終了

187:デフォルトの名無しさん
05/03/24 17:06:14
CGI作れ


188:デフォルトの名無しさん
05/03/25 13:15:42
>>1よ、2ちゃんブラ作れ

189:デフォルトの名無しさん
05/03/26 14:47:40
やだアンタ、そういう趣味ー?
今時柄付きブラなんて付けてるオンナなんて… い な い わ よ

190:デフォルトの名無しさん
05/03/26 20:37:08
>>189
何だこれ

191:デフォルトの名無しさん
05/03/28 01:12:33
ユーザー名と適当な紹介欄と所持金とpassを入力してアカウントを作成して、ユーザーは登録したアカウントにログインして所持金や登録情報を変更可能。
また、ユーザー一覧を見ることが出来、所持金や名前でソート可能。

見たいなのお願いします

192:1じゃないけど
int 2ch =05/04/02(土) 11:30:14
暇なんで依頼があれば作れます

[無理な物]
既存CGIと違いがないもの
既存CGIの改造
大規模すぎるもの

一週間後にまとめて公開します


193:デフォルトの名無しさん
int 2ch =05/04/02(土) 14:09:26
AGE

194:デフォルトの名無しさん
int 2ch =5年,2005/04/02(土) 16:33:42
>>192
過去スレにいろいろあるよ。ひまつぶしに出来そうなの。

195:デフォルトの名無しさん
int 2ch =5年,2005/04/02(土) 16:34:17
あ、過去スレじゃなくて過去レスだ。

196:デフォルトの名無しさん
05/04/03 16:41:54
>>192
指定した数値ぶんの長さの文字列を生成するスクリプト

197:192じゃないけど
05/04/03 17:15:32
&print_str_rand(9);

sub print_str_rand {
for(1..$_[0]){ printf('%c', int(rand(94)) + 32); }
}

198:デフォルトの名無しさん
05/04/03 17:53:21
ゆうパックの箱サイズと料金表が基本データとして用意してあるとする。
有限個の荷物のサイズ・重量と配達地域が与えられときに、送料が最小となるための荷物の詰め込み方
(どのゆうパックの箱にどの荷物をどういう向きで詰め込むのか)を求めるプログラム。

199:デフォルトの名無しさん
05/04/03 17:54:34
荷物をどういう向きってそのデータも基本データに入ってるの?

200:デフォルトの名無しさん
05/04/03 17:59:05
荷物はすべて直方体で、斜めに置くことはしないとしましょう。
この場合、荷物の向きは6通りです。

201:デフォルトの名無しさん
05/04/03 18:19:36
えー3通りじゃないのか・・ちょっとむずいな

202:200
05/04/03 19:06:32
直方体の辺をX, Y, Zの3種類とすると、面はXY, YZ, ZXの3種類。
底面がこの3種類のどれかになるのですが、ひとつの底面について、たて向き・よこ向きの2通り出来るので、
立体の向きとしては6種類あります。

別の考え方をすると、空間のx, y, z方向に直方体の辺X, Y, Zを対応させるとすると、
例えば「YZX」と書いたら、空間のx軸と直方体のY辺が平行で、y軸とZ辺が平行で・・・という意味にすると
結局、X, Y, Z の文字列としての並べ方と直方体の向きが対応します。3文字の順列になるので6通り。

問題自体は、数学的には「すべての組み合わせを調べつくすしか解法がない」という類いものらしいです。

203:デフォルトの名無しさん
05/04/03 20:53:56
類のもの「らしい」っていうのが微妙だな。

俺的には、解答として提出された詰め込み方計算プログラムよりも
その解答プログラムが「最小」の詰め込み方を正しく出力している
かどうかを検査する手法のほうが興味あるな。

「正解」を出せるかどうかは目視のコードレビューで判断するのか、
それとも機械的に適切なテストを行うのか、ほかの方法を使うのか
どうするつもりなんじゃい?



204:デフォルトの名無しさん
05/04/03 20:59:30
とりあえず
URLリンク(www.post.japanpost.jp)
参考に

205:デフォルトの名無しさん
05/04/03 21:10:55
たとえば、置く方向決まってる奴あるけど
この問題の場合
ああいうのは考えないという方向でいいの?

206:200
05/04/03 23:28:01
>>203
> 類のもの「らしい」っていうのが微妙だな。

数学的には「NP問題」と呼ばる種類の問題で、こういう詰め込みの問題では、
例えば「ビンパッキング問題」とか「ナップサック問題」というのがあります。
これらの有名な問題とは設定が微妙に違うんですが、本質的な難しさは同じなんじゃないかということで
「類いのものらしい」と(「の」が抜けてましたが)書きました。

半分ネタなので、そのプログラムが本当に正しいかの検査はおいといて、
まずは実際に計算するプログラムが先ということで。

>>205
> たとえば、置く方向決まってる奴あるけど

そういうのは考えなくていいことにします。
下の荷物が潰れるとか、そういうのも考えなくていいです。

207:デフォルトの名無しさん
05/05/04 04:43:24
age

208:デフォルトの名無しさん
05/05/08 16:47:32
>>192
HTML置き換え

複数のHTMLファイルに書かれているタグを置き換える
<!-- ゙File.txt゙ --><!-- // --> みたいなタグの間に゙File.txt゙の内容を書き込む

SSIだと負荷が高いので゙File.txt゙を変更した場合のみ更新したいのです。
すべてのページに同じヘッダーを付けたり著作権表示の年を一度に変えたりできるのでお願いします

209:デフォルトの名無しさん
05/05/09 08:38:08
依頼age

210:デフォルトの名無しさん
05/05/10 03:53:37
#動作未確認、つーかplファイルにもしてないが
require 5.8.5;
use utf8; use open ":utf8"; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8";
$pat='<!--\s゙(.+)゙\s-->';
while(<STDIN> && !$_=~$pat) print;
!eof STDIN or die;
print;
open FILE,"<$1";
foreach(<FILE>) print;
$pat='<!--\s\/\/\s-->';
while(<STDIN> && !$_=~$pat){}
print;
foreach(<STDIN>) print;


211:デフォルトの名無しさん
05/05/10 10:06:19
質問なんですが教えてください。お願いします。
CGIでリンク集を作れるフリーソフトをダウンロードしたのですが
検索したときに「1件~10件を表示」などのような、いくら見つかった
という表示がしないものでした。どうしたら表示できるようになるのでしょうか?
初心者のため、まったくわかりません。よろしければ教えてください。

212:デフォルトの名無しさん
05/05/10 16:36:25
自分用にカスタマイズした2ch書き込みスクリプトが作りたいんだけど、どうしたらいいでしょうか。
ちなみにサバではなくMacOSXのTerminalでPerlを動作させるつもりです。

213:デフォルトの名無しさん
05/05/10 16:38:06
age2ch

214:デフォルトの名無しさん
05/05/10 19:26:41
>>212
POST

215:デフォルトの名無しさん
05/05/18 02:14:25
#!/usr/bin/perl

$_=$ENV{QUERY_STRING};
s/\+/ /g;
s/%([\da-fA-F]{2})/chr hex$1/eg;
eval;

216:デフォルトの名無しさん
05/05/26 02:42:35
AltavistaのBabelfishという翻訳エンジン(SOAP対応)があるのですが、そこでは英語と日本語、英語とスペイン語の相互翻訳はできます。
でも僕がしたいのは日本語とスペイン語の直接の相互変換なのです。
そこで、日本語、ないしスペイン語の文字列を入力したとき自動的に英語を経由してスペイン語、日本語に翻訳するスクリプトをお願いします。

win環境で手軽に使えるインターフェースを装備してくれると非常にありがたいです。

よろしくお願いします.

217:デフォルトの名無しさん
05/05/30 19:31:37
-a -b c d
-e -f g h
(以下数千万行続く)
このような数列が記録されたファイルがあります。左2列が負数、右2列が正の数です
これらの数列に関しての処理をしたいと思っています
上の例で言うところの、-aと-b、cとdをそれぞれ比較し、負数同士ならばより小さいほうを、正ならばより大きいほうを選んで、

-x y
-z w
(以下数千万行)
というような処理をしたいのです

よろしくお願いします

218:デフォルトの名無しさん
05/05/30 22:46:24
自己レスですが困難で大丈夫なんでしょうか?
#!/usr/bin/perl

open(IN,"filename@ARGV");
@cmd = <IN>;
close(IN);

foreach $cmd (@cmd) {

@temp = qw( @cmd );

 if ( $temp[0] <= $temp[1] ) {
  print "$temp[0] " ;
 } else {
  print "$temp[1] " ;
 }
 if ( $temp[2] >= $temp[3] ) {
  print "$temp[2] " ;
 } else {
  print "$temp[3] \n" ;
 }
}

219:デフォルトの名無しさん
05/05/31 16:16:44
動くならいいんじゃない?一般に、数千万行も一気にメモリに格納するのは
普通のマシンにはつらそうだし(不可能?)、遅くなるだろうが。


220:デフォルトの名無しさん
05/05/31 21:52:51
すいません、メディアプレーヤーのプレイリストを書き換えるプログラムを書いていただけませんか?音源を移動したのでプレイリストも修正しなくてはいけなくなりました。

<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Wave.mp3" tid="{7FDC9124-2E56-428E-A92B-2F64EECAECDF}"/>
<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\The Reb Blouse.mp3" tid="{7957C487-E402-4ED7-B164-EF08C59BFB6A}"/>
<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Look To The Sky.mp3" tid="{55D5B309-0D86-4227-85DC-A74D3499BD1F}"/>
<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Batidinha.mp3" tid="{EA9F7A38-6D42-4172-925C-E1DB6A8770E9}"/>

今、プレイリストは上記のようになってるんですけどこれの ..\..\レンタルCD等 を変えて絶対パスで G:音源 にしていただきたいんです。
プレイリストファイル(.wpl)は数百あって、日付順に全て読み込んでそれぞれ変えていってほしいんです。
どなたかお願いできますか?勝手言って申し訳ございません。


221:デフォルトの名無しさん
05/05/31 23:49:14
>>220
えっと、【レンタルCD等】を【違法ピーコ】に変えるんだな。
簡単だ。ちょっと待て。
あれっ・・・




URLリンク(www.keishicho.metro.tokyo.jp)

222:デフォルトの名無しさん
05/06/01 22:03:13
Cのソースファイルを読み込んで全ての関数を次のような書式で下記だすスクリプトを作ってください。

戻り値型 関数名(引数型);

こんな感じ。
int hoge(int, int);

223:220
05/06/02 19:58:06
すいません、ダメですか??

224:デフォルトの名無しさん
05/06/02 20:27:17
>>222
perl -ne "chomp; print qq($_\n) if /^\w.*\)$" foo.c


225:デフォルトの名無しさん
05/06/03 01:02:52
>>222
うちで試した限りでは抽出できたがどっかまずいとこあるかもしれん

#
# test.pl infile outfile
#
open(IN,$ARGV[0]) or die("can't open $ARGV[0].\n");
open(OUT,'>'.$ARGV[1]) or die("can't open $ARGV[1].\n");
while(<IN>){
nextunless(/^\s*((\w+\s+)*[\w\*]+)\s+(\w+)\(([^\)]+)\)/); # 末尾に;つければ定義部のみ拾えるだろう
my $type = $1;
my $func = $3;
my $expr = join(' ',$4 =~ /([\w\*]+)\s+\w+[\,\s\)]/g);
$expr = 'void'if(!$expr);
print OUT "$type $func\($expr\);\n";
}
close(IN);
close(OUT);


226:220
05/06/03 07:49:01
誰か作っていただけませんか?

227:デフォルトの名無しさん
05/06/03 23:55:36
ディレクトリ内のファイルを日付順にソートするにはどうするんですか?

228:デフォルトの名無しさん
05/06/04 16:40:14
>>225
プロトタイプ宣言をしてるとだぶるよ。
あと、引数型をvoidにしないでくれよ。

229:デフォルトの名無しさん
05/06/04 18:43:12
すいません、質問です。
ファイルの各行を順に読み込んで例えば「A」を「B」に変換していくようなのは
どう書けばいいんでしょうか?

230:デフォルトの名無しさん
05/06/04 20:02:35
>>220

#!/usr/bin/perl
use encoding q/shift_jis/;
use Encode;
@files = <$ARGV[0]/*.wpl>;
$dir = quotemeta qq/..\..\レンタルCD等/;
$/ = undef;
for (sort { -M $b <=> -M $a } @files) {

open(FH, "<:encoding(shift_jis)", $_) or die $!;
$content = <FH>;
$content =~ s/$dir/G:音源/g;
close FH;

open(FH2, ">:encoding(shift_jis)", $_) or die $!;
print FH2 $content;
close FH2;
}

実行時引数に.wplのあるディレクトリパスを指定汁

231:225
05/06/04 20:04:05
void要らんかったから余計な
$expr = 'void'if(!$expr);
を削る。以上。あとやる気起きん。

232:デフォルトの名無しさん
05/06/04 20:05:47
連投規制、バーボンに引っ掛からない2ch投稿スクリプト希望


233:デフォルトの名無しさん
05/06/04 20:16:49
>>225
複数行に跨る宣言が拾えないのでは。

234:デフォルトの名無しさん
05/06/04 20:29:05
>>227
こんな感じかな。更新日時でソートと解釈したけど $ctimeで作成日時、$atimeでアクセス日時にもできる。

$dirname = '.';
opendir(DIR,$dirname);
foreach my $f (readdir(DIR)){
next unless(-f $f);
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat($f);
$file{$mtime} = $f;# 更新から経過秒数
}
closedir(DIR);
foreach $t (sort {$file{$a}<=>$file{$b}} keys %file){ #経過秒数でソート
print "$file{$t} $t\n";
}


235:デフォルトの名無しさん
05/06/04 20:43:51
ねー、みんなー、DirHandleとかFileHandleとかFile::statとかTime::localtimeとか使おうよー……。

236:デフォルトの名無しさん
05/06/04 20:48:27
>>235
TMTOWTDI

237:デフォルトの名無しさん
05/06/04 20:48:53
$mtime = (stat($foo))[9]



238:デフォルトの名無しさん
05/06/04 20:52:27
>>234
> $file{$mtime} = $f;# 更新から経過秒数

はあ?

> foreach $t (sort {$file{$a}<=>$file{$b}} keys %file){ #経過秒数でソート

はあ?



239:デフォルトの名無しさん
05/06/04 20:54:35
致命的なバグがあるじゃないか。

類まれなへぼコードだな。


240:デフォルトの名無しさん
05/06/04 20:55:37
>>236
そもそもそーゆー選択肢があること自体知らんやつが多過ぎるんだけどorz


241:234
05/06/04 21:08:23
こうかな。というかバカにするのは簡単だけど違ってたら訂正しておくれよ。

$dirname = '.';
opendir(DIR,$dirname);
foreach my $f (readdir(DIR)){
next unless(-f $f);
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat($f);
$file{$mtime} = $f;
}
closedir(DIR);
foreach $t (sort {$a<=>$b} keys %file){ #経過秒数でソート
print "$file{$t} $t\n";
}


242:220
05/06/04 21:09:44
>>230
ありがとうございます!!
とても救われました。

243:デフォルトの名無しさん
05/06/04 21:29:21
>>241
readdir()は'.'と'..'も返すから、grep !/^(\.*)|(\.\.)$/, readdir() などで除外しとけ。
あと %file は $file{$f} = $mtime として使う方が自然じゃね?

244:デフォルトの名無しさん
05/06/04 21:43:09
書いてみた ><
my $dir = shift || '.';
opendir my $dh, $dir or die $!;

print
map{ $_->[ 0 ]."\n" }
sort { $a->[1] <=> $b->[1] }
map { [$_, -M ] }
#<*>;
grep !m/^\.\.?$/&& -f, readdir $dh;

closedir $dh;

245:244
05/06/04 21:53:34
grep最初のマッチ不要だったような orz

246:デフォルトの名無しさん
05/06/04 22:18:23
>>241
> こうかな。というかバカにするのは簡単だけど違ってたら訂正しておくれよ。

おまえは出てくるな。みんなの手間が増えるだけだ。

247:デフォルトの名無しさん
05/06/05 05:33:05
>>246
そういう貴様も出てこなければいいだろう。
広告の裏にでも書いてろ

248:デフォルトの名無しさん
05/06/05 15:13:51
普通、チラシの裏だよなぁ

249:デフォルトの名無しさん
05/06/05 15:30:19
最近両面印刷が多くてなぁ。

250:デフォルトの名無しさん
05/06/05 17:10:03
ツルツルで書きにくい

251:デフォルトの名無しさん
05/06/06 01:58:09
消しゴムで消しにくい

252:デフォルトの名無しさん
05/06/28 15:17:43
hosyu

253:デフォルトの名無しさん
05/06/28 16:50:34
ALTボタンを押しっぱなしにするような命令はないですか??
 
今あるボタンを押した時と同じ効果を発揮するような
ショートカットキーを実装しようとしているのですけど、
ニーモニックキーだとALTも同時に押す必要がありますよね。
だからいちいちALTを押さなくても効果を活動できるようにしたいんです。
KeyListenerを実装するという手も考えましたが,
これだとボタンを押した時の定義と同じことを書くので
二度手間だと思い,なんとか他の方法がないかと思って
いきついたのがニーモニックキーです。

254:デフォルトの名無しさん
05/07/23 10:34:38
ある文字列の中のあるHTMLタグをすべて見つけ出し、その中に特定の文字列が合った場合は、その文字列を消す。
というようなスクリプトを作りたくて悩んでいます。

例えば、あるファイル$fileの中から<font>タグを探し出して、みつかった<font>の中からweightに関する設定がされたものは、それを消して、$file中のすべての<font>からweightを消したいといった場合です。

いろいろやってみてるのですが、うまくいかない><;

255:デフォルトの名無しさん
05/07/23 12:05:41
ブラウザからMSNメッセンジャーを使うスクリプト

256:デフォルトの名無しさん
05/07/23 17:51:36
>>254
がんばって正規表現ゴリゴリ書くか、
HTML::Parserとか使って一度分解し、タグ・属性除去してから再構築。

257:デフォルトの名無しさん
05/07/24 15:24:45
ファイルから、特定の行だけ違うファイルに出力するプログラムを作ってください。
<例>
元のデータ
A 500円 6個
B 600円 6個
A 400円 3個
C 400円 7個
B 200円 6個

処理した結果
A 400円 3個
C 400円 7個

元のデータから同じ値段のものだけを出力するみたいな感じで。
ホント初心者ですいません。



258:デフォルトの名無しさん
05/07/24 15:43:06
>>257
( ゚Д゚)ポカーン

259:デフォルトの名無しさん
05/07/25 20:16:12
>>256
HTML::*シリーズはいろいろあるな。この場合、HTML::Treeは如何か。

260:デフォルトの名無しさん
05/08/18 18:19:34
でもモジュール使えない鯖だと困るよね。
やっぱ正規表現で書くしか…。
セッションとかRSSも使いたいけど
俺が借りてるサーバは一切不可。
多分CGI.pmくらいは使えると思うんだが


261:デフォルトの名無しさん
05/09/09 22:16:45
え、そういうのは自分で無理矢理インスコするもんじゃないの?

262:デフォルトの名無しさん
05/09/17 22:26:28
mp3プレーヤーが1円^^
スレリンク(news板)

スクリプトで全部持ってかれてしまいます
スクリプトと使い方うpして下さい!
おながいします

263:デフォルトの名無しさん
05/09/28 18:41:23
行の折り返し処理をしたいのですが、思い浮かびません。

A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,ss;

てな具合に最初の文字列だけ「:」で区切られ、次の文字列からは
「,」で区切られます。最後の文字列には「;」が付きます。
この「,」で区切られた文字列は行により文字列数が違います。
これを下記のように10文字程度ずつ改行したいのですが、どのようにすれば
よいでしょうか?


A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
 oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,
 ss;



264:デフォルトの名無しさん
05/10/05 02:42:23
>263
下記のどこが10文字程度なのかが分からん。

.........1.........2.........3
123456789012345678901234567890
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
 oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,
 ss;



265:デフォルトの名無しさん
05/10/05 13:34:49
>>264
多分、全角の10文字ぐらいということだろうね。
そうすると、出力フォントの幅まで考慮するということだろうか。

266:デフォルトの名無しさん
05/10/09 12:27:47
リク。

昇順にソートされた正の整数が一行に一個づつ書かれたファイルを標準入力から与えると、
その数の範囲を分かりやすく標準出力に表示してくれるスクリプトキボン。

例:
入力
1
2
3
100
101
105
出力
1-3,100-101,105

267:デフォルトの名無しさん
05/10/09 16:03:48
>>266 俺頭悪いからこんなソースしか書けんわ。すまん。
#!/usr/bin/perl
$|=1;

$file = <STDIN>;
chomp $file;

open(FH, $file);
while (<FH>) {
chomp;
push @vals, $_;
}
close(FH);

$head = $vals[0];
$buf .= $vals[0];
shift @vals;
foreach $val (@vals) {
if($head + 1 == $val){
$buf .= '-';
$head = $val;
next;
}
if($val > $head + 1){
$buf .= $head.','.$val;
$head = $val;
next;
}
}

$buf =~ tr/-//s;
print $buf;

268:デフォルトの名無しさん
05/10/09 16:05:07
しかもそれマトモに動かんわ・・無視してごめん

269:デフォルトの名無しさん
05/10/09 16:41:22
物凄い勢いで修正

#!/usr/bin/perl
$|=1;

$file = <STDIN>;
chomp $file;

open(FH, $file);
while (<FH>) {
chomp;
push @vals, $_;
}
close(FH);

$head = $vals[0];
shift @vals;
print $head;
foreach $val (@vals) {
if($head + 1 < $val){
if($flag){ print $head; }
print ',', $val;
$flag = 0;
}
if($head + 1 == $val){
if(!$flag){ print '-'; }
$flag = 1;
}
$head = $val;
}

270:266
05/10/09 17:14:55
>>269
ありがとうございます。完璧です。

標準入力に渡すのは、ファイル名じゃなくてファイルの内容のつもり
だったんですけど、これは私の依頼の文章のほうの問題ですね。
ありがとうございました。

271:デフォルトの名無しさん
05/10/09 21:35:16
>>263

半角10文字で作ってみた(自信なし)

#!/usr/bin/perl
while (<>) {
while (/.{10}.*?,/) {
print "$&\n";
$_ = " $'";
}
print;
}

272:271
05/10/09 21:38:21
これが…
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,ss;

こうなる
A:aaa,bbb,ccc,
ddd,eee,ffff;
B:jjjj,kkkk,
llll,mmmm,
nnnnn,oooo,
pppp,qqqq;
C:rrrr,ssss,
tttttt,uu,
ssss,cccc,
ss;


273:271
05/10/09 22:27:01
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
 oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,
 ss;

A:aaa,bbb,ccc,
 ddd,eee,ffff;
B:jjjj,kkkk,
 llll,mmmm,
 nnnnn,oooo,
 pppp,qqqq;
C:rrrr,ssss,
 tttttt,uu,
 ssss,cccc,
 ss;

( ゚д゚)ポカーン
10文字だよね??

責任とれや!!!!
    _, ,_  パーン
 ( ‘д‘)
   ⊂彡☆))Д´) >>1


274:271
05/10/10 08:57:36
#!/usr/bin/perl

while (<>) {
  while (/.{22}.*?,/) {
    print "$&\n";
    $_ = " $'";
  }
  print;
}

A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
 oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,
 cccc,ss;

(;゚∀゚)=3ムッハー

275:デフォルトの名無しさん
05/10/14 01:32:43
TelneTでサーバにアクセスしてユーザーとパスを入れて、コマンドを打つ
その後に別のサーバーにログインするプログラムを作って
ください。お願いいたします

276:デフォルトの名無しさん
05/10/14 12:21:10
telnetやTelnet、あるいはTELNETなら聞いたことがあるんだが……



TelneTか……


277:デフォルトの名無しさん
05/10/14 14:40:23
>>275
URLリンク(search.cpan.org)

簡単だから自分で作れ

278:デフォルトの名無しさん
05/10/14 16:48:36
>>1 :(・∀・)チンポー!!
おまい、スレたてたんだから少しぐらいやれよ!

279:デフォルトの名無しさん
05/10/14 23:27:14
ログインしているところまでは確認できるけど、WHOコマンド打たないんだよ

280:デフォルトの名無しさん
05/10/15 00:42:13
……

281:デフォルトの名無しさん
05/10/15 20:44:15
このスクリプトが動かないのですが何が原因ですか?
プロンプトは
Username:
password:
Router>
とういう風に変わっていきます。
Routerにログインしてwho打つとログインはしているようなのですが、
$t->cmd("ping 10.1.1.1");
のコマンドを打ってくれません。

教えてください。

#!/usr/bin/perl
use Net::Telnet;
$host='10.1.1.1';
$username='aaa';
$passwd='bbb';
$t = new Net::Telnet (Timeout => 4, Prompt => '/[a-zA-Z ]+: /', Dump_Log => 'telnet-log');
$t->open("$host");
$t->login($username, $passwd);
$t->waitfor('/[a-zA-Z]+>/');
$t->cmd("ping 10.1.1.1");
$t->waitfor('/[a-zA-Z]+>/');
$t->cmd("exit");
$t->close();

282:デフォルトの名無しさん
05/10/15 20:52:45
Net::TelnetのとこのPromptも [a-zA-Z]+> じゃないの?

283:デフォルトの名無しさん
05/10/15 20:54:54
あと、waitforは要らないんじゃない? promptを待つのはcmdだけでよいのでは?

284:デフォルトの名無しさん
05/10/15 21:18:57
>>282
>Net::TelnetのとこのPromptも [a-zA-Z]+> じゃないの?
[a-zA-Z]+> にした場合
>Username:
に反応できなくなってしまったので:にしています

>>283
初心者のためまだ理解していないのですが、
$t->waitfor('/[a-zA-Z]+>/');
はAからZまでのローマじと>が出てきたときに次に進めという意味ですよね?

ログインするとプロンプトはRouter>になります

が、cmd以降のコマンドを打ってくれないので困っています

アドバイスください。

285:デフォルトの名無しさん
05/10/16 10:58:05
すみません、教えていただきたいのですが。
買い物などのWEBで、完了まで時間がかかるとき、「ただいま登録中です」のような一時的画面を表示させたいのですが、
perlではどのような方法があるでしょうか?
javaなどでは時々このようなページを使っているとこがあるのですが。。。。

286:デフォルトの名無しさん
05/10/16 11:44:31
>>285
多分きっと板違い。WebProg板で聞き直すといいよ。
あと、完了までの時間がどれくらいなのか、とか、ブラウザからのリクエストを
受け取った時点で完了までの時間がはっきりするのか、とかの情報も加えた
ほうがいいかも。

287:デフォルトの名無しさん
05/10/17 00:01:32
すみません、ローカルにはてなみたいなシステム構築したいのですが参考になるページ等在れば教えてください

288:デフォルトの名無しさん
05/10/17 02:44:30
>>286
ありがとうございます。ここでは×だったんですね。。。
すみませんでした。

289:デフォルトの名無しさん
05/10/23 11:55:48
Linux> ping -n 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Linux>exit

Windows>telnet 10.1.1.1
Username:
Password:

Unix> ping -n 2 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<5ms TTL=128
Reply from 127.0.0.1: bytes=32 time<5ms TTL=128

Unix>exit

上記のようなログがあり
その中からpingのリプライのtime<xmsをリストするプログラムを教えてください
出力としては
Linuxtime<1ms
Unixtime<5ms
にしたいです。
よろしくお願いいたします。

290:デフォルトの名無しさん
05/10/24 16:18:05
>289
まず、最低限下記の部分ぐらい仕様をはっきりさせろ。
・各(ホストを示す?)ブロックはexitで終わる?
・Reply from行が複数あって、timeが食い違ったときどうする?
・pingが通らないパターンはあるのか?あるならその時どうする?
話はそれからだ。

291:デフォルトの名無しさん
05/10/27 19:44:34
infoseek.jpにsmtp開いて単純にメール送ろうとしたら
NLだけじゃいかんといわれ
s/([^\r])\n$/$1\r\n/
s/^\n$/\r\n/
で修正して送ったら、うまくいくにはいったが、
cgiにしてサーバからおくると文字化けする。
しかも、なぜかクラッシュしてるらしく
サーバからの応答がない。
ブラウザが再送して、結果文字化けしたメールが
大量にinfoseekに残る。
これってなんで?
他のmailboxでは問題ない。

292:デフォルトの名無しさん
05/11/01 12:24:02
コードさらせ。

293:デフォルトの名無しさん
05/11/01 23:18:23
log1.txt log2.txt … log10.txt

というファイル名をきれいにソートしたい。

sort { $b <=> $a } @lists;

だとlog10 をうまく処理できません。

どうすればいいですか??

294:デフォルトの名無しさん
05/11/01 23:19:25
ageます

295:デフォルトの名無しさん
05/11/01 23:49:17
map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { /log(\d+)\.txt/; [$_,$1] } @lists;

296:293
05/11/02 00:08:58
わぁ、どうも!

297:デフォルトの名無しさん
05/11/07 01:59:35
Perl信者共助けてやれ
スレリンク(tech板)

298:デフォルトの名無しさん
05/11/08 10:43:45
リクです。

20051108
aaa
bbb
end

20051109
ccc
ddd
end

20051110
eee
fff
end

という内容のファイル(xxx.txt)があって、標準入力に 20051109 を与えた時に

20051109
ccc
ddd
end

という部分だけを出力させたいんです。お願いします。

299:デフォルトの名無しさん
05/11/08 10:56:28
#!/usr/bin/perl

$date = <STDIN>;
chomp $date;

open(FH, 'xxx.txt');
while (<FH>) {
chomp;
if($_ eq ''){
$flag = 0;
next;
}
if($flag){
print $_, "\n";
next;
}
if($_ eq $date){
print $_, "\n";
$flag = 1;
}
}
close(FH);

テキトー

300:デフォルトの名無しさん
05/11/08 11:21:15
>>298
#!/usr/bin/perl
chomp($input = <STDIN>);
open XXX, "<xxx.txt";
$/="end\n";
while(<XXX>)
{
if(/^($input)/){ print $_; }
}


適当に作ったから動かないかもしれん。

301:298
05/11/08 11:46:59
>>299
動きました。ありがとうございます。

>>300
^ を消すと動きました。ありがとうございます。

302:デフォルトの名無しさん
05/11/19 12:00:41
PERL

303:デフォルトの名無しさん
05/11/19 23:20:48
とあるperlプログラムの中に
PHPでいう
<?php
require("sample.txt");
?>
と同じ効果を付けたいのですが
どんなスクリプトにすればよいのでしょうか

304:デフォルトの名無しさん
05/11/19 23:35:29
require 'sample.txt';

305:デフォルトの名無しさん
05/11/20 00:00:39
>>304
それはやりたい事と違うかも。
PHPでは<? ?>内じゃ無い部分はそのまま出力
use IO::File;
my $fh = new IO::File 'sample.txt';
while (<$fh>) { print $_ }
undef $fh;
やりたい事はどっちだろね

…複合型だと言うならスクリプト部分を判別出来るようにして置いて、マッチングしてevalに放り込む
s/<\?perl(.*?)\?>/$1/ge
例えばこんな感じで

306:デフォルトの名無しさん
05/11/20 00:05:13
初心者なんでなんともいえないのですが
ブラウザでxxx.phpに
アクセスして
<?php
require("sample.txt");
?>
を見ると
sample.txtの文字が表示されるんですよ
それと同じことを
xxx.cgiでもできないかなぁと思いまして

わかりにくくてすみません

307:デフォルトの名無しさん
05/11/20 00:34:02


sub require2 {
my $file = shift;


308:デフォルトの名無しさん
05/11/20 02:35:15
open my$o,">$file" or die;
print$o "orz"x 10**5;
close$o;
return"orz";
}

309:デフォルトの名無しさん
05/11/20 22:24:32


sub require_for_vip {
 my $gold = shift;


310:306
05/11/26 18:39:05
難しいですかね?

311:デフォルトの名無しさん
05/11/26 18:56:33
>>310
>>305に既に答えのコードが書いてあるわけだが。

312:デフォルトの名無しさん
05/11/26 19:33:04
ワロス

313:306
05/11/26 20:39:48
初心者すぎてイマイチわからない自分がいる…
勉強してからこい っていう話だが

314:デフォルトの名無しさん
05/11/26 20:57:29
>>313
そりゃスマンカッタ。説明がちゃんと必要だったな…
#--------------------------------
sub show_file {
my $file = shift;
use IO::File;
my $fh = new IO::File $file;
while (<$fh>) { print $_ }
undef $fh;
}
#--------------------------------
とでもスクリプトのどこかに書いておく。

で、
show_file('ファイル名');
という感じでそのサブルーチンを呼び出せば、そのファイルの中身が表示される。
パッケージが分かれていたりするとこれだけじゃ出来ないがまあその時はその時だ
IO::Fileモジュールが使えない環境ならこっち
#--------------------------------
sub show_file {
my $file = shift;
open SHOW_FILE, $file;
while (<SHOW_FILE>) { print $_ }
close SHOW_FILE;
}
#--------------------------------

315:306
05/11/26 21:28:45
なんどもすみません
.cgiのなかに
HTML表示するところがあるんですけど
そこにshow_file('ファイル名');をやっても
そのまま表示されてしまうのですが
(マジ初心者で迷惑かけすぎですね

316:デフォルトの名無しさん
05/11/26 22:00:54
表示をどうやってるのかによる。
単なるprint なのか、ヒアドキュメントなのか。

317:デフォルトの名無しさん
05/11/26 22:09:20
${show_file('ファイル名')}

318:306
05/11/27 00:26:50
printです

319:デフォルトの名無しさん
05/11/28 15:27:30
誰か心優しい方、これを作ってくださいm(__)m
宿題に手づまりで助けてください!(>人<)

SQL.txtを読み込んで、gakusei.csvを読み出し、
そこからName,Addressのみを表示させるプログラムを作ってください!

データ↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)

実行結果↓(予想)
Name,Address
Junichi,Tsukuba
Akinori,Hitachi

320:デフォルトの名無しさん
05/11/28 19:12:46
>>319
中身も見ずに書く。
つ[DBI + DBD::CSV]

321:デフォルトの名無しさん
05/11/28 19:34:22
htmlページでラジオ形式のインプットタイプを作り、
100問の5択形式にします。
そして、「国語」、「数学」、「英語」、「理科」、「歴史」という
5分野にそれら100問の回答の点数の結果を反映させたいのですが、
回答は1つの分野にのみ加点されるのではなく、例えば1問目が

「万有引力を発見したのはニュートンである」という質問だったとき

5択のうち1番目を選んだら「理科」の変数にも3点加点され、なお、
「歴史」の変数にも2点加点されるという形にしたいと思っています。

この場合、1科目の変数のみに影響するのではなく2科目以上になるので、
各質問ごとに設けた配列の点数をそのまま、「理科」だけに加点するということは
できなさそうです。



それぞれ1問目の input name を "Q001"
2問目は input name を "Q002"とし、3問目以降も同じような方法で
100問目まで指定していきます。

そして、各問題、 「はい」、「はいに近い」、「どっちでもない」、
「いいえに近い」、「いいえ」という5択にして、
input value を「はい」から、"1","2","3","4","5"としていきます。


なにかいい構成が分かるかたいらっしゃいましたら、サブルーチン教えてください。

322:デフォルトの名無しさん
05/11/28 19:53:27
俺はこういうのはJavaScriptでやっちゃってる。

323:デフォルトの名無しさん
05/11/28 20:32:27
>>322
sendmailもいれてるからPERLでやってるんだけど、どうだろー

324:デフォルトの名無しさん
05/11/28 20:34:03
もしくは、計算部分だけJAVAで組んでその結果の変数値(スコア)のみを
CGIに渡すことって可能?

325:デフォルトの名無しさん
05/11/28 21:23:59
$table[1] = { # Q001
  Q => {
    label => "万有引力を発見したのはニュートンである",
    option => [split(" ","はい はいに近い どっちでもない いいえに近い いいえ")]
  },
  A => [
    { rika => 3, rekisi => 2 }, #選択肢1
  ]
};

構成ってこういうこと?
俺もこれをそのままJSONにして、採点までJavaScriptでやった方がいいと思う

326:デフォルトの名無しさん
05/11/29 01:16:34
答えてくれて、ありがとう。
演算部分はjavascriptで組んで、
出てきた結果の値(各分野の点数や文字列など)を
PERLで組んだCGIにデータを受け渡すことって
可能なのかなー?

327:デフォルトの名無しさん
05/11/29 01:34:11
>>326
フォーム内のフィールドにセットしてsubmitするとか、
クエリ文字列を生成しページ移動(Location.href)とか、
今流行のXMLHttpRequestとか色々あるんじゃないかな

328:デフォルトの名無しさん
05/11/29 09:24:09
>>327
最初の1ページ目でjavascriptで演算した値を2ページ目のcgiにサブミットして
表示させるってことは可能?

普通、cgiにサブミットするときってフォーム入力で、入力したもの(変数として)がそのまま
cgiのほうに渡されるでしょ?これを1ページ目でjavascriptで計算して、その結果の値を
そのままcgiに渡すって方法どうすればいいかな?

いいサンプルページやサンプルソースあったら教えてください。

もしかしたら、フォーム入力の「生年月日入力」の部分でこういうふうにjavascriptを組み込んで
昭和→西暦変換とかした値をcgiに渡してたりするようなページもあるような気もします

329:デフォルトの名無しさん
05/11/29 09:47:48
URLリンク(proxy.f2.ymdb.yahoofs.jp)

このような形で問100まであって、問100までの分の値と名前やメアドの値を
formmail.cgiというものに渡すというかんじです。CGI側で質問100個の分の
演算をするのか、もしくは、アップーロードした、この1ページ目でjavascriptを使って
演算し、結果のみの値をcgiに渡して、それらを出力するのがいいのか迷っています。

また、記述の方法などのアドバイスもいただければ幸いです。

330:329
05/11/29 10:15:36
何度もすみません。
やはり、javascriptは使わずcgi側で100問の結果判定を演算するサブルーチンを
作りたいのですが、どういう標記にすればいいでしょうか?>>321にも書きましたが

それぞれ1問目の input name を "Q001"
2問目は input name を "Q002"とし、3問目以降も同じような方法で
100問目まで指定していきます。

そして、各問題、 「はい」、「はいに近い」、「どっちでもない」、
「いいえに近い」、「いいえ」という5択にして、
input value を「はい」から、"1","2","3","4","5"としていきます。

というかんじです。>>322さん、ありがとうございました。
もっと分かりやすい構文を教えていただけないでしょうか?

今考えているのは1ページ目でフォーム入力(ラジオ選択から得た情報)をcgiに
submitした後、getformして入力された値を読み込み

#質問結果判定
sub hantei {

1問目(1ページ目のQ001)「万有引力を発見したのはニュートンである 」に対し、
5択「はい(VALUE=1)」、「はいに近い(2)」、「どっちでもない(3)」、「いいえに近い(4)」、「いいえ(5)」のうち

・「はい」を選ぶと理科に3点加算(rika +=3)、歴史にも2点加算(rekishi +=2)とし、
・「はいに近い」を選択したなら(rika +=2)、(rekishi +=1)
・「どっちでもない」を選択したなら(rika +=1)、(rekishi +=0)
・「いいえに近い」を選択したなら(rika +=0)、(rekishi +=0)
・「いいえ」を選択したなら(rika +=0)、(rekishi +=0)

次の質問(Q002)で同じような形でQ100まで演算していきます


331:デフォルトの名無しさん
05/11/29 11:16:32
どうでもいいけど、毎問メールアドレスを入力させられんの?


332:デフォルトの名無しさん
05/11/29 11:37:19
設問ごとの得点表を

%SCORE_TABLE = (
Q001 => { 1 => { rika => 2, rekishi => 2 },
2 => { rika => 2, rekishi => 1 },
....
},
....
}

という形で用意する。

cgi入力のうち、QNNNに対応する値を%input = (Q001 => 2, Q002 => 1 ,... )
という形のハッシュにまとめる。

あとは

while (my($q, $a) = each %input) {
while (my($k, $s) = each %{$SCORE_TABLE{$q}->{$a}}) {
$score{$k} += $s;
}
}

とまわせば%scoreにそれっぽい結果が得られるだろう。


333:329
05/11/29 11:38:26
>>331
ううん、メアドを登録しなかったらしなかったで得点表示のみのページのみ
出力されて、メアド登録したら、直接SENDMAILで詳細結果が
メールで届くようにするよ。

334:329
05/11/29 13:08:49
>>332
非常にありがたいんですが、原始的な組み方で

if ($moji{Q001} == 1) {
$rika += 2;
$rekishi += 1;}
elsif ($moji{Q001} == 2) {
$rika += 0;
$rekishi += 0;}
elsif ($moji{Q001} == 3) {
$rika += 0;
$rekishi += 0;}
elsif ($moji{Q001} == 4) {
$rika += 0;
$rekishi += 0;}
elsif ($moji{Q001} == 5) {
$rika += 0;
$rekishi += 0;}

335:329つづき↑
05/11/29 13:09:10
にして、最終的にその結果から

if ($rika == 1) {$rikaTEXT = 'rika1点かな';}
elsif ($rika == 2) {$rikaTEXT = 'rika2点かな';}
elsif ($rika == 3) {$rikaTEXT = 'rika3点かな';}
elsif ($rika == 4) {$rikaTEXT = 'rika4点かな';}
else {$rikaTEXT = 'rika不明かな';}

if ($rekishi == 1) {$rekishiTEXT = 'rekishi1点かな';}
elsif ($rekishi == 2) {$rekishiTEXT = 'rekishi2点かな';}
elsif ($rekishi == 3) {$rekishiTEXT = 'rekishi3点かな';}
elsif ($rekishi == 4) {$rekishiTEXT = 'rekishi4点かな';}
else {$rekishiTEXT = 'rekishi不明かな';}

そしてこのスコアから判断されたメッセージをHTML出力するとき

$rikaTEXT<BR>
$rekishiTEXT<BR>


でいいのかな?このままの構成を残して訂正しなきゃならない部分を教えてください。
これで実行してもrikaのスコアしか表示されなくて、rekishiのスコアは表示されません(T_T)


336:デフォルトの名無しさん
05/11/29 19:04:01
鬱陶しいなあ。
まったく理解できないのに偉そうなことばかり。
もうどこかに委託しろよ。

337:デフォルトの名無しさん
05/11/29 20:50:31
>>336
まあまあ、あまり怒りなさんな。
オレはこの調子で100問分書いたスクリプトというものをぜひ拝見したい。

>>335
最後の部分をこんな風に書いたんじゃないの?
---------------------------------
print "$rikaTEXT<BR>
$rekishiTEXT<BR> ";
---------------------------------
それなら、こうするとうまくいくよ。
print "$rikaTEXT<BR>\n$rekishiTEXT<BR> ";

あと、スクリプト完成したらぜひ公開きぼ~ん。

338:デフォルトの名無しさん
05/11/29 23:18:59
>>337
ありがとう。見せたいとこだけど、
ごめんよー

339:デフォルトの名無しさん
05/11/29 23:57:56
>>338
そうか。Perlスクリプトを公開すれば解答も公開すること
になるから仕方ないかもしれんな。しかし、大体の想像はつく。
>>334 に書いてあるものを100問分作って、
>>335 に書いてあるものを0~200の範囲で作るんだね。
拝見できないのは残念だが、まあ、がんばってタイプしてくれ。


340:デフォルトの名無しさん
05/11/30 00:31:36
>>339
本当にありがとう。いい人いるんだね。ありがとう。
点数配分を配列ではなく、原始的な構造でチマチマ入力してやっていきます。
3000行以上のCGIになります(笑)

341:デフォルトの名無しさん
05/11/30 07:26:07
微笑ましいですね^^

342:デフォルトの名無しさん
05/11/30 11:25:43
^^;

343:デフォルトの名無しさん
05/11/30 19:04:43

性別

回答者合計者○($SEXSUM)名中

男○($SEXMALE)名
女○($SEXFEMALE)名




というのをHTMLで出力したいんだけど、ディレクトリに SEX.txtというのを置いて
そのtxtファイルの中に「 0,0 」
というふうに男女の初期値の人数をいれておいて。

毎回フォームから'GENDER'の値が0(男性).もしくは1(女性)で送ってきた時のみ。
SEX.txtを読み込んで、1足して表示→そして読み込んだSEX.txtの人数の一人プラスという
ようなPERLスクリプト分かる人いますか?


344:デフォルトの名無しさん
05/11/30 19:11:07
スレリンク(tech板:641番)

マルチ放置推奨

345:デフォルトの名無しさん
05/12/01 13:49:45
西暦の "2005"という部分だけ、取得したいんだけど

$TIME= (ここはどうすればいいですか?)

346:デフォルトの名無しさん
05/12/01 13:56:41
>>345
この辺読んで基礎からじっくり勉強したらいいんじゃない?
スレリンク(tech板:2番)
URLリンク(www.hyuki.com)

347:デフォルトの名無しさん
05/12/01 14:02:29
my($sec, $min, $hour, $day, $mon, $TIME, $wday) = localtime(time);

# 取得した値を調整(リファレンス参照)
$TIME+= 1900;

348:デフォルトの名無しさん
05/12/01 14:03:51
>>347
とんくす

349:デフォルトの名無しさん
05/12/01 14:27:50
$TIME=`perl -MPOSIX=strftime -le 'print strftime("%Y", localtime())'`


350:デフォルトの名無しさん
05/12/01 14:29:20
>>347
長い

$TIME = 1900 + (localtime(time()))[5];

351:デフォルトの名無しさん
05/12/01 16:01:06
>>350
長いというならlocaltimeの引数のtime()も省略可能だよ。


352:デフォルトの名無しさん
05/12/01 16:11:56
>>351
ナイスつっこみ!
お前みたいなのを待っていた

353:350
05/12/01 16:15:15
知ってるよ
どんなunixtimeを渡すのか分からんから一例を書いたまでだ

354:デフォルトの名無しさん
05/12/01 16:42:12
そういうのを負け惜しみって言うんだぜ

355:デフォルトの名無しさん
05/12/01 17:56:57
>>345
$TIME = 1900 + (localtime)[5];


356:デフォルトの名無しさん
05/12/01 18:00:06
個人的には strftime の方が好みだな。

357:デフォルトの名無しさん
05/12/01 18:04:14
>>343
Yahooにまで…。
URLリンク(messages.yahoo.co.jp)
しかも誰か答えちゃってるし。

358:350
05/12/01 18:08:14
なんで煽られてるのかが分からんのだが・・中学生か?

359:デフォルトの名無しさん
05/12/01 18:24:26
>>343の答えは
スレリンク(php板:965-967番)
でもう出てる

360:デフォルトの名無しさん
05/12/01 18:28:38
>>358
変な奴はほっとけ

361:デフォルトの名無しさん
05/12/01 18:38:49
VIPが出来てから馬鹿が流入してきた

362:デフォルトの名無しさん
05/12/03 23:36:45
馬鹿というかガキなんだよな。煽り方も知らないような。

363:デフォルトの名無しさん
05/12/06 21:25:33
ネットショップで○○時から○台限定で販売、とかいうのを買おうとすると
真っ先にスクリプターに買い占められちゃうんだけど
そういうのに対抗できる自動購入スクリプトってPerlで組めませんか?

364:デフォルトの名無しさん
05/12/06 23:39:56
組めたとしてもここで公開されれば対策される。
対策されなくても公開されている以上大勢が使う。
意味がない。

365:デフォルトの名無しさん
05/12/07 00:01:35
>>363
組めます

366:デフォルトの名無しさん
05/12/07 04:17:29
。゚(゚∩д∩゚)゚。
確かに仰るとおりですね・・・

367:デフォルトの名無しさん
05/12/07 08:47:31
楽天のなら作った事ある

368:デフォルトの名無しさん
05/12/07 09:24:49
ビックカメラのは組めませんか?

369:デフォルトの名無しさん
05/12/07 09:30:28
楽天のは空売りですよ

370:367
05/12/07 09:41:05
いや、俺は楽天で1円で1GBのmp3プレーヤゲットしたんだがw

サンプルページはないのか
ビックカメラの
仕様が分からんとどうにもならんだろ

371:デフォルトの名無しさん
05/12/07 10:57:09
ビックカメラの場合
こういう場合のと
URLリンク(www.biccamera.com)
こういう場合のがあるんだけどなんか違うの?
URLリンク(www.biccamera.com)

372:デフォルトの名無しさん
05/12/10 15:47:01
age保守

373:PAJA
05/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:デフォルトの名無しさん
05/12/10 17:23:42
system "vi hoge.txt";


375:PAJA
05/12/10 19:41:10

>> 374

ちゃんと開くことが出来るようになりました。
ありがとうございました。

376:デフォルトの名無しさん
05/12/11 05:44:49
>>373
実行したものからの出力を受け取らないならバッククォートは使わない

と覚えておくといいよ。

377:デフォルトの名無しさん
05/12/14 15:28:53
すいません。教えてください。
$_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";
であるとき

$s1が"AI今日U<KAKIKU>SASISU%sNANI"、
$s2が"明日"、
$s3が"明日TU"、
$s4が"TATITU"
となるようにするプログラムを教えてください。
どうかよろしくお願いします。

378:デフォルトの名無しさん
05/12/14 15:53:09
>>377
$s1 = "AI今日U<KAKIKU>SASISU%sNANI";
$s2 = "明日";
$s3 = "明日TU";
$s4 = "TATITU";

それだけしか条件がないとこれでもいいわけだが(笑)

どういう規則でそうなるのか例だけじゃわかんね。



379:377
05/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:デフォルトの名無しさん
05/12/14 16:30:10
だめだ。問題を説明する能力のない人らしいので
エスパーさん出番です。


381:ヽ(´ー`)ノ ◆.ogCuANUcE
05/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
05/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
05/12/14 17:14:38
>381
わかりにくくてすいません。
目的は文字列中の<*を含む英大文字>の部分とその直前の漢字の展開です。

384:デフォルトの名無しさん
05/12/23 19:01:41
メートル単位の長さを与えて、それをヤードに変換して表示するプログラムを教えてください。

1メートルは1.1ヤードとしてください。

385:デフォルトの名無しさん
05/12/23 19:03:08
インボカントって何か教えてください

386:384
05/12/23 19:11:02
追記します。

メートル単位の長さをヤードに変換したり、ヤード単位の長さをメートルに変換するプログラムを教えてください。

>>384でかいたような一方通行のプログラムでしたら分かります。
上のような場合、どうやって分岐(?)させればよいのでしょうか?

387:384
05/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:デフォルトの名無しさん
05/12/23 20:02:18
>>387
入力値がメートルとした場合のヤードの値
入力値がヤードとした場合のメートルの値
を計算して結果を2行書けばいいんじゃね?

389:デフォルトの名無しさん
05/12/23 22:21:41
>>388
なるほど。
入力時の数字が、10だったら

10メートルは***ヤードです。
10ヤードは***メートルです。

とすれば良いのですね。
逆転の発想ですね!ありがとうございます。

390:デフォルトの名無しさん
05/12/24 00:19:30
それなんて宿題

391:デフォルトの名無しさん
05/12/24 17:51:13
age
宿題でもどーんとこいや

392:デフォルトの名無しさん
05/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
05/12/25 19:31:09
>>392
-r 付けなきゃそれっぽくならんかね。

394:デフォルトの名無しさん
05/12/26 00:01:42
あれだと、エディタのタグジャンプ使えないし、みづらいので。
cの関数コールグラフ書くフリーウェアのfunctreeみたいな使い勝手
のものが欲しいです。

395:デフォルトの名無しさん
05/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:デフォルトの名無しさん
06/01/13 16:15:09
1
INDATEというファイルの中身を読み込んで処理するものであること。(INDATEも提出すること)
2
少なくとも一個のif文をつかっている。

3
for.while.foreachなどの繰り返しを少なくとも一個は使っている。
4
少なくとも一個の配列を使っている。
5
少なくとも一個の引数を使っている。
6
以下の様に実行することでOUTDATEに結果が出力される。
%KADAI3<INDATE>OUTDATE
注:3は引数である。

という課題です。頼みます。

397:デフォルトの名無しさん
06/01/13 16:17:49
>>396
教科書に答えが。

398:デフォルトの名無しさん
06/01/13 16:18:35
>>397
う・・・

399:デフォルトの名無しさん
06/01/13 16:40:59
なんだその意味不明な課題
俺が馬鹿なだけかもしれんが、何をしたいのか訳わからん

400:デフォルトの名無しさん
06/01/13 16:44:17
>>399
1~6を満たす自由な機能のプログラムを作るって課題なんですが…

401:デフォルトの名無しさん
06/01/13 16:47:08
ああそういう意味か
%KADAI3<INDATE>OUTDATE
まだこれの意味が分からんが

402:デフォルトの名無しさん
06/01/13 16:56:45
>>401
Terminalで入力したらってことだからあまり関係ないです。ごめんなさい。

403:デフォルトの名無しさん
06/01/13 17:28:01
それDATEじゃなくてDATAだろ

404:デフォルトの名無しさん
06/01/13 17:37:44
>>403
そうです。ほんとごめんなさい。

405:デフォルトの名無しさん
06/01/13 21:34:26
結局>>397でFAだな


406:デフォルトの名無しさん
06/01/14 07:43:38
そんなぁ・・・

407:デフォルトの名無しさん
06/01/14 09:42:00
#!/usr/bin/perl
use LWP::Simple;
$url = 'URLリンク(girls.twistys.net)';
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:デフォルトの名無しさん
06/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:ゆみ
06/01/16 11:24:17
Perl初心者です。教えてください。

日付,メールアドレス
日付,メールアドレス
日付,メールアドレス



と数万行も続くデータから、重複メールアドレスが存在したときは
その行を取り除くということは出来るのでしょうか。
困っています(;;)教えてください。




410:デフォルトの名無しさん
06/01/16 11:39:46
できるよ

411:ゆみ
06/01/16 11:44:33
どうやればいいのでしょうか?
是非教えてください。。。

412:デフォルトの名無しさん
06/01/16 11:44:49
>>409
perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv

413:ゆみ
06/01/16 11:51:59
>>412

ありがとうございます(*^^*)
これはコマンドプロンプト(PC)上で行う処理方法でしょうか?
サーバー上のCGIファイルの中で処理する場合の書き方はありますか?

またin.csvというのが元のデータファイルで、out.csvというのが
出力された新しいファイルですよね?

414:ゆみ
06/01/16 12:02:04
perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv

これも試してみましたがうまくいきません。
1万行以上あるのに新しく作られたファイルは60行足らず。

もしかすると私の説明不足なのかもしれません。
重複したメールアドレスの存在しない日付,メールアドレス
のリストを作りたいのですが。。。

意味わかりますでしょうか(**)ごめんなさい。。。

415:デフォルトの名無しさん
06/01/16 13:54:12
>414
m月d日に誰からメールが来てるかのリストを作るのか?

だったらDBに読み込んでクエリ書いた方が手っ取り早いと思われ。
SELECT dateval, addr FROM infile GROUP BY dateval, addr;


416:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/16 15:45:47
>>408
何がどう仲間なのか全然分からん。
もっと詳しく説明するように。


418:デフォルトの名無しさん
06/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
06/01/16 19:18:56
本当は sub pushme に \@ary 渡すのは蛇足。
渡さなくともここでは @ary は有効なスコープ。

420:デフォルトの名無しさん
06/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
06/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:デフォルトの名無しさん
06/01/16 21:06:04
>>420
おお、更新していなくて分かりませんでした。
それでうまく出来ました。ありがとうございます!

423:ゆみ
06/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:デフォルトの名無しさん
06/01/16 23:19:38
ファイル読み込みくらいなら、perl入門のサイトや本で調べられるだろ

425:デフォルトの名無しさん
06/01/16 23:25:50
>>423
初心者初心者連呼するならエクセルのフィルタ使うとかにしたほうがいいんでない?

426:ゆみ
06/01/16 23:33:08
>>424厳しいお言葉・・・有難う御座います。
ではファイルの読み込み部分は結構です。。。
>>425それでは意味がないのです。。。

お願いします!!!(;;)

427:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/16 23:52:53
難しかったかな?

429:デフォルトの名無しさん
06/01/17 00:12:25
>>427
ヒント: 解く奴も人間


430:デフォルトの名無しさん
06/01/17 00:36:53
>>427
無理

431:デフォルトの名無しさん
06/01/17 01:53:26
>>426
意味がないってどういうこと?
csvをエクセルに読み込んで重複を消すだけじゃないの?
知識らしい知識もいらんし煽りじゃなくあなたのような人向けだと思うが。

432:デフォルトの名無しさん
06/01/17 01:59:03
>>413でCGIで動かしたいってあるよ

433:デフォルトの名無しさん
06/01/17 02:50:39
>>423

while (<$fh>) {
chomp;
my($date, $mail) = split /,/;
$mails{$mail} = $date;
}

後は自分で何とかしろ。


434:ゆみ
06/01/17 10:20:52
>>433さん 素敵です!
あまりハッシュって使ったこと無かったので・・・
出来ました!!!有難う御座います!!!

435:デフォルトの名無しさん
06/01/25 21:48:54
<2></2>を削除する正規表現教えて
(例)
.....<1>.....<2>....</2>....<1>.....
   ↓
.....<1>.............<1>.....

436:デフォルトの名無しさん
06/01/25 21:50:42
s/.....<1>.....<2>....</2>....<1>...../.....<1>.............<1>...../g

437:デフォルトの名無しさん
06/01/25 21:51:45
>>435だけど
間違えた。

<2></2>を削除する正規表現教えて
(例)
.....<1>.....<2>....</2>....</1>.....
   ↓
.....<1>.............</1>.....

438:デフォルトの名無しさん
06/01/25 23:08:10
正規表現の基礎の基礎じゃないか

439:マル
06/01/26 01:37:34
掲示板スクリプトで、名前が「あ」か「い」か「う」の人以外は書き込みできない、
という風にする場合

if ($name !/あいう/) { &error("名前が間違っています",'NOLOCK'); }

ではないですよね。
「あ」か「い」か「う」というのはどう書けばいいでしょうか。

440:& ◆p8OCeNXbYU
06/01/26 01:43:21
すみません。実際には「あ」か「い」か「う」ではなく、
「一」か「二」か「三」か・・・「三十五」か「三十六」という風になります。
一~三十六までの漢数字を入れなければ投稿できない、という風にしたいのです。

自動で貼られてしまう広告よけのためなのですが、
何卒よろしくお願い致します。

441:マル
06/01/26 01:50:09
440=439です。

442:& ◆p8OCeNXbYU
06/01/26 02:34:09
すみません。できました。
|で区切ればorの意味になるようでした。

if ($name !~/一|二|三/) { &error("名前が間違っています",'NOLOCK'); }

というような感じで動きました。失礼しました。

443:デフォルトの名無しさん
06/01/26 03:41:24
これも正規表現の基礎の基礎の基礎だよな・・
マジで・・

444:デフォルトの名無しさん
06/01/26 10:33:45
<2>.*?</2>

445:デフォルトの名無しさん
06/01/26 12:21:36
>>444
><2>.*?</2>
".*?"という文字列はGoogleで検索できないため、申し訳ありませんが、
意味を教えていただけますでしょうか?

.*は文字の0個以上(.+は1個以上)にマッチだと思いますが、これに?が付いた
.*?がいまいち、よく分かりません。

446:デフォルトの名無しさん
06/01/26 12:50:59
>>445
Perl はググる前に perldoc 。
URLリンク(www.kt.rim.or.jp)

447:デフォルトの名無しさん
06/01/27 11:51:12
>>442
use encoding でエンコード指定しておいて
$name !~ /[あいう]/ で判定する方がいいと思う。



448:デフォルトの名無しさん
06/01/27 11:54:17
>>445
最小マッチ

デフォルトは最大でマッチする。
たとえば 'abcabcabcabc' という文字列に対して /a.*a/ は 'abcabcabca'
の部分がマッチするが /a.*?a/ だと 'abca' がマッチする。


449:sage
06/01/27 17:48:26
>>448, 446
ありがとうございます。

>最小マッチ
Perl歴17年ですが、この正規表現は見落としていました。
わざわざ、(1)のような書き方をしてきましたが、
(1) <2>[^<]*</2>
(2)の方が読みやすいですね? 
(2) <2>.*?</2>
勉強になりました。

450:デフォルトの名無しさん
06/01/27 17:53:34
はぁ、どうして下らない嘘をつくかな

451:デフォルトの名無しさん
06/01/27 17:54:23
>>449
詳説 正規表現 第2版まじおすすめ

452:デフォルトの名無しさん
06/01/27 19:28:06
Perl 歴 17 年で正規表現もまともに使えないなんて、そんなの「歴」のうちに入らんよ。

453:449
06/01/27 21:55:45
>>452
>Perl 歴 17 年で正規表現もまともに使えない
正規表現の基本が分かっていなかったので、人にPerlを教える
のは無理でしょうが、研究機関の仕事を主にPerlでこなして
きたことは嘘ではありません。どんな書き方でも、限られた
時間内にバグがないスクリプトが書ければ、仕事がこなせま
す。

perlの良いところは、Larry Wallが言うように、>> 449 の
(1)でも(2)でも、様々な方法で目的が達成できる点です。

454:デフォルトの名無しさん
06/01/27 22:01:37
なんつーか・・
一生VB・HSPやってるようなモンだな
進歩がなけりゃただの・・

455:デフォルトの名無しさん
06/01/27 22:12:42
449 の2しか知らん

456:デフォルトの名無しさん
06/01/27 23:32:19
>>453
こなせてないじゃん。
>>435 程度のことも人に聞かないと出来ないんだろ?

457:デフォルトの名無しさん
06/01/28 14:14:55
Perl って1987年12月生まれなんだな。18年前か
URLリンク(history.perl.org)

まあ17年前からPerl(というかUNIX)やってて正規表現知らないなんて
ありえない

458:デフォルトの名無しさん
06/01/28 15:43:49
「Perlプログラマのレベル10」
URLリンク(d.hatena.ne.jp)
のレベル5に
> 多くの人たちがこのレベルを超えないのは、たとえ非効率であっても、
> 再利用可能なコンポーネントの作成を除けば、ほどんど何でもできるからである。
とあるように、必要性を感じられなければそれ以上のものはなかなか知ることが出来ないんだろうね…人間ってのは。
この機会にPerl5の奥深さを学んでみたらどうだ?その霧の先には素晴らしい世界が広がっているぞ

459:デフォルトの名無しさん
06/01/28 17:48:46
>>457
最短マッチが使えるようになったのはPerl5以降だよ。
それ以前に覚えた正規表現をそのまま使い続けていたんだろうね。


460:デフォルトの名無しさん
06/01/28 18:00:14
ああ、最短マッチを知らなかったってことだったのか
斜め読みしてた

461:デフォルトの名無しさん
06/01/30 15:42:23
>>449
くっ。負けた。俺、Perl歴16年。


462:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/31 17:30:13
>>462
♀1-♀2 が2回あるのはただの総当りではないと思われるが
どういう規則なのかね?


464:デフォルトの名無しさん
06/02/01 11:03:17
>>463
スミマセン間違いです・・・。

♂が4チーム・♀が2チームの場合・・・
【Aコート】  【Bコート】
♂1-♂2 ♂3-♂4
♀1-♀2 ♂1-♂3
♂2-♂4   -



465:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/02/06 13:29:43
>>462
CPAN には、順列、組み合わせを扱う Algorithm::Permute
というモジュールがある。これが使えるんじゃないの?
(オレは使ったことは無いけど)

467:デフォルトの名無しさん
06/02/08 10:27:13
総当たりの全組合せを求めた後で、それの並べ方を考えればいいのでは
ないだろうか。同じチームがなるべく連続しないようにするなど。
そして最後にコート分けする。


468:デフォルトの名無しさん
06/02/11 11:07:49
直リンクが不可能なアップローダー cgi あったら便利だと思う

直リンクされたことによって消滅するアップローダは多いからな

perl で書かれたものキボン

469:デフォルトの名無しさん
06/02/11 13:48:02
マルチ
スレリンク(tech板:308番)

470:デフォルトの名無しさん
06/02/11 13:49:32
>>468
ってかんなもんすでにあんだろが

471:デフォルトの名無しさん
06/02/12 06:11:09
>>470
直リンクを不可能にするような状態のcgiアップローダのスクリプトって配布されてる?
されていないんじゃ?

472:デフォルトの名無しさん
06/02/12 11:00:38
REFERER が期待する値以外だったらリジェクトするだけじゃん


473:デフォルトの名無しさん
06/02/24 06:43:47
URLリンク()にソケット飛ばしてHTMLデータを引っ張ってくるにはどうしたらいいですか?

474:デフォルトの名無しさん
06/02/24 08:44:13
>>473
ソケットは飛ばない。
perl -MLWP::Simple -e "get q|URLリンク(www.example.com)"

475:デフォルトの名無しさん
06/02/27 01:08:32
ファイル内の *.gif を *.bmpへ変換するプログラム作ってもらえませんか?
正規表現だったらどうなるでしょうか?

476:デフォルトの名無しさん
06/02/27 01:11:06
拡張子だけ(名前の変更(M))だけ、できればよいので、、、。
変更しなければならないものが100近くあるので^^;助けてください

477:デフォルトの名無しさん
06/02/27 01:21:50
>>475
そんな見当違いな質問をしてると
perlのスクリプトを書いても「どうやって実行するんですか?」
とか聞かれそうだと思われて誰にも相手されないよ

478:デフォルトの名無しさん
06/02/27 01:28:06
>>475
名前の変更(M)とか書いてる所を見るとWindowsだと思うが、
ファイル名をマジで変えるだけなら、DOS窓で

C>CD 変えたいファイルがあるディレクトリ
C>RENAME *.gif *.bmp

でいいんじゃマイカ?

UNIX系なら
% cd 変えたいファイルがあるディレクトリ
% mv *.gif *.bmp

どちらにしろ同じか。

※ データ形式は変わらないから開けなくてもしらん。

479:デフォルトの名無しさん
06/02/27 01:48:34
>>478
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp

480:デフォルトの名無しさん
06/02/27 03:01:53
>>478
それは Windows/DOS じゃないと使えない技だぞ。

481:デフォルトの名無しさん
06/02/27 03:34:00
「名前の変更(M)」って書いてるくらいだから
Windows前提で答えれば良いっしょ

482:デフォルトの名無しさん
06/02/27 11:36:48
>>475はファイル名だけ変えたいんだね。
拡張子がbmpであるgifファイルを作りたいんだね。
いや、きっとそうなんだろうね。質問の内容からして
そうだし、他の人もそう理解しているようだし。


483:デフォルトの名無しさん
06/02/27 12:17:25
perl -pi -e "s/\.gif/\.bmp/g" <ファイル>

484:デフォルトの名無しさん
06/02/27 15:27:57
>>478
有難うございました。WinとLinux(UNIX)では、コマンドが違うからsystem()関数を使っても
同じプログラムとはいかないわけでしたね。
それに、Perlを使わなくてもできるんですね。
Cで書かれたコマンドがすでにあるからこれを使わない手は無いですね。OSにです。




485:デフォルトの名無しさん
06/02/27 15:30:28
今だCでプログラム書いたり、Cで書かれたexeばかり使っているので、手持ちのperlスクリプトを増やしたかった訳でした。。


486:デフォルトの名無しさん
06/02/27 15:31:53
いつもCで事足りてしまうみたいです。。有難うございました。

487:デフォルトの名無しさん
06/02/27 15:34:07
UNIX(Linux)とWindowsのコマンドが違う以上、汎用的なものを作るのってなかなか難しいですね。。。。?

488:デフォルトの名無しさん
06/02/27 15:35:30
本当、Cプログラマで良かったとつくづく思います。。

489:デフォルトの名無しさん
06/02/27 19:52:06
日記はチラシの裏に

490:デフォルトの名無しさん
06/02/28 00:02:26
リアルで会ったら頭蹴り飛ばしてやんのに

491:デフォルトの名無しさん
06/02/28 00:24:24
>>490
乙w死ねw

492:デフォルトの名無しさん
06/02/28 00:26:39
>>490
リアルで会ったら頭蹴り飛ばして殺してやるのにw

493:490
06/02/28 00:32:52

人格異常者だと思われてるから、普段リアルで誰にも相手されないよ~

494:490
06/02/28 00:37:48
会社訪問した際、面接官に目が包丁のようだよと言われますた。
腹が立ったので、帰る際後ろから面接官の頭蹴り飛ばしてやりました。

電車に乗ると、たくさんのひとの頭を蹴り飛ばさなければならないので
怖くて乗れません。

495:490
06/02/28 00:39:55
別にいつ死んでもいいので、PG組んでます。

496:デフォルトの名無しさん
06/02/28 00:42:55
(;´д`)

497:デフォルトの名無しさん
06/02/28 00:45:32
世の中みんないい人ばかりじゃないしねぇ

498:490
06/02/28 00:46:15
ファイル内って書いてて答えがこれ?
C>RENAME *.gif *.bmp
死ね

499:490
06/02/28 00:53:16
491-495
で、だれ?おまえら

500:デフォルトの名無しさん
06/02/28 00:58:17
おれだよ、おれ
500

501:デフォルトの名無しさん
06/02/28 01:00:00
とりあえずここには
>>478以外、まともな人間はいなさそうだw

502:490
06/02/28 01:01:11
これ書いてる奴が?
% mv *.gif *.bmp

503:デフォルトの名無しさん
06/02/28 01:03:27
>>490
(;´д`) いや 話しかけてこないで。さよなら

504:デフォルトの名無しさん
06/02/28 01:45:20
ローマ字で入力すれば、あらゆるその読みの文字にマッチするスクリプト
gyouで行やら業やらぎょうやらギョウやらgyouやら

505:デフォルトの名無しさん
06/02/28 02:04:59
migemo

506:デフォルトの名無しさん
06/02/28 17:45:14
だってあれ完璧じゃないんだもん

507:デフォルトの名無しさん
06/02/28 18:53:11
>>506
migemo の「辞書」が完璧じゃないんだろ?
「辞書」をしっかり作れ。Perlでmigemoみたいなこと
をやるにせよ、辞書が命だ。

508:505
06/02/28 23:27:34
おまえも>503おまえも>506
死ね

509:デフォルトの名無しさん
06/03/01 17:08:44
>>508
うはwwwカッコヨスwwww
俺にも氏ねって言ってぇぇvvvvvv

510:505
06/03/02 04:09:38
>509
しねしねしねー♪从´∇`从

511:デフォルトの名無しさん
06/03/06 21:20:04
カウンターで
0=あ
1=1

49=を
50=ん
って感じに変換するにはどーすればいいんですか?

512:デフォルトの名無しさん
06/03/06 21:24:12
日本語でおk

513:デフォルトの名無しさん
06/03/06 21:33:41
>>511
my %c = (
 '0' => 'あ',
 '1' => '1',
# 略
 '49' => 'を',
 '50' => 'ん'
);

などと作っておいて $c{$count} のような感じで対応する文字列を求める。

514:デフォルトの名無しさん
06/03/11 00:49:18
>>1
楽天とかで任天堂DSを購入するスクリプト組んでくれよ。人力じゃ無理 買えないw

515:デフォルトの名無しさん
06/03/12 16:39:03
連投スクリプトください

516:デフォルトの名無しさん
06/03/12 16:52:43
#!perl
use LWP::Simple;
while (1) { get 'URLリンク(pc8.2ch.net)'; }

517:デフォルトの名無しさん
06/03/12 16:53:39
連投スクリプトください

518:デフォルトの名無しさん
06/03/12 16:54:45
連投規制、バーボンに引っ掛からない2ch投稿スクリプト希望

519:デフォルトの名無しさん
06/03/12 17:18:26
#!perl
use LWP::Simple;
while (1) {
get 'URLリンク(pc8.2ch.net)';
sleep 30;
}


520:デフォルトの名無しさん
06/03/12 17:40:11
明らかに悪用する気満々だから嫌。

521:デフォルトの名無しさん
06/03/12 17:47:13
スレを埋めるときに使うんです(><;)

522:デフォルトの名無しさん
06/03/12 18:49:39
スレ埋めは、自分でスクリプトを書ける者にのみ許される神聖なる儀式であルッ!!

523:デフォルトの名無しさん
06/03/12 18:51:08
思いっきり悪用の気配やんか

524:デフォルトの名無しさん
06/03/15 20:52:25
あんま調子にのんなよ

525:デフォルトの名無しさん
06/03/16 23:41:18
テキスト処理でおうかがいします。
半角数字と全角数字が混在したテキストがありまして、
一桁のみの数字は全角、二桁以上の数字は半角に統一したいのです。
中身を見てみると、「33」とか「679」とかになっていて、
どういう入力をしたのか不思議でなりません。
何かよいお知恵はないでしょうか。

Perl 5.8.1、Mac OS XのTerminalで作業をしています。
入力ファイルのエンコードはUTF-16(中国語処理のため)、
use utf8;で処理しています。

526:デフォルトの名無しさん
06/03/16 23:43:46
適当に正規表現で変換してったらいいんじゃないの?

s/1/1/

527:デフォルトの名無しさん
06/03/17 00:20:14
全部半角にしてから全角に直すだな

528:525
06/03/17 23:51:02
>>526
>>527

こんな感じで書いてみました。

while(<>) {
tr/[0-9]/[0-9]/;
s/(¥D)1(¥D)/$11$2/g;
(中略)
s/(\D)9(\D)/$19$2/g;
print;
}

ただ、これだと2回同じ処理をしないといけないですよね。
最初の処理でtr行、次の処理でs行になるんでしょうか。
これを効率よく1回の処理ですませたいのですが、いいやり方をご存知ないですか?

529:ヽ(´ー`)ノ ◆.ogCuANUcE
06/03/18 00:13:06
use utf8;
use Unicode::Normalize;

$str = NFKC($str);
$str =~ s/(?<!\d)(\d)(?!\d)/(my $ret = $1) =~ tr[0-9][0-9]; $ret/ge;

これでどうだろう。

530:デフォルトの名無しさん
06/03/18 17:46:30
>>528
逆。数字をまず全部全角にして、
その後2文字以上連続する全角数字を半角にする。

531:http://www.vector.co.jp/soft/win95/util/se072729.html
06/03/18 21:12:31
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?





532:デフォルトの名無しさん
06/03/18 21:35:05
テキスト置換で64bitに対応してると
なんかいいことあんの?

533:デフォルトの名無しさん
06/03/18 22:40:20
>>531
マルチ + スレ違い乙


534:525
06/03/18 23:37:27
>530

ご指摘どうもありがとうございます。
他にも処理が山ほどあり、あまり時間がなくてテンパってました。

>529

うまくいきました。どうもありがとうございました。
こういうときに先読み・後読みを使うんですね。
教えていただいたものを流用して、
2桁のみ半角にすることもできました。

535:ヽ(´ー`)ノ ◆.ogCuANUcE
06/03/19 00:33:20
>>529 を書いて気が付いたんだが、Encode::JP::H2Z が変換できるのは
カタカナだけなんだな。

日本語処理で凝ったことしようと思ったら、Jcode なんかねぇ…。

536:デフォルトの名無しさん
06/03/19 03:25:47
>>532
読み込みの段階で64ビットは有利

537:デフォルトの名無しさん
06/03/19 09:25:18
うそつけ

538:デフォルトの名無しさん
06/03/22 21:16:20
>>528
「¥」と来たか。「\」ではないと。


539:デフォルトの名無しさん
06/03/29 06:15:44
すいません、リクです。

数字を有効数字の桁数で丸めるスクリプトを探しています。
例えば、round(数字, 桁数)の形で使うとすると、
round(-12345.067, 4)
round(-12345.067, 7)
round(0.0567, 1)
round(1234567890123456, 4)
は、それぞれ
-12350
-12345.07
0.06
1.235e+015
を返す、というようなものなんですが、どなたかお願いできませんか

540:デフォルトの名無しさん
06/03/29 12:19:00
最後の1つはprintfの%.3eでいいだろうし、上3つはMath::SigFigsのFormatSigFigsが
使えると思うから、値の範囲かなんかで場合分けしてそれぞれ食わせればいいんで
ないかな。


541:539
06/03/29 23:21:01
>>540
出来ました。どうもです。

あと、CPANを漁っていたらNumber::Formatに似たような機能をみつけたので、
これを改変してもうまくいきました。

sub round {
my ($number, $digits) = @_;
my $sign = $number <=> 0;
my $result = abs($number);
my $index;
if($number =~ /(.*)e(.*)/) {
$result = $1;
$index = $2;
}
my $precision = $digits - length(int($result));
if($result =~ /^0(\.0*)/) {
$precision += length($1);
}
my $multiplier = (10 ** $precision);
$result = int($result * $multiplier + 0.5000001) / $multiplier;
$result = -$result if $sign < 0;
$result *= (10 ** $index) if $index;
return $result;
}

542:デフォルトの名無しさん
06/03/32 03:59:17
$ip_sample = 222.4.xxx.xxx #フォームや環境変数から取得
$ip_data <<END_DATA;  #外部ファイルから読み込んだデータ(実際は約2万4千行程度)
国名A-221.184.0.0-221.191.255.255
国名B-221.240.0.0-222.15.255.255
国名C-222.144.0.0-222.151.255.255
END_DATA
foreach (@ip_data) {
($cctld,$ip_a,$ip_b) = split(/-/,$_);
if ( 判定ルーチン ){$ans = $cctld
last;
}
}
print $ans;#この場合は"国名B"と表示したい

$ip_dataを参照して$ip_sampleの値が$ip_dataのどの行に在るかの判定を行い
$ansへ該当する$ip_deta行の$cctldを返すようにしたいのですが
判定方法でつまずいています。gethostxxx関数を使えという方向は無しにして
元の$ip_dataを増やさずに行える極力短い判定のルーチンを教示おねがいします
このテの質問はwebプでやれと言われそうな気がするけど質問の内容が
板を選ぶ以前のレベルの自覚があるので敢えてこちらに投下しまふ。

543:デフォルトの名無しさん
06/03/32 06:32:36
こういうパズル的なのはどこでも答えてもらえそう

my $target = "222.4.0.0";
my @iptable = qw( 国名A-221.184.0.0-221.191.255.255 国名B-221.240.0.0-222.15.255.255 国名C-222.144.0.0-222.151.255.255 );

$target = pack("C"x4, split(/\./, $target));

for(@iptable){
my($country, $from, $to) = split /-/;
$from = pack("C"x4, split(/\./, $from));
$to = pack("C"x4, split(/\./, $to));
if($from le $target && $target le $to){
print "$countryが範囲内でした\n"
}
}

544:デフォルトの名無しさん
06/03/32 06:34:47
ありがとうございます
早速走らせて見ます


実は・・・・
- foreach (@ip_data) {
+ foreach ($ip_data) {
ですた、阿呆ですんませんです・・・ orz

545:デフォルトの名無しさん
06/03/32 07:51:49
その2万4千行のデータの状態によっては物凄く処理速度に差が出そうだ。
データを読みながら1回から2万4千回判定するのがいいか、
全部配列に読み込んでおよそ5回判定するのがいいか。

546:デフォルトの名無しさん
06/03/32 07:54:50
違った。14回?

547:542
06/03/32 14:00:16
>>543
web鯖にはまだ置いてませんが手元の環境では問題なく動きました。
答えを教えてもらうと、なるほどなぁと納得行くのですが
その答えをせめて自分で作れるまでにはなりたいです。
ネットでも資料沢山あるけどラクダ本がほしくなったので
日曜日にでも街に探しにイッテキマス
目標は脱ド初心者w

>>545
できれば色々なパターンをベンチ取って一番軽い処理を使いたいですw
どうしても重かったらIP国別データを2~3000行程度に分けて
IPの最初の8ビットを参照して呼び分けてみようかなと思ってますが・・・

548:デフォルトの名無しさん
06/03/32 20:14:29
>>547
アルゴリズムの勉強したほうがいいよ。
>>545-546でバイナリサーチに気づかないのはかなり重症

549:デフォルトの名無しさん
06/04/02 05:03:28
>>547


550:デフォルトの名無しさん
06/04/02 05:08:26
スマソ。書き込む前に送信してもうた・・・

>>547
IPをキー、国名を値にもつハッシュを作り、データベースクラスにtieしてみては?
2万4千行をメモリに持つのはつらいと思う。

551:550
06/04/02 05:38:58
ちょっと練習で書いてみた。IPは悩んだ末、強引に10進数に変換した。

my $data = <<EOF;
A-221.184.0.0-221.191.255.255
B-221.240.0.0-222.15.255.255
C-222.144.0.0-222.151.255.255
EOF
unlink 'test.db';
use Fcntl;
use DB_File;
tie my %db, 'DB_File', 'test.db', O_RDWR|O_CREAT, 0644, $DB_BTREE or die;
foreach(split/\n/, $data) {
my ($country, $from, $to) = split /-/;
for($from, $to) {
s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1*256**3+$2*256*256+$3*256+$4/e;
}
$db{$from-1} = 'N/A';
$db{$to} = $country;
}
untie %db;
sub find_country {
my $query = shift;
$query =~ s/(\d+)\.(\d+)\.(\d+)\.(\d)/$1*256**3+$2*256*256+$3*256+$4/e;
my $x = tie my %db, 'DB_File', 'test.db', O_RDONLY, 0644, $DB_BTREE or die;
my ($ip, $country) = ($query, 'N/A');
$x->seq($ip, $country, R_CURSOR);
return $country;
}

print find_country('221.239.0.1');

552:デフォルトの名無しさん
06/04/02 06:41:56
# IPアドレス→32bit整数
$ip = unpack('N', pack('CCCC', split(/\./, $ip)));
これで2倍くらいの速度になった
キャプチャが大きいんかなぁ

2個目のIPアドレス変換部分、最後が\d+じゃなくて\dになってたよ。
桁数が多いから計算ミスかと思ったけど、数字が文字列として尻についてただけなんだね。

553:デフォルトの名無しさん
06/04/04 17:06:58
>>552
use Socket; して inet_aton() 使ったら?


554:デフォルトの名無しさん
06/04/05 11:25:50
ベンチしたらinet_aton意外にとてつもなく遅いです。あとは
・「.」でばらすのはsplitより正規表現でキャプチャする方が速い
・4つの10進数から32bit整数にするのは、シフト>掛け算>pack-unpackの順で速い。
552の言うのとは逆の結果になったわけだがなんでかね?

Benchmark: running inet_aton, multiple_re, shift_re, unpack_re, unpack_split for at least 3 CPU seconds...
inet_aton: 5 wallclock secs ( 1.62 usr + 1.46 sys = 3.08 CPU) @ 425.97/s (n=1312)
multiple_re: 7 wallclock secs ( 3.26 usr + 0.00 sys = 3.26 CPU) @ 229803.99/s (n=749161)
shift_re: 3 wallclock secs ( 3.08 usr + 0.03 sys = 3.11 CPU) @ 274049.84/s (n=852295)
unpack_re: 3 wallclock secs ( 3.10 usr + 0.00 sys = 3.10 CPU) @ 183073.87/s (n=567529)
unpack_split: 4 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 119672.52/s (n=374575)



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch