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


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

くだすれPerl(超初心者用)



1 名前:nobodyさん mailto:sage [2006/09/10(日) 13:33:48 ID:???]
このスレッドは、他のスレッドでは書き込めない超低レベル、  
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。  
Perl使いが優しくコメントを返しますが、  
お礼はPerlの布教と初心者の救済をお願いします。  


21 名前:nobodyさん [2006/09/26(火) 23:48:31 ID:8QEjX/wi]
掲示板のパスワードを忘れたので、教えて欲しいとのメールを貰いました。
直接ログファイルを見たのですがencryptで暗号化されています。
これって復元はできないので、教えることは出来ないのでしょうか?

22 名前:nobodyさん mailto:sage [2006/09/27(水) 00:40:05 ID:???]
暗号化されたものを教えられてもパスワードの複合化はできまいが、
ログファイルを直接書き換える事で任意のパスワードに変更する事はできる。

試しに適当なパスワードを付けたダミー投稿をやってみて暗号化後の文字列を確認し、
ログファイルの該当部分を書き換えてうp→新しいパスワードを通知でどうかな。

23 名前:21 mailto:sage [2006/09/29(金) 22:57:36 ID:???]
>>22
どうもありがとう!

24 名前:nobodyさん [2006/10/12(木) 00:21:32 ID:Gn08F8cO]
配列変数に「\n」を入れて標準出力使用としています。
たとえは、
$data[0]="\n";
$data[1]="\n";
$data[2]="ななしさん\n";
$data[3]="\n";
$data[4]="としあき\n";
として
print @data;
としたら、クライアント側では



ななしさん

としあき

と、受け取るようにしたいです。
で、自分のwindowsのパソコンでサーバーソフトのapacheを立ち上げて、ローカルで試した時はうまく行きますが、レンタルサーバ上では、"\n"は改行せず、初めから無いことになって、
ななしさんとしあき
となってしまいます。
perlを始めて3ヶ月で、いろいろ検索したのですか、よく分かりません。
どうか、改行する方法を教えてください。

25 名前:nobodyさん mailto:sage [2006/10/12(木) 00:42:24 ID:???]
<br>

26 名前:24 [2006/10/12(木) 07:47:06 ID:ECd/ht+A]
>>25
早速の返答ありがとうございます。
もう少し詳しく書かなければいけなかったのですが、cgi送られたデータはプラウザで受け取るのではなくて、HSPで作ったクライアントソフトで受け取ります。
このように、改行を含め、横一列づつに区切られた文字列型のデータはHSPのクライアント側で「ノートパッド命令」というのを使ってデータを加工したいのです。
プラウザじゃないですから、<BR>では改行できませんし、またデータが繋がったままだと、ノートパッド命令が使えず、データは加工できないのです。
自分のパソコンでサーバーソフトを立ち上げ、ローカルで試した時はうまくいくのに、レンタルサーバにあげたとたんうまく行きません。
この違いは、osのせいなのか、ネット上にあげたせいなのか、よく分かりません。
わかる人がいましたら、どうか教えてください。

27 名前:nobodyさん mailto:sage [2006/10/12(木) 13:40:15 ID:???]
>>26
改行コードはOS依存
HSPはWindowsアプリだから、改行コードがWindows固定なんじゃないかね?
Windowsは\x0d\x0aでUnix系は\x0aなので、\x0dを付け足してみたら?


28 名前:nobodyさん mailto:sage [2006/10/12(木) 13:41:02 ID:???]
書き忘れ
レンタルサーバーがWindowsじゃなければ、の話。

29 名前:nobodyさん [2006/10/12(木) 22:06:48 ID:bEOo1KBw]
CGI_Liteというのを使いたいので
CPANってゆーの入れてみたんですけど
その後どうするのでしょうか?



30 名前:24 [2006/10/12(木) 22:59:42 ID:D35FP/7g]
>>27
返答ありがとうございます。
まだ試してはいませんが、原因は多分これです。
レンタルサーバのOSはUnixですし、自分のwindowsパソコンで、ローカルで試した時はちゃんと動作しましたし・・・。
早速perlを書き直します。
本当にありがとうございます。

31 名前:nobodyさん mailto:sage [2006/10/12(木) 23:36:42 ID:???]
>>29
モジュールがどういったものか理解してるのかな?
とりあえず、そのキーワードでググって一通り目を通してきてください。

32 名前:29 [2006/10/14(土) 16:27:10 ID:5AFK7g0o]
>31さん
ううう だいたい理解しているつもりなのですが、、、
CGI_Liteを使っている所では下記のようにでるのですが
これってうまくCGI_liteがインストールされていないということでしょうか?
[hoge@localhost member]# perl detail.cgi
Can't locate hogehogeLib.pl in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi (略)/usr/lib/perl5/5.8.6 .) at detail.cgi line 2.

ご助力いただけますとありがたいです。

33 名前:nobodyさん mailto:sage [2006/10/14(土) 16:33:46 ID:???]
CGI::Liteを使え

34 名前:24 [2006/10/15(日) 00:08:41 ID:YK613lYV]
おかげさまで改行コードの件は解決しましたが、また別のことで質問させてく
ださい。

自宅のwindowsパソコンでサーバソフトを動かし、ローカルで接続している時
は、環境変数HTTP_User_Agentを受け取ってくれますが、unixのレンタル
サーバー上では、HTTP_User_Agentを受け取ってくれません。
改行コードのようにOSで違いがあるのかもしれませんが、HSPクライアント
のHTTPヘッダーの記述がただしいから、サーバーに接続できるし、CGIにデー
タをちゃんと送れていると思います。
HTTP_User_Agent以外の環境変数、REMOTE_ADDRやREMOTE_HOSTはちゃんと受け
取っています。もちろん、POSTで送信したデータは、CONTENT_LENGTHに入って
います。
なぜかHTTP_User_Agentだけ、ネット上においてあるunixのレンタルサーバーに
情報が入ってきません。
もし原因が分かる方がおりましたら、どうか教えてください。

35 名前:nobodyさん mailto:sage [2006/10/15(日) 00:17:49 ID:???]
変なセキュリティソフトでも入れてるんじゃないの?

36 名前:24 [2006/10/15(日) 10:44:12 ID:sPLkCqaF]
すみません、自力で解決しました。

windowsでは、使っているクライアントやプラウザを知る環境変数は
「HTTP_User_Agent」でも動きますが、unixでは「HTTP_USER_AGENT」と
ちゃんと書かないとダメみたいです。
大文字と小文字だけで、大きな違いです。
>>35さん書き込みありがとうございます。
本当に大変お騒がせしました。

37 名前:nobodyさん [2006/10/16(月) 16:10:49 ID:1+lDbjJH]
@niftyのCGIは、Perlの標準ライブラリ使用禁止なんだな〜。つまらない。

38 名前:nobodyさん mailto:sage [2006/10/26(木) 07:54:58 ID:??? BE:108125928-BRZ(1033)]
Perlで2chに書き込みたいんですが、クッキーだとかなんだとか意味がわかりません
dat取得するまではなんとかわかるのですが……、参考になるサイトなどはありませんか?

39 名前:nobodyさん mailto:sage [2006/10/26(木) 08:21:44 ID:???]
荒らしツールでつか?



40 名前:nobodyさん mailto:sage [2006/10/26(木) 09:05:17 ID:??? BE:162187283-BRZ(1033)]
昔2chでIDバトルというスレを見つけたのを思い出して真似してみようかなと思っています。

41 名前:nobodyさん mailto:sage [2006/10/26(木) 10:32:06 ID:???]
つまりIDをとるだけのためにいちいち書き込むと?

42 名前:nobodyさん mailto:sage [2006/10/26(木) 11:11:39 ID:??? BE:94610227-BRZ(1033)]
ID取得はdatから抽出することでできたんですが、スレに結果を出力できません……。
ローカルで結果を何回も出力させていっても自分がパンクしそうなので自動化しようと思った次第です

43 名前:nobodyさん mailto:sage [2006/10/26(木) 16:14:52 ID:???]
あー、そういう事か。理解した。

基本的に2chは容易に荒らしツールに転用でき得る外部からの書き込みには厳しいし
それがperlスクリプトと来てはなおさらだろう。
rep2みたいに何とかやってのけた例はあるけど(まああれはPHPだが)あれも
FOXに荒らし専用ツールと勘違いされて一時期えらい事になっていたし、
やるならdatから必要なIDをまとめて所得して処理を行い、
後はコピペするのみの形に整形したテキストを出力するスクリプトに留めた方が良いと思うよ。


44 名前:nobodyさん mailto:sage [2006/10/26(木) 16:45:14 ID:???]
Perlの2ch書き込みソフトならスレ保守ツールということでVectorにある。少々古くてhana=mogeraの追加修正が必要だが。

45 名前:nobodyさん mailto:sage [2006/10/26(木) 22:03:37 ID:???]
>コピペするのみの形に整形したテキスト
ここに質問するまではそれをベースに作っていたんですが、楽にできないものかと……。
勘違いされると確かにまずいですよね、保守ツールだったらよく見かけるんですけど……。

>Perlの2ch書き込みソフト
ありがとうございます、早速探してみます。

46 名前:nobodyさん mailto:sage [2006/10/27(金) 02:03:16 ID:???]
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Request::Common;
use HTTP::Headers;
print 'URI > '; chomp ( $entry = <> );
$entry =~ 'http://([^/]*)/([^/]*)/([^/]*)/([^/]*)/([0-9]*)';
($uriServer, $uriBbs, $uriKey, $uri) = ($1, $4, $5, "$1/test/bbs.cgi");
print 'MESSAGE > '; chomp ( $msg = <> );
$ua = new LWP::UserAgent;
$request = POST ($uri, [
subject => '',
FROM => '',
hana => 'mogera',
submit => '書き込む',
mail => 'sage',
MESSAGE => $msg,
bbs => $uriBbs,
key => $uriKey,
time => time]);
$request -> referer($uri);
$request -> user_agent('Monazilla/1.00');
$cookie_jar = HTTP::Cookies -> new( file => 'ume.cook', autosave => 1 );
$cookie_jar -> add_cookie_header($request);
$ua -> cookie_jar($cookie_jar);
$response = $ua -> request($request);


47 名前:nobodyさん mailto:sage [2006/10/29(日) 16:12:26 ID:???]
最近,Perlを使ったCGIで特定IPを拒否するルーチン入れてあり,
そのリストにあるIPにも関わらず書き込みをされるのですが,どんな原因が考えられますか?
例えば,自分のIPが200.10.10.10の場合,正規表現で指定して(200.*.*.*)もきちんと自分は拒否されます。
それなのに,いくつかすり抜けてくる迷惑書き込みは,一体どのようにしてるのでしょうか?
当然,直接そのIPを指定しても,効果がありません。(上の場合なら,200.10.10.10)

考えられるのは,@Perlが取得するIPアドレスの関数が偽装される。←可能なんでしょうか??
A違うCGIで直接ログファイルに書き込まれている。
というくらいしか思いつきません。
@はともかく,Aに関しては,プロバイダがHi-HOなので,こちらで細かいパーミッションの指定ができません。(たぶん)
他にも原因や対策がありますか?


48 名前:nobodyさん mailto:sage [2006/10/29(日) 20:10:26 ID:???]
3、そのルーチンがバグっている。

というか2ならログファイルの名前変えてダミー置いとけば解決じゃないのか。

49 名前:nobodyさん mailto:sage [2006/10/30(月) 01:09:22 ID:???]
リファラーをチェックして
他のサーバからの呼び出しを蹴る様にしたら?
正規表現でやると部分一致ですり抜けたり、リファラー自体が
偽装できるんであくまで簡易的だけどね。

my $myhome = "http://www.vipper/test.cgi";

if( !$ENV{'HTTP_REFERE'} =~ /^$myhome/ ) {
#エラー処理
} else {

}




50 名前:nobodyさん mailto:sage [2006/10/30(月) 03:31:49 ID:???]
/^\Q$myhome\E/

51 名前:nobodyさん mailto:sage [2006/10/30(月) 07:32:12 ID:???]
>>50
訂正ありがとう。
あとさ、馬鹿なんじゃねーかと。

REFEREって・・・REFERERだよな、ごめん。

52 名前:nobodyさん mailto:sage [2006/10/30(月) 21:36:17 ID:???]
余談だが、単語の綴りって意味で正確には
referrer
なんだけどな。

53 名前:47 mailto:sage [2006/10/31(火) 18:03:41 ID:???]
色々とアドバイスありがとうございます。
>48
ログファイル名変更が効果あるのは他のCGIで経験済みです。
最終手段だと思ってます。
それよりも,原因や他の技術的な対策などが知りたかったので。
言葉足らずですみません。

>49
試してみます。

54 名前:nobodyさん mailto:sage [2006/10/31(火) 20:28:02 ID:???]
ZIPやGZIPではなく、LZHを展開するモジュールはありますか?

55 名前:nobodyさん mailto:sage [2006/10/31(火) 21:15:35 ID:???]
無かったんじゃない?

56 名前:nobodyさん mailto:sage [2006/10/31(火) 22:44:48 ID:???]
コマンド呼び出ししかないだろうな。


57 名前:nobodyさん mailto:sage [2006/11/08(水) 04:25:42 ID:???]
文字コードshift_jisのままで、文字列中の\を置換する方法はありますか?
s/\\/?/g;
普通にこう書くと5Cを含む2バイト文字が化けてしまいます

58 名前:nobodyさん mailto:sage [2006/11/08(水) 05:28:40 ID:???]
quotometa
\Q\E

59 名前:nobodyさん [2006/11/24(金) 00:36:56 ID:67lrIFIn]
Perlからお気に入りのタブブラウザを起動するにはどうしますか?



60 名前:nobodyさん mailto:sage [2006/11/24(金) 00:46:06 ID:???]
system(起動プログラム);

61 名前:nobodyさん mailto:sage [2006/11/24(金) 00:50:56 ID:???]
>>60
できました!
ありがとうございます。ペコリ

62 名前:nobodyさん mailto:sage [2006/12/02(土) 17:26:24 ID:???]
>>46
の間違いって
$request -> user_agent('Monazilla/1.00');
$ua -> user_agent('Monazilla/1.00');
以外にある?

このあたりだと思うんだけど
$cookie_jar = HTTP::Cookies -> new( file => 'ume.cook', autosave => 1 );
$cookie_jar -> add_cookie_header($request);
$ua -> cookie_jar($cookie_jar);




63 名前:nobodyさん mailto:sage [2007/01/07(日) 08:03:18 ID:???]
CGIを作ろうとPerlの勉強を始め、
テキストに命令文を書き込んだのですが、
動作確認の仕方が分かりません。

書いたスクリプトを起動するにはどうすれば良いのでしょうか?

64 名前:nobodyさん mailto:sage [2007/01/07(日) 09:40:28 ID:???]
Perlをインストールしないと確認できません

65 名前:nobodyさん mailto:sage [2007/01/08(月) 10:40:10 ID:???]
ありがとうございます。
これからPerlのインストール方法を探しに行って来ます。

66 名前:nobodyさん mailto:sage [2007/01/08(月) 13:13:18 ID:???]
$host = $ENV{'REMOTE_HOST'}

このようにホストを取得した場合
これを
aaa.bbb.ccc →*.bbb.ccc
のように
一部を隠す場合はどのようにしたらいいでしょうか?
ホストの取得方法を変えなければいけませんか?
ご教授くださいませ




67 名前:nobodyさん mailto:sage [2007/01/11(木) 08:43:23 ID:???]
>>66
置換してから出力すればいいんじゃない?

68 名前:nobodyさん mailto:sage [2007/01/11(木) 08:45:37 ID:???]
>>66
$foo =~ s/.*?\.(.*?)/\*\.\1/;
かな

69 名前:nobodyさん mailto:sage [2007/01/11(木) 20:27:34 ID:???]
他のperiスレでも質問したのですが、スルーされてしまいました・・
マルチっぽくなってすみません。
拡張子が.plのスプリクトの動かし方を教えてください!!!
ActivePerlをインストールしたのですが、そこからどすればいいのか分かりません・・
.plファイルをダブルクリックしてもコマンドラインが一瞬でて消えるだけです・・
サーバーをレンタルしないといけないのでしょうか?
どなたか教えてください!!!



70 名前:nobodyさん mailto:sage [2007/01/11(木) 22:50:22 ID:???]
貴様が質問した1レスあとに答え書いてあるだろメクラ

71 名前:544 mailto:sage [2007/01/12(金) 00:31:09 ID:???]
難しくて意味が分りません!!!!!
コマンドプロテクトとかじゃなくて、exeファイルみたいに直感的に扱いたいです。

消防に分かるようにお願いします!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

72 名前:nobodyさん mailto:sage [2007/01/12(金) 03:40:35 ID:???]
でんげんコードをぬいて、自分の首にまいて、ちからを入れてひっぱる

73 名前:nobodyさん mailto:sage [2007/01/13(土) 07:21:59 ID:???]
>>903

そこまでやりました。
そしたら勃起しちゃいました・・
次はどうすれば?


74 名前:nobodyさん [2007/01/15(月) 22:32:53 ID:h8620fdS]
P2Pのゲームを作っていて、perl/CGIを使ってマッチングロビー、perl/cgiと
MYSQLを使って認証とプレイヤーの成績データのdbプログラムを組んでしま
す。
マッチングも認証プログラムもdbも完成するめどがたっているんですが、
ネット上に公開するとき、サーバの負荷とか良く分かりません。

たとえば、スクリプトが大きくなるけど、一度のサーバーアクセスで全て処
理できるよう、認証・マッチング・db処理のスクリプトを一つにしたほう
がいいのでしょうか。
ほんの少しサーバのアクセス回数が増えるけど、マッチングと、認証・dbを
分けてサイズを小さくし、必要な時に必要なCGIを呼び出した方がいいので
しょうか?

本当にくだらない質問ですみません。

75 名前:nobodyさん mailto:sage [2007/01/17(水) 09:50:41 ID:???]
当方環境がWINなので、ActivePerl5.8をインストールしました。
UNIXサーバーをレンタルしてcgiで動かす場合、通常のPerl5.8は必要なのでしょうか?
ActivePerlと共存しても大丈夫なんですが?
初歩的な質問ですみませんが、教えてくださです><

76 名前:nobodyさん mailto:sage [2007/01/17(水) 13:19:17 ID:???]
>>74
負荷を気にするならPerl CGIを選択する時点で間違い
>>75
バージョンはプログラムによる
PerlとActivePerlは共存させる必要はない

77 名前:nobodyさん [2007/02/05(月) 22:01:41 ID:Utbdeaaf]
Encode.pmは難しいので、使っているサーバがperl5.8対応でも、jcode.plを使ってもいいでしょうか?
本当に、何が何だが分からない質問で、すみません・・・

78 名前:nobodyさん mailto:sage [2007/02/05(月) 22:08:13 ID:???]
使えるよ。置換してるだけだから

79 名前:77 [2007/02/05(月) 22:56:56 ID:Utbdeaaf]
>>78
返答ありがとうございます。





80 名前:nobodyさん [2007/02/07(水) 23:15:43 ID:5L64/RF4]
dat.txtファイルに




とあって、「う」だけを表示させたいのですが、どういったプログラムになるのでしょうか?

81 名前:nobodyさん mailto:sage [2007/02/07(水) 23:59:35 ID:???]
エスパーさ〜〜ん、かも〜〜ん


82 名前:nobodyさん mailto:sage [2007/02/08(木) 01:05:33 ID:???]
>>80
print "う";

83 名前:nobodyさん [2007/02/08(木) 12:46:57 ID:ySrCcQfc]
別に「う」を表示させたいわけじゃない。
datファイルにある3列目の文字を表示させたい。

84 名前:nobodyさん mailto:sage [2007/02/08(木) 14:04:25 ID:???]
open(IN, "dat.txt");
while (<IN>){
print if($.==3);
}
close(IN);


85 名前:nobodyさん mailto:sage [2007/02/08(木) 14:25:54 ID:???]
open IN, "dat.txt" and print <IN>[3];
テストしてない

86 名前:nobodyさん mailto:sage [2007/02/08(木) 15:27:19 ID:???]
ありがとうございます。感謝です。

87 名前:あっこ [2007/02/08(木) 19:36:08 ID:LIdpjyEo]

docomo-camera-ne.jp/zeidoroom/20070208192740.jpg


docomo-camera-ne.jp/zeidoroom/20070208193455.jpg

ソース教えていただけませんか??

88 名前:nobodyさん mailto:sage [2007/02/08(木) 19:51:42 ID:???]
>>87
とりあえずいくつものスレにまたがって質問して回るのを止めろ。

89 名前:nobodyさん mailto:sage [2007/02/08(木) 20:48:25 ID:???]
CGI.pmってバグあるんですか?
バージョンは2.9です。
print $cgi->end_form;
って入力してもプリントされないんですが・・・



90 名前:91 mailto:sage [2007/02/08(木) 20:58:18 ID:???]
あ、すみません間違えました。

print $cgi->end_form;

ってやると、何故か、
<div></div></form>
ってプリントされるんです。
この<div>はなんなんでしょう?入れた覚え全くないんですが・・・

91 名前:nobodyさん mailto:sage [2007/02/09(金) 07:36:17 ID:???]
>>87
おまえCの宿題スレにもいたけど大丈夫なのか


92 名前:nobodyさん mailto:sage [2007/02/10(土) 14:46:42 ID:???]
CGIレスキューのショッピングバスケットプロ v6を使用しています。
このたび、アフェリエイト用のトラッキングタグを入れることになったのですが、
金額に関する変数の設定がわかりません。

cart.cgi内部の
$fee、$fee2、$SHOKEI2、$SHOKEI2、$orders

setup.cgi内部の
$j

など入れてみましたが、数値が出ません。

タグは注文の最終画面に入れ込みます。
注文IDに関してはすぐに出たのですが。。。。

エロイ方ご教授くださいませ。

93 名前:nobodyさん mailto:sage [2007/02/10(土) 17:59:27 ID:???]
>>92
改造スレへGo

っていうか仕事を2chに持ち込むなYO

94 名前:92 mailto:sage [2007/02/11(日) 12:29:23 ID:???]
>>93

誘導有難うございます。

がんばってみて、駄目なら移動してみます。

95 名前:nobodyさん mailto:sage [2007/02/18(日) 20:10:51 ID:???]
ttp://www.42ch.net/UploaderSmall/source/1171796861.zip
このスクリプトで、ログファイルへのデータ追加時に
現在の年日時を取得して
2007/2/18 20:09
のような形式で行の末端に自動的に書き込むようにしたいのですが、
どの部分にどのような処理を加えれば良いでしょうか?


96 名前:nobodyさん [2007/02/24(土) 08:30:18 ID:vuvrJgei]
最近外国人が宣伝目的で掲示板に書き込むので、なんどかしたい。
他の掲示板でも攻撃を受けているのをよく見かけます。

特徴としては、アルファベットのみで書き込むので、アルファベットのみの投稿の場合は
エラーにしたいのですが、そんなことは可能でしょうか?



97 名前:nobodyさん mailto:sage [2007/02/24(土) 10:17:57 ID:???]
>>96
EUC-JPだけど
# $str に ASCII 以外が含まれているか判定する

if ($str =~ /[\x8E\xA1-\xFE]/) {
print "含まれている\n";
}
引用元
www.din.or.jp/~ohzaki/perl.htm#JP_Exist


98 名前:nobodyさん [2007/02/26(月) 13:07:30 ID:bWsttIN4]
改造です。
先頭行でなく最終行を取得しないとマズいことに気づいたんですが
どうすればいいでしょうか。
---------
if ($in{'ori_ie_id'} eq "admin"){
$bbs1_log_file = "./member/admin/bbs".$in{'bbs_num'}."_log.cgi";
}else{
$bbs1_log_file = "./member/$in{'ori_ie_id'}/bbs1_log.cgi";
}
open(IN,"$bbs1_log_file") || &error("Open Error : $bbs1_log_file");
# 先頭行を取得
$total_counter = <IN>;
($total_counter,$all_total_counter)= split(/<>/, $total_counter);
$top = <IN>;
local($b_num,$b_name,$b_date,$b_res,$b_count,$b_com)= split(/<>/, $top);
--------------------------

99 名前:nobodyさん mailto:sage [2007/02/26(月) 16:00:02 ID:???]
よし、エスパー3級の俺が答えてやろう。

複数行の入力を取った場合配列になる。

@lines = <INPUT>;

この場合に最後の要素はこう所得できる。

$lastline = $lines[-1];

もしくはこう書いても良いだろう。

$lastline = pop(@lines);

これらの違いについてはマニュアルを嫁。

分かったら次からはエスパーじゃなくても分かる言葉で書くように。



100 名前:nobodyさん mailto:sage [2007/03/07(水) 21:52:50 ID:???]
なんか、トロイの木馬が検出されましたと出た。

101 名前:nobodyさん [2007/03/22(木) 13:03:52 ID:RsfMZKm1]
$value = '%e6%97%a5%e6%9c%ac%e8%aa%9e';
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
として走らせたところ、スクリプトをウェブサーバを通して呼んだときと
同じサーバのコマンドラインから呼んだときで
$valueの中が変わってきてしまいます。

linuxコマンドライン:ツづ可づ卍づアツつイ
linux上ウェブサーバ:にほんご

どうしてこうなっちゃうんでしょうか・・
コマンドラインから呼んだときでも"にほんご"とする方法はありますか?


102 名前:nobodyさん mailto:sage [2007/03/22(木) 13:08:13 ID:???]
そのコンソールは日本語表示に対応してますか

103 名前:101 mailto:sage [2007/03/22(木) 14:06:12 ID:???]
ごめんなさいよくわからないです。
linuxのサーバへはwindows上のtelnetでつないでまして、
さきほど、簡単にprintで"にほんご"と表示させるだけ、
もしくはファイルとして保存するだけのスクリプトを
スクリプト自体の文字コードをいろいろ変えて走らせてみたところ、
どれも漢字混じりでぐちゃぐちゃっとなり、まともに出ませんでした。
これって対応してないって事ですかね。。

104 名前:nobodyさん mailto:sage [2007/03/23(金) 12:35:39 ID:???]
せめてTeraterm使ってください

105 名前:nobodyさん mailto:sage [2007/03/26(月) 05:21:22 ID:???]
表示文字コードを変更できないプロンプトってあるの?

106 名前:nobodyさん [2007/04/18(水) 00:42:41 ID:2fOrfnuV]
#ディレクトリを開く
print "変換するフォルダのパスを入力してください\n";
$folder_path = <STDIN>;
chomp($folder_path); #改行コード削除
opendir(DIR, "$folder_path");
@file = readdir(DIR);
closedir(DIR);

#ファイル名を調べる
foreach (@file)
{
#htmlファイルなら処理
if( $_ =~ /.html/ ){
print "$1\n"; ##ここは呼ばれるが$1が空##
#ファイルを開く
open(F, "+< $_.$1" );
#ファイル1行読み込む
while($line = <F>){
#iso-8859-1をShift_JISに変換
if( $line =~ s/charset=iso-8859-1/charset=Shift_JIS/ ){
print(F "$line");
}
}
close(F);
}
}

htmlファイルの文字コードをかえるコードを書きたいのですが、うまくいきません。
どこが、間違ってるのでしょうか?

107 名前:nobodyさん mailto:sage [2007/04/18(水) 01:10:01 ID:???]
まずエラーメッセージを書こうぜ

108 名前:106 [2007/04/18(水) 01:17:05 ID:2fOrfnuV]
#ディレクトリを開く
print "変換するフォルダのパスを入力してください\n";
$folder_path = <STDIN>;
chomp($folder_path); #改行コード削除
opendir(DIR, "$folder_path");
@file = readdir(DIR);
closedir(DIR);
#ファイル名を調べる
foreach (@file)
{
#htmlファイルなら処理
if( $_ =~ /([A-Za-z0-9_]*\.html)/ ){
print (STDOUT "$1");
#ファイルを開く
if( !open(F, "+< $floder_path.$1" ) ){
printf(STDOUT "HTML読み込み失敗\n");
}
#ファイル1行読み込む
while($line = <F>){
print(STDOUT "変換\n");
#iso-8859-1をShift_JISに変換
if( $line =~ s/charset=iso-8859-1/charset=Shift_JIS/ ){
print(F "$line");
}
}
close(F);
}
}
としたところ、
ファイル名 HTML読み込み失敗
と表示されます。

109 名前:nobodyさん mailto:sage [2007/04/18(水) 01:22:04 ID:???]
じゃ動いてんじゃん



110 名前:106 [2007/04/18(水) 01:23:05 ID:2fOrfnuV]
ループにはいるまえに、カレントディレクトリをへんこうし
#カレントディレクトリ変更
chdir("$folder_path");

open(F, "+< $floder_path.$1" )を
open(F, "+< $1" )とすると置換の部分は実行できました。
しかし、置換前の文字が残ってしまいます


111 名前:nobodyさん mailto:sage [2007/04/18(水) 01:59:13 ID:???]
>置換の部分は実行できました。
>しかし、置換前の文字が残ってしまいます

バカじゃないんだから実行前の入力文字列と実行後の出力文字列くらい出せや

112 名前:nobodyさん mailto:sage [2007/04/18(水) 02:06:45 ID:???]
香ばしいなぁw 俺にもあったわこんな時代www

>>108
ファイル変換系の処理は「読み込むファイルに書き戻す」よりも
「読み込みつつ別のファイルに書き出す」ようにした方がいい。
書き出しが終わった後で削除&リネームすればいいだけだし、
途中で処理が止まっても安全。

あと微妙に板違いだから次からはプログラム板行けなw

113 名前:106 [2007/04/18(水) 02:57:11 ID:2fOrfnuV]
別ファイルに書き出しでやってみます
ありがとうございました。
つぎからはプログラム板逝きます


114 名前:nobodyさん mailto:ファンより [2007/04/18(水) 03:45:43 ID:???]
島根県のみなさん、パチンコをするなら、

  優良パチンコ店 エ○トワン  

に行こう! 遠隔(※1)をやっていないパチンコ店は「エイ○ワン」だけ!
違法ロム(※2)を使っていないパチンコ店も「エイト○ン」だけ!
○イトワンでは、遠隔等が可能な設備は入れていません。 ロムも、警察がチェックしやすくしています。

詳しい方はご存知の通り、どんなにパチンコの遊戯人口が変動しても、その市場規模は変わりません(※3)。
要するに、客が減っても、残った客から絞り盗る量を増やして調整しているのです。
しかし、何故それが可能なのか?…ご理解頂けると思いますが、9割以上の店が確実に遠隔等を行ってます。
1万店以上のパチンコ店の中で、遠隔も違法ロムも確実にやってないのは「○イトワン」ただ1店です!

※1…遠隔とは
 「お、あの客は新顔だな。勝たせて味を占めさせるか。遠隔操作で設定変更しよ」
 「客が減ってきたな。ま、設定を絞めて(違法)、1人あたりから搾る量を増やせばいいか」
 「あのオヤジ負け続けてるからそろそろ辞めるかもな。今日は勝たせてやるか」

※2…違法ロムとは
 「うちのアタリ確率は、もちろん他と同じ『○○○分の1』ですよ!(ロムいじってるからウソだけど)」

※3       市場規模   遊戯人口
 平成06年 30兆4,780億円 2,930万人
 平成08年 30兆0,630億円 2,760万人
 平成10年 28兆0,570億円 1,980万人
 平成12年 28兆6,970億円 2,020万人
 平成14年 29兆2,250億円 2,170万人
 平成16年 29兆4,860億円 1,790万人

115 名前:nobodyさん mailto:sage [2007/04/24(火) 12:15:29 ID:???]
perlでそれなりに大きなCGIを作ることになったのですが
いろいろな関数をまとめた物を作るときに
それらを単純にまとめただけの外部plファイルを
requireして使いまわすよりも、パッケージ化や
モジュール化して使ったほうが良いと
聞いたのですが、何故でしょうか


116 名前:nobodyさん mailto:sage [2007/04/24(火) 14:22:11 ID:???]
パッケージ化することによって、関数(メソッド)や変数(属性)の名前衝突を避けることができ、
モジュールをつかいまわす場合に有効。


117 名前:nobodyさん [2007/04/24(火) 14:37:40 ID:RJoF4cmJ]
Windowsマシンで、Apache + ActivePerlを使用して、ローカルでPerlの勉強をしているんですが、
Perlのコードにエラーがあると、
use Strict; を記述しても、500 Internal Server Errorになってしまいます。
(どういうエラーが出たか教えてくれない)
エラーを表示させるにはどうしたらいいんでしょうか。

各バージョンは、
Perl v5.8.8
Apache 2.0.59
です。

118 名前:nobodyさん mailto:sage [2007/04/24(火) 17:10:54 ID:???]
>>116
なるほど。変数名の衝突を気にしなくてもいいのは便利ですね
これからパッケージの勉強からしてみます
ありがとうございました


119 名前:nobodyさん mailto:sage [2007/04/24(火) 17:23:24 ID:???]
>>117
スクリプトの頭に

BEGIN {print "Content-Type: text/plain\n\n"; $| = 1; open(STDERR, '>&STDOUT')}

とでも書いとけ



120 名前:nobodyさん [2007/04/25(水) 02:24:17 ID:lSJlnLTR]
>>117
モジュールつかっとけ
use CGI::Carp qw(fatalsToBrowser);


ttp://perldoc.jp/docs/modules/CGI.pm-2.89/CGI/Carp.pod


121 名前:nobodyさん mailto:sage [2007/04/25(水) 20:53:26 ID:???]
[ディレクトリ構成]
xxx/
 index.html
 
 data/
  post.dat

cgi-bin/
 xxx/
  post.cgi

と置いてあります。このとき
#!C:/Perl/bin/perl
open(OUT,">> ../../xxx/data/post.dat");
print OUT "$FORM{'posturl'}\n";
close(OUT);

と post.cgi に記述してみたのですが、うまく
post.dat のほうに $FORM{'posturl'} の内容が書き込めていないようでした。
パスの設定ミスだとは思うのですが…

環境は,windows xp sp2 上 でApache/2.0.45 を使用しております。
どうぞよろしくお願い致します m(__)m






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

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

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