[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/05 22:17 / Filesize : 217 KB / Number-of Response : 841
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlでリクに答えるスクリプトを作るスレ



1 名前:(・∀・)チンポー!! mailto:(・∀・)チンポー!! [04/06/02 11:39]
perl書きなんだがさ、こうリクに答えてなんか作りたいんだ。
だからリクエストをくれ。

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 ]
総当たりの全組合せを求めた後で、それの並べ方を考えればいいのでは
ないだろうか。同じチームがなるべく連続しないようにするなど。
そして最後にコート分けする。


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

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

perl で書かれたものキボン

469 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 13:48:02 ]
マルチ
pc8.2ch.net/test/read.cgi/tech/1138519327/308

470 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 13:49:32 ]
>>468
ってかんなもんすでにあんだろが

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

472 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 11:00:38 ]
REFERER が期待する値以外だったらリジェクトするだけじゃん


473 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 06:43:47 ]
/***:****/にソケット飛ばしてHTMLデータを引っ張ってくるにはどうしたらいいですか?

474 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 08:44:13 ]
>>473
ソケットは飛ばない。
perl -MLWP::Simple -e "get q|www.example.com/path/to/file.html|"



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

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

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

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

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

でいいんじゃマイカ?

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

どちらにしろ同じか。

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

479 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 03:01:53 ]
>>478
それは Windows/DOS じゃないと使えない技だぞ。

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

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


483 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 12:17:25 ]
perl -pi -e "s/\.gif/\.bmp/g" <ファイル>

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






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


486 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 15:31:53 ]
いつもCで事足りてしまうみたいです。。有難うございました。

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

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

489 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 19:52:06 ]
日記はチラシの裏に

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

491 名前:デフォルトの名無しさん [2006/02/28(火) 00:24:24 ]
>>490
乙w死ねw

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

493 名前:490 [2006/02/28(火) 00:32:52 ]

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

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

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



495 名前:490 [2006/02/28(火) 00:39:55 ]
別にいつ死んでもいいので、PG組んでます。

496 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 00:42:55 ]
(;´д`)

497 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 00:45:32 ]
世の中みんないい人ばかりじゃないしねぇ

498 名前:490 [2006/02/28(火) 00:46:15 ]
ファイル内って書いてて答えがこれ?
C>RENAME *.gif *.bmp
死ね

499 名前:490 [2006/02/28(火) 00:53:16 ]
491-495
で、だれ?おまえら

500 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 00:58:17 ]
おれだよ、おれ
500

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

502 名前:490 [2006/02/28(火) 01:01:11 ]
これ書いてる奴が?
% mv *.gif *.bmp

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

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



505 名前:デフォルトの名無しさん [2006/02/28(火) 02:04:59 ]
migemo

506 名前:デフォルトの名無しさん [2006/02/28(火) 17:45:14 ]
だってあれ完璧じゃないんだもん

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

508 名前:505 mailto:sage [2006/02/28(火) 23:27:34 ]
おまえも>503おまえも>506
死ね

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

510 名前:505 mailto:sage [2006/03/02(木) 04:09:38 ]
>509
しねしねしねー♪从´∇`从

511 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:20:04 ]
カウンターで
0=あ
1=1

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

512 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:24:12 ]
日本語でおk

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

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

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



515 名前:デフォルトの名無しさん [2006/03/12(日) 16:39:03 ]
連投スクリプトください

516 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 16:52:43 ]
#!perl
use LWP::Simple;
while (1) { get 'pc8.2ch.net/test/bbs.cgi'; }

517 名前:デフォルトの名無しさん [2006/03/12(日) 16:53:39 ]
連投スクリプトください

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

519 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 17:18:26 ]
#!perl
use LWP::Simple;
while (1) {
get 'pc8.2ch.net/test/bbs.cgi';
sleep 30;
}


520 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 17:40:11 ]
明らかに悪用する気満々だから嫌。

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

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

523 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 18:51:08 ]
思いっきり悪用の気配やんか

524 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 20:52:25 ]
あんま調子にのんなよ



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

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

526 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 23:43:46 ]
適当に正規表現で変換してったらいいんじゃないの?

s/1/1/

527 名前:デフォルトの名無しさん mailto:sage [2006/03/17(金) 00:20:14 ]
全部半角にしてから全角に直すだな

528 名前:525 mailto:sage [2006/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 mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 17:46:30 ]
>>528
逆。数字をまず全部全角にして、
その後2文字以上連続する全角数字を半角にする。

531 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://msdn2.microsoft.com/ja-jp/library/h2k70f3s.aspx [2006/03/18(土) 21:12:31 ]
TextSS のWindowsXP(Professional)64bit化おながいします

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

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





532 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 21:35:05 ]
テキスト置換で64bitに対応してると
なんかいいことあんの?

533 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 22:40:20 ]
>>531
マルチ + スレ違い乙


534 名前:525 mailto:sage [2006/03/18(土) 23:37:27 ]
>530

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

>529

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



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

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

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

537 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 09:25:18 ]
うそつけ

538 名前:デフォルトの名無しさん mailto:sage [2006/03/22(水) 21:16:20 ]
>>528
「¥」と来たか。「\」ではないと。


539 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 12:19:00 ]
最後の1つはprintfの%.3eでいいだろうし、上3つはMath::SigFigsのFormatSigFigsが
使えると思うから、値の範囲かなんかで場合分けしてそれぞれ食わせればいいんで
ないかな。


541 名前:539 mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 06:34:47 ]
ありがとうございます
早速走らせて見ます


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



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

546 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 07:54:50 ]
違った。14回?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<217KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef