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

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

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


233 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:16:49 ]
>>225
複数行に跨る宣言が拾えないのでは。

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

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


235 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:43:51 ]
ねー、みんなー、DirHandleとかFileHandleとかFile::statとかTime::localtimeとか使おうよー……。

236 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:48:27 ]
>>235
TMTOWTDI

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



238 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:52:27 ]
>>234
> $file{$mtime} = $f;# 更新から経過秒数

はあ?

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

はあ?



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

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




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


241 名前:234 mailto:sage [2005/06/04(土) 21:08:23 ]
こうかな。というかバカにするのは簡単だけど違ってたら訂正しておくれよ。

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


242 名前:220 mailto:sage [2005/06/04(土) 21:09:44 ]
>>230
ありがとうございます!!
とても救われました。

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

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

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

closedir $dh;

245 名前:244 [2005/06/04(土) 21:53:34 ]
grep最初のマッチ不要だったような orz

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

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

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

248 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 15:13:51 ]
普通、チラシの裏だよなぁ

249 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 15:30:19 ]
最近両面印刷が多くてなぁ。



250 名前:デフォルトの名無しさん [2005/06/05(日) 17:10:03 ]
ツルツルで書きにくい

251 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 01:58:09 ]
消しゴムで消しにくい

252 名前:デフォルトの名無しさん [2005/06/28(火) 15:17:43 ]
hosyu

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

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

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

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

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

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

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

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

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



258 名前:デフォルトの名無しさん mailto:sage [2005/07/24(日) 15:43:06 ]
>>257
( ゚Д゚)ポカーン

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



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


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

262 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 22:26:28 ]
mp3プレーヤーが1円^^
news19.2ch.net/test/read.cgi/news/1126704124/

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

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

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

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


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



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

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



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

266 名前:デフォルトの名無しさん [2005/10/09(日) 12:27:47 ]
リク。

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

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

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

$file = <STDIN>;
chomp $file;

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

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

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

268 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 16:05:07 ]
しかもそれマトモに動かんわ・・無視してごめん

269 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 16:41:22 ]
物凄い勢いで修正

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

$file = <STDIN>;
chomp $file;

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

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



270 名前:266 mailto:sage [2005/10/09(日) 17:14:55 ]
>>269
ありがとうございます。完璧です。

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

271 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 21:35:16 ]
>>263

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

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

272 名前:271 mailto:sage [2005/10/09(日) 21:38:21 ]
これが…
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,ss;

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


273 名前:271 mailto:sage [2005/10/09(日) 22:27:01 ]
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
 oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,
 ss;

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

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

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


274 名前:271 mailto:sage [2005/10/10(月) 08:57:36 ]
#!/usr/bin/perl

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

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

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

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

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



TelneTか……


277 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 14:40:23 ]
>>275
search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm

簡単だから自分で作れ

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

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



280 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 00:42:13 ]
……

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

教えてください。

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

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

283 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 20:54:54 ]
あと、waitforは要らないんじゃない? promptを待つのはcmdだけでよいのでは?

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

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

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

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

アドバイスください。

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

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

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

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

289 名前:デフォルトの名無しさん [2005/10/23(日) 11:55:48 ]
Linux> ping -n 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:

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

Linux>exit

Windows>telnet 10.1.1.1
Username:
Password:

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

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

Unix>exit

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



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

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

292 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 12:24:02 ]
コードさらせ。

293 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 23:18:23 ]
log1.txt log2.txt … log10.txt

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

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

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

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

294 名前:デフォルトの名無しさん [2005/11/01(火) 23:19:25 ]
ageます

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

296 名前:293 [2005/11/02(水) 00:08:58 ]
わぁ、どうも!

297 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 01:59:35 ]
Perl信者共助けてやれ
pc8.2ch.net/test/read.cgi/tech/1131292946/

298 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 10:43:45 ]
リクです。

20051108
aaa
bbb
end

20051109
ccc
ddd
end

20051110
eee
fff
end

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

20051109
ccc
ddd
end

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

299 名前:デフォルトの名無しさん 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 ]
どうでもいいけど、毎問メールアドレスを入力させられんの?







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

前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