[表示 : 全て 最新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書きなんだがさ、こうリクに答えてなんか作りたいんだ。
だからリクエストをくれ。

299 名前:デフォルトの名無しさん mailto:sage [2005/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 名前:デフォルトの名無しさん mailto:sage [2005/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 mailto:sage [2005/11/08(火) 11:46:59 ]
>>299
動きました。ありがとうございます。

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

302 名前:デフォルトの名無しさん [2005/11/19(土) 12:00:41 ]
PERL

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

304 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 23:35:29 ]
require 'sample.txt';

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

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

307 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 00:34:02 ]


sub require2 {
my $file = shift;




308 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 02:35:15 ]
open my$o,">$file" or die;
print$o "orz"x 10**5;
close$o;
return"orz";
}

309 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 22:24:32 ]


sub require_for_vip {
 my $gold = shift;


310 名前:306 [2005/11/26(土) 18:39:05 ]
難しいですかね?

311 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 18:56:33 ]
>>310
>>305に既に答えのコードが書いてあるわけだが。

312 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 19:33:04 ]
ワロス

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

314 名前:デフォルトの名無しさん mailto:sage [2005/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 [2005/11/26(土) 21:28:45 ]
なんどもすみません
.cgiのなかに
HTML表示するところがあるんですけど
そこにshow_file('ファイル名');をやっても
そのまま表示されてしまうのですが
(マジ初心者で迷惑かけすぎですね

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

317 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 22:09:20 ]
${show_file('ファイル名')}



318 名前:306 [2005/11/27(日) 00:26:50 ]
printです

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

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

データ↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1165.lzh

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

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

321 名前:デフォルトの名無しさん [2005/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 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 19:53:27 ]
俺はこういうのはJavaScriptでやっちゃってる。

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

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

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

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

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

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



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

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

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

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

329 名前:デフォルトの名無しさん [2005/11/29(火) 09:47:48 ]
proxy.f2.ymdb.yahoofs.jp/users/13a494ce/bc/sample.html?bcDAlAEB6aOdocif

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

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

330 名前:329 [2005/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 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 11:16:32 ]
どうでもいいけど、毎問メールアドレスを入力させられんの?


332 名前:デフォルトの名無しさん [2005/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 [2005/11/29(火) 11:38:26 ]
>>331
ううん、メアドを登録しなかったらしなかったで得点表示のみのページのみ
出力されて、メアド登録したら、直接SENDMAILで詳細結果が
メールで届くようにするよ。

334 名前:329 [2005/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つづき↑ [2005/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 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 19:04:01 ]
鬱陶しいなあ。
まったく理解できないのに偉そうなことばかり。
もうどこかに委託しろよ。

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

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

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



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

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


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

341 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 07:26:07 ]
微笑ましいですね^^

342 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 11:25:43 ]
^^;

343 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 19:04:43 ]

性別

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

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




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

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


344 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 19:11:07 ]
pc8.2ch.net/test/read.cgi/tech/1131286411/641

マルチ放置推奨

345 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 13:49:45 ]
西暦の "2005"という部分だけ、取得したいんだけど

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

346 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 13:56:41 ]
>>345
この辺読んで基礎からじっくり勉強したらいいんじゃない?
pc8.2ch.net/test/read.cgi/tech/1131286411/2
www.hyuki.com/writing/techask.html

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

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



348 名前:デフォルトの名無しさん [2005/12/01(木) 14:03:51 ]
>>347
とんくす

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


350 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 14:29:20 ]
>>347
長い

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

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


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

353 名前:350 mailto:sage [2005/12/01(木) 16:15:15 ]
知ってるよ
どんなunixtimeを渡すのか分からんから一例を書いたまでだ

354 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 16:42:12 ]
そういうのを負け惜しみって言うんだぜ

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


356 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:00:06 ]
個人的には strftime の方が好みだな。

357 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:04:14 ]
>>343
Yahooにまで…。
messages.yahoo.co.jp/bbs?.mm=CP&action=m&board=1835099&tid=a1zperla1ya5qa1bca5ka1z&sid=1835099&mid=368
しかも誰か答えちゃってるし。



358 名前:350 mailto:sage [2005/12/01(木) 18:08:14 ]
なんで煽られてるのかが分からんのだが・・中学生か?

359 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:24:26 ]
>>343の答えは
pc8.2ch.net/test/read.cgi/php/1102980903/965-967
でもう出てる

360 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:28:38 ]
>>358
変な奴はほっとけ

361 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:38:49 ]
VIPが出来てから馬鹿が流入してきた

362 名前:デフォルトの名無しさん mailto:sage [2005/12/03(土) 23:36:45 ]
馬鹿というかガキなんだよな。煽り方も知らないような。

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

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

365 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 00:01:35 ]
>>363
組めます

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

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




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回?

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

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



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

549 名前:デフォルトの名無しさん mailto:sage [2006/04/02(日) 05:03:28 ]
>>547


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

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

551 名前:550 mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/04/02(日) 06:41:56 ]
# IPアドレス→32bit整数
$ip = unpack('N', pack('CCCC', split(/\./, $ip)));
これで2倍くらいの速度になった
キャプチャが大きいんかなぁ

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

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


554 名前:デフォルトの名無しさん mailto:sage [2006/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)


555 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 11:26:39 ]

use Benchmark;
use Socket qw(inet_aton);
my $ip_a = 100.100.100.100;

timethese(undef,
{
unpack_split => sub {
my $ip = unpack('N', pack('CCCC', split(/\./, $ip_a)));
},
unpack_re => sub {
$ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $ip = unpack('N', pack('CCCC', $1, $2, $3, $4));
},
multiple_re => sub {
$ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $ip = $1*256*256*256 + $2*256*256 + $3*256 + $4;
},
shift_re => sub {
$ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $ip = $1 << 24 + $2 << 16 + $3 << 8 + $4;
},
inet_aton => sub {
my $ip = inet_aton($ip_a);
},
}
);


556 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 12:29:42 ]
すまん、どうにも直観と反する結果なのでさらに調べていたらなんのことはない
my $ip_a = 100.100.100.100;

になっていたorz... もちろん正しくは

my $ip_a = '100.100.100.100';

なのでベンチ取り直した。

Benchmark: running inet_aton, multiple_re, shift_re, unpack_re, unpack_split for at least 3 CPU seconds...
inet_aton: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 267949.37/s (n=846720)
multiple_re: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 69144.94/s (n=218498)
shift_re: 4 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 74248.87/s (n=230914)
unpack_re: 3 wallclock secs ( 3.21 usr + 0.00 sys = 3.21 CPU) @ 68071.03/s (n=218508)
unpack_split: 2 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 95474.76/s (n=298836)

まとめ:

inet_atonはやっぱり速いので、自分で書くのはやめよう。


557 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 13:42:14 ]
v文字列以外では
・ inet_atonはpackしたIPアドレス("100.100.100.100"なら"dddd")を返すのに、他は整数(1684300900)を算出している。
・ "+"演算子は"<<"演算子より優先度が高いため($1 << 24)とカッコで括らなければならない。

一応 sub getRandIPString { join '.', int rand 256, int rand 256, int rand 256, int rand 256; } といったものを用意して
全てバイナリ文字列を出力するコードにしてからベンチ取ったけど、inet_atonが常に1位だった。

今更だけど、後で直接比較可能にするための前処理として保存しとけば速度関係無かったね。



558 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 06:59:49 ]
Mac OS XでPerlを使っています。
Macで作成したテキストを処理したいのですが、改行コードがCRになるのでうまく処理できません。
LFでないため、全て1行として認識されてしまいます。

標準入力を常にLFとして読み込んだ後、それに対してマッチや置換を行いたいのです。
以下のように書いてみましたけどダメでした。

while (<>) {
s/\x0D\x0A|\x0D|\x0A/\x0A/g;
if (/aaa/) {
print;
}
}

出力されたデータはLFになりましたが、マッチはうまくいきませんでした。
何かいいやり方はないものでしょうか。

559 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 09:14:57 ]
求めてるのは<>使う前の $/ = "\x0D"; か /aaa/m あたりかも

560 名前:558 mailto:sage [2006/04/19(水) 19:51:43 ]
>559さん

入力時の区切り文字をCRに決めてやればいいんですね。
解決しました。ありがとうございました。

561 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 23:24:22 ]
すいません。行のナンバリングをリクエストしてもよろしいでしょうか。

あいうえお(段落1)
かきくけこ(段落2)
さしすせそ(段落3)

たちつてと(段落4)
なにぬねの(段落5)
はひふへほ(段落6)

という文章があって、これを、

1:あいうえお(段落1)
2:かきくけこ(段落2)
3:さしすせそ(段落3)

1:たちつてと(段落4)
2:なにぬねの(段落5)
3:はひふへほ(段落6)

のように空行をはさんで新たにナンバリングを開始したいのですが方法が思い浮かびません。


562 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 23:59:01 ]
言いたいことが分からんが新たにナンバリングを開始したいところで
ナンバリング用の変数を初期化して空行を出力するだけじゃないのか?

563 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 02:27:54 ]
>>561は、単純にすべての行に通し番号でナンバリングするプログラムは作れるのか?

564 名前:561 mailto:sage [2006/04/20(木) 23:04:01 ]
>563

あっ、はい。

my $i = 0;

while (<STDIN>) {

if (/^./) {
print ++$i;
print ": ";
print;

}

}
ちょっと冗長ですけど。

565 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 00:11:57 ]
うーん、、、自分で作りたい?それとも誰かにサクッと作って欲しい?

566 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 10:46:46 ]
>>564
そこまでかけるなら
else で $i = 0; を書けないか?


567 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 10:55:29 ]
空行が来たらカウントをリセットする、というと、こんな感じ?

$n = 1;
while (<>) {
 $n = 1 if (/^\s*$/
 print "$n: $_";
 $n++;
}




568 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 10:58:13 ]
あ、閉括弧とか忘れた。まあいいや。脳内で修正してくれ。

569 名前:561 mailto:sage [2006/04/21(金) 22:35:44 ]
>566

elseを使っても結果が変わらないんです。
マッチがヘボいんでしょうか。

>567

実行させると入力がぶっとんでしまいました…

>565

いろいろ試してみたのですが、自分の力ではムリっぽいです…
あつかましいとは承知していますが、作っていただくと助かります。

570 名前:561 mailto:sage [2006/04/22(土) 19:48:05 ]
出来てしまいました!

my $i = 0;
while (<STDIN>) {
 if (/^..+/) {
 print ++$i;
 print ": ";
 print;
 } else {
 $i = 0;
 print;
 }
}

else文で「my $i = 0;」にしていたのがまずかったようで、
空行になっても$iが初期化されなかったみたいです。
レス下さったみなさん、ありがとうございました。
おさわがせしました。
私ってPerlの才能ないのかな…

571 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 05:53:25 ]
>>570
完成おめ!
才能がどうかは知らないけど、結局経験じゃないですかね?
俺も本スレで叩かれたりしながら勉強してますw

一応俺が用意してたスクリプト貼っておきます。。。
use strict;
my $c = 1;
open IN, 'filename';
while (<IN>) {
    (/^$/) ? $c = 1 : print $c++ . ':';
    print;
}
close IN;


572 名前:561 mailto:sage [2006/04/23(日) 12:42:55 ]
>571

ありがとうございます。
自分のはだいぶ冗長だと思うので、用意していただいたスクリプトを参考にさせていただきます。
今自分の書いたものを見直してみると、if (/^./)でいいですよね...
恥ずかしい...

573 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 14:49:38 ]
>>570
myはローカル変数の宣言。単なる代入では無いよ。
myを使うと、同名の新たな一時変数を作る事になる。
んで、詳しい条件は忘れたが、ブロック抜ける時とかに消える。

長いコードになると
「この変数名って他で使われて無かったっけ…?」
ってなるけど、my使えばそんな心配が減るワケ。

574 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 18:39:57 ]
>>558

>>560では解決しちゃったみたいだけど、これ俺も知りたい。
コマンドラインから入力されたテキストの改行コードをLFに統一、
という前処理をしてからwhileループ処理をかますってできるのかな?
あんまりセパレータとか変えたくないんで。

575 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 21:25:04 ]
>>574
>セパレータとか変えたくない

なんで?

576 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 22:10:27 ]
>575

セパレータも一文字として認識されてしまわない?
回避する方法があればいいんだけど。

577 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 23:08:11 ]
認識できるから区切れるんだが。
いまいち言いたいことが分からん。



578 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 23:40:26 ]
メタキャラ「.」って改行を除く一文字にマッチするじゃん。
でも「.」もCRにマッチしちゃわね?
LF読み込むときと処理が変わっちゃうからイライラすんだよね。

579 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 00:10:50 ]
自分の都合に合わせてセパレーター変えるなり置換するなりすりゃいいじゃん。

580 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 03:57:29 ]
あーいう変数ってlocal出来ないっけ?

581 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 23:15:36 ]
whileで読み込む前に処理しとくって、
できないってことでおk?

582 名前:デフォルトの名無しさん mailto:sage [2006/04/25(火) 04:35:21 ]
質問は質問スレ行け

583 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:52:12 ]
Win32::GUI::ListView ソートメソッドないじゃん・・・orz

 た・・・す・・・け・・・て・・・・


584 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 22:54:05 ]
りすとびゅーか...
なにもかもがな・・つ・・か・・し・・ぃ・・

585 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 20:37:02 ]
一瞬、不治痛の電子帳票ソフトかと思った

586 名前:デフォルトの名無しさん [2006/07/09(日) 11:10:16 ]
初めまして。

浅知恵で掲示板の改造を試みています。
オートリンク機能付き掲示板に記事修正機能を追加したのですが、
記事修正をするたびに、文中にあるリンク先が
<A href=www.a.b.c target=_blank><A HREF=www.a.b.c target=_blank>
www.a.b.c</A></A>
と、タグが無制限に追加されていきます。

そこでお願いしたいのは、
記事修正時にファイルに保存されているデータ
----------------------------------------------
<A HREF=www.a.b.c target=_blank>
www.a.b.c</A>
----------------------------------------------
を一端
----------------------------------------------
www.a.b.c
----------------------------------------------
というデータに戻すサブルーチンを作成したいのですが、
行き詰まっています。
よろしくお願いします。

オートリンク機能のスクリプトは以下の通りです。
***************************************************************
#オートリンク
sub auto_link {
my($msg) = $_[0];
$msg =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#]+)/$1<A HREF=$2 target=_blank>$2<\/A>/g;
return $msg;
}


587 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 11:15:33 ]
↑ ありゃ、文字がおかしい。

全角にしてありますが、Aタグです。
www.a.b.c の後ろは、</A>



588 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 01:11:44 ]
そういう時は表示時にオートリンクを適用すればいい。
保存時にいじっちゃうと後でいじりにくくなるというのは定説。
ファイル構造上、改行の置換とかは仕方無いと思うけどさ。

589 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 10:01:41 ]
>>586

ようするに、すでに<A>タグ化されている部分を除外すればいいわけだな?

590 名前:デフォルトの名無しさん [2006/07/10(月) 10:03:49 ]
ああ、ごめん。>>586にいての>>588の意見を読んでなかった。
確かに保存時は生データのまま記録し置いて、閲覧時に
http:なんた

591 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 10:06:04 ]
>>590
途中で送信しちゃった。

保存時は生で。閲覧時は「http:なんたら」の条件で抽出→<A>タグ化のほうが効率的だね。

592 名前:586 mailto:sage [2006/07/10(月) 14:07:06 ]
みなさん、ありがとうございました。
発想の転換ですね。
私の堅い頭では思いつきませんでした。

保存時ではなく、表示時にオートリンクを適用でうまくいきました。
ありがとうございました。

593 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 22:59:04 ]
俺は全く解らないので、申し訳ないけど誰かに頼みたいorz
ボタンを押したらカウントが増えるシンプルなシステムを作って欲しいです。

594 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 02:59:10 ]
どこにでもあると思うが…

595 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 16:54:07 ]
>>593

use CGI;
my $cgi=new CGI;
my $n=$cgi->param('n')+1;
print $cgi->header(-charset=>'Shift_JIS'),
$cgi->start_html(-lang=>'ja',-encoding=>'Shift_JIS',-title=>'simple count'),
$cgi->a({href=>"$ENV{'SCRIPT_NAME'}?n=$n"},$n),
$cgi->end_html;


596 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 00:02:04 ]
>>593

<?php
if (! $HTTP_COOKIE_VARS{'Num'}) {
$start=0; $i=1; setcookie("Num",$i,time()+30);
} else {
$i=$HTTP_COOKIE_VARS{'Num'}+1;
setcookie("Num",$i,time()+30);
}
echo $start.$HTTP_COOKIE_VARS{'Num'}."<br>\n";
echo "<form method=POST action=><input type=submit value=count_up></form>\n";
?>


597 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 01:41:37 ]
>>593
<input type="button" value="0" onclick="this.value++">



598 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 02:06:11 ]
どんどん簡易な物になってくな

599 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 20:10:06 ]
つーかスレタイに反してPerlですらなくなってるな
このスレ自体がアレなのは確かだが

600 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 00:49:26 ]
待て待て、Web物とは一言も言ってないぞ?

# CUI
use Term::ReadKey;
binmode STDIN;
ReadMode 3;
print my $count = 0;
print "\r", ++$count while (defined ReadKey 0);
ReadMode 0;

# GUI(Perl/Tk)版
use Tk;
my $count = 0;
my $mw = MainWindow->new();
my $label = $mw->Label(-text => $count)->pack();
$mw->Button(
-text => 'Count up',
-command => sub { $label->configure(-text => ++$count) },
)->pack();
MainLoop;

601 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 12:46:48 ]
Term::ReadKey を入れてないおいらが来ましたよ。

#!/usr/bin/env perl
print my $i = 0 ; $i ++ ;
system "stty -echo" ;
print "¥e[1K" . $i ++ while <STDIN> ;
system "stty echo" ;

このスクリプト ( hoge.pl )、perlcc が通ったのには笑った。@5.6.6
perlcc -o counter hoge.pl

602 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:24:24 ]
なんで笑えるのかわからんが、もっと短くしてみた。
perl -e '`stty cbreak -echo`;print $i++,"\r" while getc'

603 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:49:37 ]
cbreakはサポートしてないものもあるよ

604 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 17:11:49 ]
>>602
いや system 関数ってみるからにコンパイルの時コケそうじゃないですか。

605 名前:デフォルトの名無しさん [2006/08/06(日) 00:00:47 ]
頭が混乱してきた。
ETRADEのポートフォリオのページを取得するスクリプトつくって。

6時間考えたけど、いっぱいいっぱい。だめぽ

606 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 00:29:53 ]
既製品を探すという作業を飛ばしたようだね。

607 名前:デフォルトの名無しさん [2006/08/06(日) 00:52:42 ]
>>605 だけど。
やっとできたよ。

しばらく POSTとGETの仕組みと INPUTタブの仕組みを
忘れてた。





608 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 03:44:01 ]
inputタブだってよ

609 名前:デフォルトの名無しさん [2006/08/08(火) 10:10:47 ]
ディレクトリ内にある.jpgファイルを全て
1.jpg, 2.jpg, 3.jpg, ... というように連番のファイル名に変換するプログラムを
つくって頂けませんか。
そのディレクトリには.jpgファイルしか置いてません。(全部変換する)
もともとのファイル名は、*****.jpg もしくは ******.jpg (*は数字)
という形です。
こういうプログラムを作るのにperlが適しているのかどうかはわからないのですが、
他に作成依頼できそうなスレがみつからなかったので。

お願いします。

610 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 10:16:02 ]
folderの中にある複数の圧縮ファイル(zip, rar)の中のファイルの情報の一覧(text fileでOK)
を作ってくれるscriptがほしいです。

611 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 10:55:06 ]
>>609
perl -e'my $i = 1; foreach(glob("*.jpg")) { rename $_, "$i.jpg"; $i ++;}'
動くかどうかはしらん

612 名前:609 mailto:sage [2006/08/08(火) 11:52:55 ]
>611
できてるぽいです!
ありがとうございます。

613 名前:デフォルトの名無しさん [2006/08/08(火) 16:23:26 ]
アクセスしてきたPCのポートスキャンをするcgi
目的:自分のPCのセキュリティーチェックをしたいので

614 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 18:06:17 ]
嘘付け

615 名前:613 mailto:sage [2006/08/08(火) 18:24:59 ]
最初はIPアドレスを入力して入力されたIPをもつPCのポートスキャンができるようにとおもったのですが、
>>614さんのように邪推される方がいると思ったのでアクセスしてきたPCのポートスキャンということにしました。
さらにいうなら、IDパスワード認証をしてそのチェックを通過した人だけセキュリティーチェックできるようにお願いします。
もっともIDパスワードをさらしておいて他人のPCのポートスキャンができることも懸念されますが・・・・。。

616 名前:デフォルトの名無しさん mailto:sage [2006/08/10(木) 16:45:15 ]
>>610
while (<*>) {
 if ((/\.zip$/i) or (/\.rar$/i)) {
  open(AAA, "unrar l $_ |") || die "err";
  $list = <AAA>;
  close(AAA);
 }
}
こんなもんで、よろしいんじゃないですか?

617 名前:デフォルトの名無しさん [2006/08/24(木) 20:33:41 ]
perl -e '`stty cbreak -echo`;print $i++,"\r" while getc'



618 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 14:53:13 ]
LINUXのCRONで動かしているPerlがあるんだが、自分自身2重起動を阻止したい。
リクエストお願いします。

619 名前:デフォルトの名無しさん [2006/08/30(水) 15:34:33 ]
>>618
例えばlockファイルを使う。perldoc -q lock

use Fcntl qw(:DEFAULT :flock);

sysopen(LCK, "/tmp/lockfile", O_WRONLY|O_CREAT) or die "open: $!\n";
flock(LCK, LOCK_EX|LOCK_NB) or die "flock: $!\n";

sleep 100;

620 名前:デフォルトの名無しさん [2006/08/31(木) 19:03:19 ]
なんじゃそりゃ

621 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:41:40 ]
5分経過したら再認証のページに飛ぶものを作って下さい。
お願いします。。。

622 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:50:03 ]
>>621
仕様がはっきりしなさ過ぎて無理

623 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 22:12:49 ]
>622
タイムアウト処理だけでも無理ですか?

624 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:40:42 ]
同じ学校のやつか?

964 名前:デフォルトの名無しさん 投稿日:2006/09/07(木) 21:36:27
質問です!
ログインして10分経過後、再認証を行なうプログラムについて教えて下さい。
学校の課題なんですがさっぱり分りません。。。


625 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 00:13:21 ]
マルチかよ

626 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 16:15:04 ]
>>623
sleep(300);

627 名前:デフォルトの名無しさん [2006/09/08(金) 19:48:59 ]
>>621

 鯖に「ID=************が何時何分何秒にログインした」ってファイルを
作っておいて、その人がCGIにアクセスするたびに最終ログイン時刻を
チェックする。規定時間をオーバーしていると、ログイン画面に飛ばす。

って感じのやつはダメ?



628 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 05:37:49 ]
そーいや前に、タイムアウトの処理を
HTMLのタグでやってるの見たことある

ブラウザ側で簡単に回避されるっての…w

629 名前:デフォルトの名無しさん [2006/10/22(日) 15:34:50 ]
マルチにマジレス カコワルイ

630 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 11:35:28 ]
質問させてください

「開始」と「終了」の間に入っている文字列をリンクアドレスにするにはどうすればいいですか?

たとえば$STR="開始test.html終了"; とあったとき
出力結果が

<a href=test.html>test.html</a>になるようにしたいんです。


$START="開始";
$END="終了";


631 名前:デフォルトの名無しさん [2006/10/23(月) 12:07:01 ]
2chに書き込むスクリプトってどうやるんですか?

632 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 12:34:24 ]
2ちゃんねる2GETスクリプトの改良おねがいします
pc8.2ch.net/test/read.cgi/tech/1161552012/

633 名前:デフォルトの名無しさん [2006/10/23(月) 12:46:54 ]
Perlでつくってください

634 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 13:30:24 ]
>>630
正規表現で一発やん

635 名前:デフォルトの名無しさん [2006/10/23(月) 14:49:23 ]
>>634
ごめんなさい、わからないんです。
とりあえず、ここまでは出来ました
「開始」と「終了」に挟まれる$1を抽出した後、その$1をURL形式に変えてアドレスにして置き換えていきたいんです。

例えば
$in{'data'}="開始なにか終了hogehogehoge開始てすと終了"だったとしたら
これが

$in{'data'}="<a href=hoge.com/hoge.cgi?keyword=%42%28%39>なにか</a>hogehogehoge<a href=hoge.com/hoge.cgi?keyword=%32%86%26>てすと</a>"

みたいな形式に置き換えたいんです


use URI::Escape;
$START="開始";
$END="終了";
$SEARCHADD="hoge.com/hoge.cgi?keyword=";

while ($in{'data'}=~ m/$START(.*)$END/g) {
$output = $1;
$urikeyoutput = uri_escape($output);
$in{'data'} =~ s/$START$output$END/<a href=$SEARCHADD$urikeyoutput>$output<\/a/g;
}

636 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 16:03:57 ]
>>635
> while ($in{'data'}=~ m/$START(.*)$END/g) {

これを

while ($in{'data'}=~ m/$START(.*?)$END/g) {

ってすりゃいいんじゃないか?
(.* じゃなくて .*? ってことね)


637 名前:デフォルトの名無しさん [2006/10/23(月) 16:23:43 ]
>>636
変えてみましたけど、無理でした
while ($in{'data'}=~ m/$START(.*?)$END/g) { の時点で拾ってきてくれてないみたいです
書き方おかしいですか?



638 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 16:53:05 ]
>>637
while ($in{'data'}=~ m/$START(.*)$END/g) { ... の中で更に
$in{'data'} =~ s/$START$output$END/ ... なんてしてるから
マッチ開始位置がおかしな事になる。下の一文で済む。

$in{'data'} =~ s{\Q$START\E(.*?)\Q$END\E} {
  my $url = $1;
  my $query = uri_escape($url);
  qq|<a href="$SEARCHADD$query">$url</a>|;
}eg;

639 名前:デフォルトの名無しさん [2006/10/23(月) 16:58:47 ]
>>638
ご回答ありがとうございます。
その方法で問題なく出来ましたが

開始、終了のペアが2つ以上でてきた場合エラーが発生します。

$in{'data'} ="開始テスト1終了開始テスト2終了";
だったとき

最初の開始から 最後の終了までを1つだと思っているみたいです

640 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 17:16:50 ]
>>639
大方 (.*?) を (.*) と写し間違えているんだろう。

641 名前:デフォルトの名無しさん [2006/10/23(月) 17:19:31 ]
>>640

>>638さんのものを、そのままコピペして使ってるのですが
>>639に書いた症状が出ます

642 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 18:37:03 ]
infosys.gsid.nagoya-u.ac.jp/~ohna/re/intro2re2.html

643 名前:デフォルトの名無しさん [2006/10/31(火) 00:40:22 ]
データが壊れないカウンタを20行で作ってみてください

644 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 01:27:13 ]
なんのカウンタだよアホ

645 名前:デフォルトの名無しさん [2006/10/31(火) 02:57:14 ]
ロックファイルを作りながら
カウントしていくだけのプログラム

646 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 13:23:42 ]
だから何をカウントするんだよ。
CGIなら板違いだ

647 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 17:57:33 ]
++$count;

完成!




648 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 11:41:54 ]
画像の横幅を習得するにはどうすればいいんですか?

649 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 12:19:20 ]
>>648
search.cpan.org

650 名前:648 mailto:sage [2006/11/03(金) 12:26:30 ]
すみませんが、自己解決しました。

651 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 13:29:13 ]
解答が出たあとに自己解決かw

652 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 19:53:30 ]
>>643
これでいいんか?

open my $fh, ">>count.dat";
print $fh "\n";
close $fh;
print "Content-Type: text/plain\n\n";
print -s "count.dat";

653 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 21:29:16 ]
>>652
壊れないけど取りこぼすな。でも「壊れない」条件は満たしてるからいいのか。
軽いカウンタならutimes使って作るといいよ。inodeしか触らない。

654 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 20:34:43 ]
>>653
utimes?
utimeじゃなくて?

ていうかどちらにしろファイルのタイムスタンプ変更するだけの関数だから
カウンタにはできないのでは?


655 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 02:45:23 ]
>>654
タイムスタンプは time_t 型の数値を保存できる場所でな。

656 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 14:02:06 ]
>>655
あ。なるほど。タイムスタンプを無理矢理カウンタとして使うのか。
たしかにできるけど、強引な方法だな・・・。


657 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 21:11:30 ]
それどうやって排他するん?



658 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 22:21:24 ]
>>657
普通にflockなりなんなりお好きな方法で。

659 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 23:53:28 ]
@CSV = <INCSV>;
$line_amount = @CSV + 1;
$lines = do { local $/; <INTEXT> };
@Aitems = map {(split '\t', $_, 2)[0]} @CSV;
@Bitems = map {(split '\t', $_, 2)[1]} @CSV;
@A = @Aitems;
@B = @Bitems;
chomp (@B);
for ($i = 0; $i < $line_amount; $i++){
$lines =~ s/$A[$i]/$B[$i]/g;
}
print OUT $lines;
-------------
タブ区切りで、検索文字列[TAB]置換文字列
というテキストを作って、それを読み込んで置換するスクリプトなのですが、
一応動作はするものの、置換文字列に $1, $2 など後方参照の変数がそのまま
文字列として出てきてしまいます。これを展開できるようにするには
どうすればいいのでしょうか。

660 名前:デフォルトの名無しさん mailto:sage [2006/11/13(月) 11:16:41 ]
/e

661 名前:デフォルトの名無しさん mailto:sage [2006/11/13(月) 17:33:14 ]
>660
だめでした。
$lines =~ s/$A[$i]/$B[$i]/ge;

置換失敗、($1)という文字列が出ます
s/「(.*?)」/($1)/ge;

こういうのは置換成功(eなしで問題なし)
s/(あ)\1/嗚呼/g;

662 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 16:02:15 ]
/ee

663 名前:リクエスタ [2006/11/16(木) 23:38:52 ]
横一列に並んだ単語を縦一列に直すスクリプトをリクしたいっす


↓ 単語が横一列になっているファイルを(ファイル名は例えば sample1.txt )
globe apple captain delicate baseball e-mail family

↓こんな感じに縦列に並べ変えたい
globe
apple
captain
delicate
baseball
e-mail
family

664 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 23:44:17 ]
エディタで空白を改行に置換したらいいやん

665 名前:663 mailto:sage [2006/11/17(金) 00:00:18 ]
あ、そっかwwww

sed 's/ /\n/g' sample1.txt > sample2.txt
でできましたw

666 名前:デフォルトの名無しさん [2006/11/17(金) 12:04:26 ]
my (%data);
my $num1 = 3;
my $num2 = 4;
my $moji =tetra;

$data{$moji} = [ $num1, $num2 ];

print("%d",$data{$moji});


perl 実行
%dARRAY(0x85a7c28

何かよくわからない結果になってしまったのですが・・・

667 名前:デフォルトの名無しさん mailto:sage [2006/11/17(金) 12:09:58 ]
こっちで聞いても同じだぞ



668 名前:デフォルトの名無しさん [2006/12/06(水) 15:03:15 ]
掲示板(KENT e-pad)を10分毎に監視して
新規の書き込みがあった場合、内容をメールで送るスクリプト作って下さい。


669 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 16:19:01 ]
>>668
じゃあ雛型だけ。あとは getbbs() と sendmail() を作れば完成だ。がんばれ。

#!/usr/bin/perl -w

use strict;

my $olddata;
for (;;) {
 # 掲示板の内容を取得する。
 my $data = getbbs();
 if (defined($olddata) && $data ne $olddata) {
  # メールを送信する。
  sendmail($data);
 }
 $olddata = $data;
 sleep 60 * 10;
}


670 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 16:35:42 ]
ぎゃふん!

671 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 17:34:31 ]
sendmail のサンプル

sub sendmail {
 my $data = shift;
 open(F, '| /usr/lib/sendmail -t >/dev/null 2>&1') or die;
 print F "From: hoge\@fuga.com\n";
 print F "To: moga\@mugu.com\n";
 print F "MIME-Version: 1.0\n";
 print F "Content-Type: text/html\n";
 print F "\n";
 print F $data;
 close(F);
}

但し /usr/lib/sendmail がなければならない。
(つまりこれは主に UNIX 系 OS 向け。Windows なら Cygwin 環境で動くかも)。


672 名前:デフォルトの名無しさん [2006/12/06(水) 18:26:52 ]
>>669>>671
有難う。
getbbs()
も雛形お願いします。

673 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 14:00:49 ]
getbbs のサンプル

use LWP::Simple; # これはプログラムの最初に書く。

sub getbbs {
 my $url = '...' # これは実際のURLにする。
 return get($url);
}

ていうかこんなサブルーチン使わないでそのまま get() やっちゃえばいいかな。

上記のように LWP::Simple を使って串を通したい場合は環境変数の http_proxy
に串のURLをセットしておく ( proxy.hoge.com のポート 8080 の場合は
http_proxy に proxy.hoge.com:8080/ をセットしておくか
perl プログラムの中で $ENV{'http_proxy'} = 'proxy.hoge.com:8080/';
をやっておく)。
LWP::UserAgent を使って自分で色々する場合は $ua->proxy(...) のような
設定方法も使える。


674 名前:デフォルトの名無しさん [2006/12/07(木) 15:38:14 ]
>>673
ありがとうございます。
試してみます。

675 名前:デフォルトの名無しさん [2006/12/08(金) 23:46:45 ]
組織名 人名 番号(英字3つの後に数字7つ)
組織名 人名 番号(英字3つの後に数字7つ)
という風に並んでるファイルから
番号だけを取り出して
07.番号(英字3つの後に数字7つ)
と書き換えたいのですがお願いします

また、自分でもこういう丸投げはやっぱりよくないとは思うのでもし
「そんなのここ見りゃかいてあるから」みたいなサイトがあれば教えてください

676 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 00:06:03 ]
「正規表現」は知ってる?
各行の最後の10文字の前に「07.」を割り込ませる、って考えでどうだ?

677 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 09:25:32 ]
>>666
printfの間違い。
$data{$moji}は配列へのリファレンスになっているんだから、
$data{$moji}[0]なり$data{$moji}[1]なりにしないとそうなる罠。



678 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 21:28:17 ]
use Kakiko::Test;

679 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 19:41:49 ]
>>675
perl -ne 'if(/\s+(\w{3}\d{7})\s*$/){print "07.$1\n"}' hoge.txt


680 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:02:55 ]
FORMで受け取った文字列をCSVファイルから検索して表示させるスクリプト下さい

681 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 09:56:03 ]
grep

682 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 14:24:02 ]
「1からnまでの乱数をn個発生させ、小さい方から並べるプログラム」を作成する。
nの値をさまざまに変えて実行時間を計測せよ。
クイックソートの実行時間が理論値O(n log2 n) となるかどうか検証せよ。

683 名前:デフォルトの名無しさん [2006/12/21(木) 14:29:11 ]
このデータと解析結果、検証の結果をレポートで提出せよ。

684 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 02:32:04 ]
>>681
便乗でスマンがFORMからのデータの受け取りを
cgi-lib.plに頼らない為のヒントを教えてほしい。

685 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 03:05:30 ]
getならurl末尾、postなら標準入力
意地悪じゃなく調べればいくらでもあると思うんだが…

686 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 10:23:07 ]
CGI.pm使えよ

687 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 10:58:44 ]
>>684
CGI, 環境変数, あたりでぐぐれ



688 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 22:53:42 ]
>>685-687
ありがとね。
参考書に「難しいからcgi-lib.pl使え」ってあったから
勝手にその事については載ってないと思った。
まぁ習い始めたばかりだけど、調べたりなかったのは反省してる orz

689 名前:デフォルトの名無しさん [2007/01/11(木) 00:57:44 ]
1分に一度指定板のスレッド一覧を取得して更新があれば差分だけダウンロードして元のファイルに付け足して保存する。
ってのをPerlで作ってくれ。
いや、作ろうとしたんだよ。でも2chのページにアクセスすると403がでてな。

690 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:27:11 ]
>>689
オイスター作戦でぐぐれ。

691 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:41:41 ]
つまりMonazilla MLに参加してるツールに成りすませばいいってこと?
それとも不可能ってことかな?

692 名前:デフォルトの名無しさん [2007/01/11(木) 02:08:36 ]
リクです。
youtube内にアップされている動画のタグ情報を引っ張って来れるプログラムをお願いします。

#!/usr/bin/perl -w

use strict;
use LWP::UserAgent;

my $url = shift @ARGV;

my $ua = LWP::UserAgent->new();
$ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1);');


my @tags = &getTag($url);
print join(",", @tags), "\n";

sub getTag {
    my ($url) = @_;
    my @tags;
    my $content = $ua->get($url)->content;
    while($content =~ /href=\"\/results\?search_query=(.+?)\"/g){
push(@tags, $1);
    }
    return(@tags);
}

ここまで行ってるのですが、入力する動画URLの取得を自動化したいんです。

693 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 10:09:16 ]
http:// から始まるIPとホストが書いてあるアドレスを抽出したい場合の
IPとホストの表現を教えてください。



694 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 10:52:03 ]
ttp://www.din.or.jp/~ohzaki/perl.htm#httpURL
あるいは
use Regexp::Common; して $RE{URI}{HTTP}

695 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:08:25 ]
>>694
ありがとうございます

696 名前:デフォルトの名無しさん [2007/01/20(土) 23:57:02 ]
HP等の日記にパスワードがかかっていた場合、
そのパスワードを解析してくれるソフト作ってください。。。

697 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 00:17:41 ]
不正アクセス禁止法違反。



698 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 03:56:05 ]
すべてのパスワードを解ける解法があったとしても
すべてのパスワードを解けるプログラムやスクリプトは絶対にない

699 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 06:00:58 ]
>>698
時間を掛ければ何でも解けるのでは?
但し何万年とか掛かるかも知れないが。


700 名前:デフォルトの名無しさん [2007/01/25(木) 01:00:43 ]
>>1

微分や積分するプログラムってperlで作れる?

701 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 01:51:10 ]
数値微分/数値積分なら公式は山ほどあるだろ。

マセマティカ並の数式処理能力が欲しければ数学科大学院へでも池

702 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 21:56:03 ]
Win NTでデフォルトのプリンター名を取得したいのですが。

703 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:51:22 ]
重機ネット上にあるDBから
氏名と電話番号を一覧表示するスクリプトを作ってください


704 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 16:19:10 ]
>>703
まず重機ネットのDBから氏名、電話番号の入ったデータをCSV形式で貰ってきます。
その後次のスクリプトを動かしてください。

#!/usr/bin/perl -w

use strict;

system('cat ファイル名');

以上です。


705 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 01:14:58 ]
重機ネット上にあるDBに対してCRUDするスクリプトを作ってください。

706 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:37:51 ]
一休さんかよ

707 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:57:58 ]
とんち比べですな。




708 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:54:31 ]
数字を月の名前に変換するコードができました!!

@Month = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

sub mmm {
return $Month[(shift)-1];
}

@Month を切り替えればいろいろな名前に変換できると思います。
@Month = ("JAN.", "FEB.", ……
@Month = ("睦月", "如月", ……


709 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:04:47 ]
釣れまsk?

710 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 16:47:33 ]
どなたか、ナンプレを解くスクリプト作って下さいませんか?

711 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:12:12 ]
sudoku solver でググれ

712 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:52:11 ]
>>708
perl -MDate::Manip -e 'print UnixDate(ParseDate("today"),"%B"),"\n";'

713 名前:708 mailto:sage [2007/04/27(金) 20:32:47 ]
利点としては:
・ハッシュを使うコードよりも軽量・高速。
・「01」とか、ゼロ付きの数字にも対応。

欠点としては:
・逆引きができない。

というわけで、"JAN.."とか"睦月"から数字への変換と、数字から名前への変換、
両方ともできる粋なコードをおながいします。


714 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 07:48:33 ]
質問箱に書き込んだのですが、スレタイからするとこちらの方がよいかもと思い、書き込ませていただきます。
マルチポストをお許し下さい。

perlはまるっきりの初心者です。どなたかお知恵を貸して下さい。
2つのファイル a.txt と b.txt を比較して、条件にあった行を抽出、出力するスクリプトを作りたいのです。

具体的には、
[a.txt]
ID, field1, field2
1, 5.8, 7.3
2, 6.3, 8.2
3, 3.2, 4.1
4, 4.8, 4.0
5, 8.3, 10.2

[b.txt]
ID, field1, field2
1, 6.8, 7.7
3, 4.3, 5.5
4, 5.9, 4.9

というファイルがあったとき、b.txt のIDに数値が存在する行だけを a.txt から抽出して a2.txt として保存したいのです。

[a2.txt]
ID, field1, field2
1, 5.8, 7.3
3, 3.2, 4.1
4, 4.8, 4.0

と言った具合にです。よろしくお願いします。

715 名前:714 mailto:sage [2007/05/03(木) 08:04:26 ]
自己レスです。
質問箱の方で回答を頂きました。マルチポスト失礼しました。
あ、でも他のやり方もあるぞ、というのがあったら教えて下さい。勉強の題材にさせていただきます。

#!/usr/bin/perl
use strict;
use warnings;
open my $a, '<', 'a.txt' or die;
open my $b, '<', 'b.txt' or die;
my %ids = map { $_ => 1 } map { (split /,/)[0] } <$b>;
while (<$a>) {
my $id = (split /,/)[0];
print if $ids{$id};
}

716 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 04:45:07 ]
>>715
$aと$bはmyの対象外の特殊な変数だからサンプルコードだとしても変数として使うのは止めたほうが良い。

717 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:34:27 ]

maildrop によって転送されたメールが画像添付ファイルだった場合に、添付画像だけを除去してくれる perl/php スクリプト

...ってスグに書けますスか?



718 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 02:18:19 ]
はい。

719 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:45:44 ]
>>718
くれくれで申し訳ないのですが、どうか作っては下さいませんでしょうか...?

720 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:10:30 ]
>>719
どのくらい払ってくれる?

721 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 17:30:47 ]
>>720
相場はいかほど?


722 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 19:07:26 ]
とりあえず工数の見積もりに1万5千円ほどいただきます。

723 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:51:36 ]
>>722
なんと...見積もりだけでそんなにかかるとわ。
もう少し安くならないの?

724 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 16:06:52 ]
今なら、なんと、お見積もりが、ご奉仕価格の 1 万 4999 円!

725 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:14:49 ]
このスレ、突然廃れたんだな。直前まで賑わってたみたいだが、自作自演でもやってたか?

726 名前:もつ ◆hS9D2mmxqU mailto:sage [2007/12/25(火) 11:20:24 ]
保守?

727 名前:デフォルトの名無しさん [2008/01/10(木) 02:10:56 ]




728 名前:デフォルトの名無しさん [2008/01/10(木) 10:30:50 ]
Amazonのマーケットプレイス画面をgetしたいのですが、
www.amazon.co.jp/gp/seller-account/management/your-account.html
にPerlでアクセスすることが出来ません。
認証とかが必要なのでしょうか・・・・・・・。

729 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 18:13:20 ]
そりゃあ、自分のアカウントデータのやりとりは必要だろう

730 名前:anonymous mailto:sage [2008/01/26(土) 14:13:12 ]
2chの特定のスレURLを任意で指定し、
すべての投稿から、「すでに投稿された文面が再度登場していたら、
その数だけレス番付きで抽出する」
というものはできないでしょうか。

要は何がやりたいのかと言うと、
「スレッドがコピペ投稿だらけ」になっており、
レス削除要請を行いたいのです。
ただ、そのコピペの数が尋常じゃないので抽出が困難なのです。
「文面の95%が一致していたらコピペとみなす」機構が嬉しいです。

731 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:37:04 ]
95%で、無関係の文章が巻き込まれたら嫌だなぁ。

って話はとりあえず置いといて、検索してたら
String::Trigram とかいうモジュールがヒットした。
この辺使えば作れるのかな?

あとはスパムフィルタ関連の資料か。
URLの有無で判定するタイプもあるらしいから
そういうタイプのフィルタは参考にはならないかも知れないけど。

732 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:04:23 ]
コピペ連投だと行頭の空白とかが混じることがあるから、
文字の先頭から末尾までが一致していたらアウト、という判定でいいんじゃね。
そういうの欲しいならRubyスレで頼むほうが早いかもよ。


733 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:12:36 ]
指定したファイル以外を消去する作って!

734 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 02:21:14 ]
>733
それだけじゃ何をどうすれば良いのか分からんな。
「カレントディレクトリ内にある指定したファイル以外を消去」だとすれば

perl -e"for (glob '*'){$_ eq $ARGV[0] or unlink $_}" ファイル名

で出来るが、サブディレクトリは多分掘らない。

735 名前:733 mailto:sage [2008/01/30(水) 05:19:52 ]
カレントディレクトリだけでOKです。
ありがとう 
今はこんな感じで改造しています。
いろいろしないといけないんですが
仮に指定したファイルがカレントディレクトリになかった場合とか
消去を確認するための方法とか ファイルを複数指定したりとか

perl のコマンドに詳しい本って
なにかありますかねー(ネットでも調べていますが)

#!/usr/bin/perl
print "指定ファイルは?";
$file = <STDIN>;
for (glob '*'){$_ eq $ARGV[0] or unlink $_} $file

736 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:52:04 ]
perl の関数一覧なら perlfunc ですぐ見れる

737 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:56:58 ]
>735
つーかマテ、その改造コード間違ってるんじゃねーか。
$file が全く関係ないところに書かれてる。

そのコードじゃカレントディレクトリ全部削除されるぞ。
$file = <STDIN>; と書くんだったら、
for (glob '*') { $_ eq $file or unlink $_ } にしなきゃ。

$ARGV[0] はコマンドラインからの引数な。
>734 はファイル名を引数として渡してる。



738 名前:733 mailto:sage [2008/01/30(水) 08:29:20 ]
>>737
あー ミスでしたか
コマンドとか引数とか覚えないといけないところが
まだまだありますな
>>736
perlの関数 ありがとう  
 

739 名前:デフォルトの名無しさん [2008/03/25(火) 20:19:49 ]
任意のフォルダに入ってるexeファイルを起動するスクリプトがほしいです。

740 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:11:44 ]
>739
その「任意のフォルダ」はコマンド引数で指定すれば良いのか?
「任意のフォルダ」に.exeファイルが複数入ってる場合はどうすれば良いんだ?

741 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:23:34 ]
ActivePerlで
(擬似)子プロセスにてある条件を満たすと(sleep5とかでもなんでもいい)、親プロセスのTKウィジェットに反映する(リストボックスに一行追加とか)するスクリプトください

742 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:54:41 ]
ttp://www.linkrr.com/
みたいな複数のURLアドレスを一気に開くことのできるスクリプトが欲しいです

743 名前:デフォルトの名無しさん [2008/10/11(土) 18:59:15 ]
過疎ってるなー
DBD::CSV使って、
execsql.pl -noheader "SELECT T1.ROW1, T2.ROW3 FROM temp1.txt T1 temp2.txt T2
WHERE T1.ROW1 = T2.ROW2 AND T1.ROW2 = 'abc';" > result.txt
みたいに使えるスクリプト誰か作って。

744 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 19:05:12 ]
間違えた
col1 col2 か
SQL初心者な物で

745 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:08:41 ]
今日も perl でエロ画像収集!
明日も perl でエロ画像収集!
エロ画像収集言語 perl 万歳!

746 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 13:49:53 ]
>>743だけど、DBD::CSVにバグがあった
やってらんねー
結局できたけど

747 名前:デフォルトの名無しさん [2008/10/26(日) 08:58:18 ]
ここでperlをPHPに変換とかしてくれる?



748 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:55:13 ]
ばっちこい!

749 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 13:08:10 ]
600行くらいあるんだけど・・・

750 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:31:15 ]
情報後出しするやつは面倒だからお断りします

751 名前:デフォルトの名無しさん [2008/10/29(水) 19:22:48 ]
偶数行と奇数行を入れ替えるスクリプトをお願いします。

出力例)
$cat test.dat







スクリプト実行後
$cat test.dat








752 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:16:39 ]
perl -pe 'print scalar <>'

753 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 07:17:55 ]
my $old ;
while (<>){
if ( $.%2 != 0 ){ $old = $_ ; next ; }
print $_, $old ;
undef $old ;
}
if ( defined $old ){ print "odd\n", $old ; }


754 名前:デフォルトの名無しさん [2008/11/14(金) 20:58:20 ]
list.txtファイルに検索をかけたいキーワードを記入し
そのリストのキーワードを元にgrepみたいな動作をするスクリプト

listファイルの中身
$cat list.txt
aho
baka
test

検索をかけたいファイル(test.txt)の中身
$cat test.txt
aho 1
baka 2
manuke 3
test 4

実行結果
$./grep.pl
aho 1
baka 2
test 4

よろしくお願いします。


755 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:24:33 ]
#!/usr/bin/perl
sub slurp {
    local ($/, @ARGV) = (wantarray ? $/ : undef, @_);
    return <ARGV>;
}
my $keyword_file = "list.txt";
my $target_file = "test.txt";
my @keywords = slurp($keyword_file);
my $regex = join "|", map { chomp; "\Q$_\E" } @keywords;
$regex = qr/$regex/;
open my $fh, "<", $target_file;
for my $line (<$fh>) {
    print $line if $line =~ $regex;
}
close $fh;

756 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:00:26 ]
>>755 クールで惚れた

757 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 08:37:43 ]
>>755
ありがとうございました!



758 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 09:13:35 ]
朝っぱらからコードゴルフ
% perl -lne ' print if $t{ ( split )[0] } ++' list.txt test.txt
ま、区切り文字が全角スペースだと動かんのだがね。全角スペースに拘るなら
% perl -lne ' print if $t{ (/^(\w+)/)[0] } ++' list.txt test.txt


759 名前:デフォルトの名無しさん [2008/11/16(日) 01:29:32 ]
dmain.cpp
Note: including file: d:/projects/game/include\common.h
Note: including file: d:/projects/game/include\product.h
Note: including file: d:/projects/etc/psdk/include\WindowsX.h
Note: including file: d:/projects/etc/psdk/include\windows.h

こういうファイルを

dmain.obj: \
/cygdrive/d/projects/game/include/common.h \
/cygdrive/d/projects/game/include/product.h \
/cygdrive/d/projects/etc/psdk/include/WindowsX.h \
/cygdrive/d/projects/etc/psdk/include/windows.h \
dmain.cpp

こんな風にするスクリプトってどうやるの?

760 名前:デフォルトの名無しさん [2008/11/16(日) 14:36:30 ]
759は汎用性が必要だから、ファイル名とかドライブレターとかも関係なく動かせるのをお願いします


761 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:45:05 ]
マルチしといて、動かなかったら注文付けんの?
win の人だったらワンライナーはシングルクォートの代りにダブルクォートにすれば良いよ。

762 名前:デフォルトの名無しさん [2008/11/29(土) 21:11:06 ]
入力フォームに入力して送信を押したら
hogehoge.cgi?入力された言葉

というように表示してくれるスクリプトを作ってほしいのですが
どなたか作ってもらえませんか?

763 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 13:11:03 ]
print "Content-type: text/html nn";
print "hogehoge.cgi?入力された言葉";

764 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 23:28:02 ]
> Perlでリクに答えるスクリプトを作るスレ
リクといえば、大石 りく。赤穂藩家老大石内蔵助良雄の妻。
そろそろ討ち入りの時期です。
Perlでリクにどうやって応えられるのか、スレが立って足掛け4年。
そろそろ、リクを喜ばしてみれ。

765 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 02:36:05 ]
>>764
猛烈に面白くない

766 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 19:00:24 ]
椎名りくは引退したの?

767 名前:デフォルトの名無しさん [2008/12/14(日) 00:12:00 ]
ほすほす



768 名前:デフォルトの名無しさん [2009/01/09(金) 01:04:58 ]
保守がてら

いつまでたっても彼女ができないのですが、
バレンタインデーまでに(3次元の)彼女ができるスクリプトを作ってもらえませんか

769 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 01:18:29 ]
3次元とか言ってる時点でお前には彼女なんて出来ないw

770 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 19:50:17 ]
>>768
バカだな。バレンタインデーまでにじゃなくてさ
バレンタインデー当日にチョコと一緒に告白される方が絶対いいだろ

771 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:17:26 ]
>>768
じゃあそういう感じのスクリプトをお願いします!
できれば、彼女ができる日付を選べる感じで

772 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 17:40:36 ]
>>771
バレンタインデーと言っておいて日付を選べる感じとはいかこれに

773 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:46:54 ]
彼女ができる日が可変、
チョコがもらえるのは2月14日で固定

774 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:48:19 ]
備考:
俺が事前に彼女を作りたいのは、
「気合入れて作るから楽しみにしててね」といわれたいからだ

775 名前:デフォルトの名無しさん [2009/01/21(水) 13:09:37 ]
1つのフォームに改行を使って複数の単語を書き、それを受け渡して単語毎に並べるようなのって可能でしょうか?
$word[$_]のようなのでそれぞれの単語を分けたいのですがなかなか出来ません。
ご教授頂けますと有り難いです。

以下のような感じです。

┌──────┐
│あいうえお │
│かきくけこ │(←textarea)
│さしすせそ │
└──────┘

 ↓受け渡し↓

あなたの記入した単語は
1つ目[あいうえお]
2つ目[かきくけこ]
3つ目[さしすせそ]
の3つです。

のような感じです。

どなたか宜しくお願い致します。

776 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:18:17 ]
>>775
改行でsplitしたら?改行コードに気を付けないといけないけど、それで問題ないと思う。

777 名前:デフォルトの名無しさん [2009/01/21(水) 13:51:07 ]
>>776
ありがとうございます。
調べてみます。



778 名前:デフォルトの名無しさん [2009/01/21(水) 20:39:36 ]
>>776
すみません、やっぱりもう少し詳しくお願い出来ませんでしょうか?

779 名前:775 [2009/01/21(水) 22:18:12 ]
現在このような感じです。

#変数[$word]を受け渡し
@text = split(/\n/, $word);

これを表示させたいのですが、どの様にしたら改行毎に一つずつ表示出来るのでしょうか?
そもそも上ので出来るのでしょうか?

すみませんが宜しくお願い致します。

780 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:45:59 ]
textarea っていうのは、html の textarea のことか?
だったら html の textarea の使い方を調べなさいよ。
html すら知らないで perl でwebプログラミングなんて無謀すぎる。

781 名前:775 [2009/01/22(木) 00:32:14 ]
textareaはわかります。

ですが、@textの改行された分だけ(例えば3回改行されていた場合)並べて表示させる方法がわかりません。

例えば
あいうえお
かきくけこ
さしすせそ
を入力したとしてそれを一つずつ表示させるためにはどうしたら良いのでしょうか?

1行目
<textarea>あいうえお</textarea>
2行目
<textarea>かきくけこ</textarea>
3行目
<textarea>さしすせそ</textarea>

のように一つずつ分けて、書かれた行数分だけループさせて書きたいのですが、教えていただけないでしょうか?
説明不足で申し訳御座いませんが、宜しくお願い致します。

782 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:34:45 ]
for 文か foreach 文をつかえ。

for ($i = 0; $i < $#text; $i++) {
  print "<textarea>$text[$i]</textarea>";
}

foreach $tt (@text) {
  print "<textarea>$tt</textarea>";
}

まず www.tohoho-web.com/wwwperl2.htm ここでも読んで
perl で使える命令を全部、頭に叩き込んでおけよ。

783 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:37:56 ]
おっと...

誤: for ($i = 0; $i < $#text; $i++) ・・・
正: for ($i = 0; $i <= $#text; $i++) ・・・


784 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 17:02:14 ]
>>781
初めに思ってたのと何か違う質問になってるな
<textarea
ああいうえお
かきくけこ
さしすせそ</textarea>
これを1行ずつ表示させたいのではなくて?

use CGI;
my $q = CGI->new;
print $q->header( -type => "text/html");
my $body = $q->param( 'body' );
$body =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
my $li;
for my $word (split "\n", $body) {
  $li .= "<li>$word</li>";
}
print <<"HTML"
<form method="post" action="">
<textarea name="body">
a</textarea>
<input type="submit" />

$li</form>
HTML

785 名前:775 [2009/01/22(木) 18:05:17 ]
>>782-783
ありがとうございます。
URL先と書いていただいた内容を参考にさせていただき、勉強致します。
>>784
ありがとうございます。
自分でも書いていて変だということに今気づきました。
簡単に纏めると、
@フォームに文章を書いてもらい、受け渡す
Aそれを受け取り、改行毎に一つずつ変数を持たせて並べる
みたいな感じです。
今も書いていて意味がわかりずらいです。
本当にすみませんでした。

786 名前:775 [2009/01/22(木) 23:39:14 ]
どうしても出来ませんでした…
どうやっても500エラーから逃れられません…

>>782-783様や>>784様のを組み込もうと考えていたのですが、何か根本的に私のは間違っていたみたいです。

申し訳御座いませんが、出来れば一通りのサンプルのようなものを作成していただけないでしょうか?

仕様は何度か書かせていただきましたが、
@test.cgi(仮)にアクセスするとフォーム表示
Aフォームに
[あいうえお]
[かきくけこ]
[さしすせそ]
等を複数行記入してsubmitを押す
Bsubmitを押すと
◆1行目
あいうえお です。
◆2行目
かきくけこ です。
◆3行目
さしすせそ です。
のように表示される。

このようなのをお願いしたいのですが、やはり難しいでしょうか?

どなたか何卒宜しくお願い致します。

787 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:09:16 ]
>>786
500エラーのエラー内容ください。



788 名前:775 [2009/01/23(金) 15:27:16 ]
@textらへんでエラーが出てるようですが、
明らかに自分が書いた部分が掛かっていると思われますので、
修正というよりは1から作り直したいのですが、お手伝いしていただけますでしょうか?

789 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:28:54 ]
>>788
エラーログが見れない環境?
>>784コピペするとどうなる?

790 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:42:16 ]
すでに >>784 で答えが出てるじゃないか。
何が不満なのか?
スクリプトをホームページへ設置するやりかたまで
手取り足取り教えろとでも言うのか?

791 名前:775 [2009/01/23(金) 18:07:42 ]
>>789
すみません、エラーログは見れません。
>>784をコピペして使うと500が出ます。

792 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 18:31:21 ]
じゃ、「http 500」でググれ

793 名前:775 [2009/01/23(金) 21:07:22 ]
フリーのPerlチェッカーでチェックしました。

Perlのエラー出力
Unrecognized character \241 at tmp.pl line 8.


ソース
0001: use CGI;
0002: my $q = CGI->new;
0003: print $q->header( -type => "text/html");
0004: my $body = $q->param( 'body' );
0005: $body =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
0006: my $li;
0007: for my $word (split "\n", $body) {
0008:   $li .= "<li>$word</li>";
0009: }
0010: print <<"HTML"
0011: <form method="post" action="">
0012: <textarea name="body">
0013: a</textarea>
0014: <input type="submit" />
0015: $li</form>
0016: HTML

8行目の何が問題なのでしょうか?

794 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:43:07 ]
まさか、インデント用の全角スペースをそのままコピペしてた、
というオチではないだろうな。

795 名前:775 [2009/01/23(金) 22:59:08 ]
いえ、削除致しました。

796 名前:775 [2009/01/23(金) 23:04:46 ]
print <<"HTML"
でエラーが出ました。

797 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:05:34 ]
Unrecognized character \241 at tmp.pl line 8. って出てるじゃないか。読めないの?



798 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:08:32 ]
>>796
これだろ?
Can't find string terminator "HTML" anywhere before EOF at m.pl line 10.

799 名前:775 [2009/01/24(土) 00:25:31 ]
>>798
はいそれです。

800 名前:デフォルトの名無しさん [2009/01/24(土) 05:21:38 ]
最後に改行を入れてないためのエラーか。
というか、>>793は全角スペースのエラーだよね。>>794は言ってることあってたと思うんだけど会話になってないな。

801 名前:775 [2009/01/24(土) 06:00:43 ]
>>800
確かにそうでした。
全角削除しても500出てたので勘違いしていました。すみませんでした。

最後に改行を入れた所、チェッカーでのエラーは無くなりましたが、未だにアクセスすると500になります。
何か原因などあるのでしょうか?

802 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 08:04:02 ]
シェバング行がねーよwwwアホスwww

ここまで書かないとだめか?

803 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 08:37:46 ]
これはひどい。

とにかく、ひどい

804 名前:775 [2009/01/24(土) 10:24:36 ]
すみません、理解出来ませんでしたので御説明いただけると有り難いです。

805 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:03:48 ]
シェルやCGIなどのインターフェイスを介してスクリプトを実行させる際に、
スクリプトの一行目に、どのプログラムで解釈させるのかを書いておく。
その行をシェバング(sharp bang/shell bang)行と呼ぶ。
その行が欠落している。

詳しくは、お使いのサーバの管理者にお尋ねください。

806 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:40:03 ]
コメニケーション能力不足

807 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:40:40 ]
会話のキャッチボールができていない



808 名前:デフォルトの名無しさん [2009/01/24(土) 12:19:41 ]
ここまでくるとスレタイ通り全部作った方がいいのかな?不毛なやりとりだからもう下のやつコピーして終了にすればいいよ
ファイル名はtext.cgi。実行権限を付ける。
=====ここからコピー=====
#!/usr/bin/perl -T

use strict;;
use warnings;

use CGI;

my $q = CGI->new;
print $q->header( -type => "text/html");
my $body = $q->param( 'body' );
$body =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
my $li;
for my $word (split "\n", $body) {
$li .= "<li>$word</li>";
}
print <<"HTML"
<form method="post" action="">
<textarea name="body">
</textarea>
<input type="submit" />

$li</form>
HTML

__END__
=====ここまでコピー=====

809 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:26:39 ]
>>806-807
つーか、クレクレだしな。

810 名前:775 [2009/01/24(土) 12:31:09 ]
>>805
説明ありがとうございます。
そのような事すら知りませんでした。
勉強になります。
ありがとうございました。
>>806>>807
申し訳御座いませんでした。
リアルで話し下手なのがこのような場でも御迷惑をおかけしたことを大変恥じております。
これからはperl以前にそのような事にも気をつけたいと思います。
本当に申し訳御座いませんでした。
>>808
最後までご丁寧にありがとうございます。
コピーして使わせていただきます。
本当にありがとうございました。

このスレに来るのはこれで最後にします。
御迷惑ばかりおかけして本当に申し訳御座いませんでした。

811 名前:デフォルトの名無しさん [2009/01/24(土) 12:46:06 ]
結局改行の話以前のやり取りになったなw

812 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 14:23:19 ]
バレンタインというものを人々の記憶から消し去るスクリプトを作ってください

813 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 15:34:59 ]
>>812を葬れるスクリプトお願いします

814 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 15:56:54 ]
>>813の呪いを消し去るスクリプトを作ってください

815 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:22:02 ]
$str = "人々の記憶";
$str =~ s/バレンタインというもの//g;

816 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 02:52:28 ]
なんというシンプルさ

817 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:39:23 ]
>>813って殺人依頼じゃね?



818 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:24:51 ]
アゲ

ナイ

819 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:01:09 ]
>>817

うむ、だが不能犯だな。

820 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:37:25 ]
無能犯


821 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:40:10 ]
まあ、ギリギリアウトだな

822 名前:デフォルトの名無しさん [2009/02/04(水) 22:36:00 ]
・スクリプト
マイリンク
・用途
リンクスクリプトで個人個人が好きなサイトをマイリンクに登録し、登録すると登録したサイトをマイリンクで確認出来る
・仕様
@個体識別情報(携帯端末は個体識別番号、パソコンはIPアドレス)で判断し、それぞれの端末毎にマイリンクを表示させる
Aマイリンクページでマイリンクしたサイトの削除が可能(個人個人で)
B追加はリンク表示の横の[追加]リンクを押すことで追加
Cマイリンクページでのマイリンクの表示数は10件程度で、超えた場合は次のページに表示

こんな感じのをお願い出来ませんでしょうか?
使っているリンク集スクリプトはKENT WEBさんのコスモナビです。

どなたか宜しくお願いします。

823 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:00 ]
既存のSBMの何が不満なんだ

824 名前:822 [2009/02/07(土) 11:32:30 ]
>>823
自分が今サーバーに設置して使っているリンク集に、ユーザーが使えるマイリンク機能を追加したいのです。
3000サイトくらい登録しているので、利用者からマイリンク的なものを使えるようにしてくれと要望がありましたので此処にお願いに参りました。

822に追加でマイリンクページでカテゴリ分け(カテゴリ作成、編集、削除)出来たら最高です。

どなたか何卒、宜しくお願い致します。

825 名前:デフォルトの名無しさん [2009/02/08(日) 17:38:53 ]
お願いしますage

826 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 17:48:33 ]
DOSのバッチをPerlに書き換えてくれたりする?

827 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:10:37 ]
そんなの簡単。system 関数使えばいいじゃん。



828 名前:デフォルトの名無しさん [2009/02/13(金) 19:51:28 ]
1,2,3の数字を組み合わせて25桁の数字をだーーっと表示するスクリプトを何卒お願いします。

829 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:43:55 ]
sub f {
my ($s, $d) = @_;
if ($d == 25) {
print $s, "\n";
}
else {
f($s.1, $d+1);
f($s.2, $d+1);
f($s.3, $d+1);
}
}

f('', 0);

830 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:04:58 ]
>>829
ありがとうありがとうありがとう!

831 名前:デフォルトの名無しさん [2009/02/15(日) 00:43:27 ]
現在そのスクリプトにアクセスしている人数を表示出来るスクリプトお願いします。

よくある[○人オンライン中]的なやつです。
時間は60秒くらいまでをオンライン中扱いにして、携帯電話も正確にカウントされるようにお願いします!

832 名前:デフォルトの名無しさん [2009/02/15(日) 03:51:35 ]
#mes = "自分以外誰もアクセスしてなくて悲しい思いすることになるからやめとけ";


833 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 06:10:14 ]
www

834 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 06:52:16 ]
訪問者多いから書いてんだろ多分

ちなみに俺のサイトなんて月10人くるかわからない程だぜ

835 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 07:18:58 ]
しかもそれが検索エンジンのボットだったりするんだな

836 名前:デフォルトの名無しさん [2009/02/16(月) 18:36:46 ]
切実に>>822をお願いします。
リンクの保存はリンクIDで行うようにしていただけると助かります。

837 名前:デフォルトの名無しさん [2009/02/17(火) 16:46:43 ]
〉〉GBE
この中にあると思うから好きなのを選べ
www.google.co.jp/search?hl=ja&q=%E3%81%91%E3%82%93%E3%81%A8%E3%81%86%E3%81%87%E3%81%B6&lr=



838 名前:デフォルトの名無しさん [2009/02/17(火) 17:12:31 ]
>>837
残念ながらありませんでした。

839 名前:831 [2009/02/22(日) 15:39:29 ]
お願いします

840 名前:デフォルトの名無しさん [2009/02/25(水) 23:47:12 ]
あげ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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