Perlコーディング初心者質問スレ Part 52
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/15(金) 14:01:51ID:gobry0n2【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0482nobodyさん
2006/10/16(月) 23:51:46ID:ZHxCJrpx掲示板とショッピングカートはレンタルのサーバーをかりて、
HPからリンクして使っています。ところが掲示板荒らしで困っています。
改行を繰り返し、とても見にくくて、アクセス拒否してもネットカフェなどから
投稿してきたりで、どうしようもありません。
文字数の制限は設定サービスにあるのですが改行制限はサービスにないといわれ、
$value =~ s/\r\n/<BR>/g;
$value =~ s/\r/<BR>/g;
$value =~ s/\n/<BR>/g;
$value =~ s/(<BR>){5,}//g;
↑
これを使えと言われたのですが、本当に初心者でよくわかりません。
サーバーを代えたほうが早いですか??
0483nobodyさん
2006/10/17(火) 00:14:01ID:???そのひとが 「改行制限はサービスにない」 とかゆってんの? ワロスww
そしてこれを使えの例がひどくてさらにワロスwww
参考までに作者のサイトおしえてください><
〜.cgi のソース内を 「$value =~ s/\r/<BR>/g;」 で検索すればそれっぽいとこがあるから追加すればいいんじゃない? kwskはわからんけど
あとサーバ変えても同じだと思うんだけど。
0484nobodyさん
2006/10/17(火) 00:25:20ID:???ttp://advenbbs.net/
↑
ここのです。
$value =~ s/\r\n/<BR>/g;
$value =~ s/\r/<BR>/g;
$value =~ s/\n/<BR>/g;
$value =~ s/(<BR>){5,}//g;
↑
コレを使えと言ったのは、元PCの先生なんですが。
なんか、自分が無知すぎて恥ずかしいので、
他に対策をとってみます。
すぐレス下さり本当に有難うございました。
まずは、勉強してみます。
0485nobodyさん
2006/10/17(火) 00:44:46ID:???>ベースはKENT-WEBの人気レス式アイコン掲示板YY-BOARDで見た目も使いやすさはバツグン!
(ノД`)アチャー
0486nobodyさん
2006/10/17(火) 00:46:25ID:???他の、しっかり対応してくれるとこから借りるのをオススメしますー。
0487nobodyさん
2006/10/17(火) 00:54:00ID:???m(__)m
PS.なんでみなさん、IDが???なんでしょう???
0489nobodyさん
2006/10/17(火) 13:31:46ID:???0490nobodyさん
2006/10/17(火) 15:22:14ID:???調べてみたのですがよくわからない部分もあったのです。
できたらやり方を教えてくれませんか?
0491nobodyさん
2006/10/17(火) 15:23:22ID:???>>調べてみたのですがよくわからない部分もあったのです。
を
調べてみたのですがよくわからない部分もあったので。
に訂正します。。。
0492nobodyさん
2006/10/17(火) 15:26:48ID:???0494nobodyさん
2006/10/17(火) 15:36:53ID:???windowsには付属してないから、diffとかでぐぐってwindowsで使えるそれっぽいのを使ってみるといいよ
0495nobodyさん
2006/10/17(火) 16:17:37ID:???0496nobodyさん
2006/10/17(火) 19:57:46ID:???目視でのチェックは必ず見落とすからdiffというプログラムを使って比較する。
Windowsだったら、FCというコマンドがある。MSDOSの頃からある古いプログラムだけど、
目視より100万倍まし。
コマンドプロンプトで
fc file1 file2
0498nobodyさん
2006/10/17(火) 22:59:43ID:???http://search.cpan.org/~rbs/Text-Diff-0.35/
0500nobodyさん
2006/10/18(水) 00:00:02ID:???ゴミ生産して何かいいことあんの?
0501nobodyさん
2006/10/18(水) 00:08:11ID:???0502nobodyさん
2006/10/18(水) 01:08:00ID:???K*NT 的な人間を増やしてどうなるんかね。w
0503nobodyさん
2006/10/18(水) 01:11:56ID:???機会があったらPerlで作ってみたいです。
スレ違いの話題になってしまいましたが皆さんお答えしていただきどうもありがとうございました。
0504nobodyさん
2006/10/18(水) 17:13:18ID:ZtKQFgfZユーザー登録、マイページ、広告サイトに登録するとポイントがあがる、
クリック広告をクリックするとポイントがあがる。
などそのような機能のスクリプトがわかりません・・。
どうしたらいいでしょうか??^^;
0505nobodyさん
2006/10/18(水) 17:16:31ID:???0506nobodyさん
2006/10/18(水) 17:28:12ID:???0508nobodyさん
2006/10/19(木) 11:04:42ID:???$ext = '(?:zip)'
while($data~ m/((mms|h?ttp):\/\/(?:[\w\/\.\?\=\-\&\:]*($site)?(\/)?([\w\/\.\?\-\=\&\:]*|[\w\/\.\?\=\-\&\:]*\.$ext[\w\/\.\?\=\-\:]*)))/g) {
$output = $1;
}
だと $dataに入っている ttpから始まるどのようなアドレスでも抽出して$1に入れてしまいます。
そうではなく
mms://アドレス;ポート番号 ←や
http://アドレス;ポート番号 ←や
ttp://アドレス;ポート番号 ←や
$siteに含まれてるサイト先 や
$extに含まれてる拡張子が あるときだけ $outputには入れられないですか?
0509nobodyさん
2006/10/19(木) 11:51:43ID:???それよりまずバックスラッシュとか見通しがひどいんで、 m/〜/ → m{〜} にして
[\w\/\.\?\=\-\&\:]* とかも $変数 = qr/〜/ にして書き直してきて。
0510nobodyさん
2006/10/19(木) 12:15:36ID:???スキームが http, ttp, mms の何れかで、且つ
$site のドメインで、且つ
$ext の拡張子を持つファイルの URL という意味なら
$scheme = qr{(?:h?ttp|mms)};
$site = qr{(?:www\.yourfilehost\.com)};
$ext = qr{(?:zip)};
@output = $data =~ m{$scheme://$site(?:\d+)?/[\w!\$&-;=@-\[\]~]+\.$ext}g;
0511510
2006/10/19(木) 12:17:14ID:???0512nobodyさん
2006/10/20(金) 08:06:25ID:???亀レスすみません。
一応↓のようにして出来たには出来たのですが
http://203.111.199.131:8080/test.m3u ←を拾ったとき、test.m3uまで含めたいのですが 8080の後ろで切れてしまい
それを$outputの中に入れてしまいます。
↓ここの表記に問題がありますか?
while ($data=~ m/(((?:$site_m)[\:\d\w\-\.\/\=\?\!\-\%\&\_\#]+\:[\d]+)|h?ttp:\/\/(?:[\w\/\.\?\-\%\&\=]*$site\/[\w\/\.\?\-\%\&\=]*|[\w\/\.\?\-\%\&\=]*\.$ext[\w\/\.\%\&\-\?\=]*))/g) {
$output = $1;
}
0513nobodyさん
2006/10/20(金) 12:26:37ID:???問題ありません。
0514nobodyさん
2006/10/20(金) 22:07:24ID:???0516nobodyさん
2006/10/20(金) 22:39:35ID:???0517nobodyさん
2006/10/20(金) 23:33:13ID:???私がPERLで作ったCGIをPCにて閲覧している時、「戻る」ボタンを押したら
前ページのキャッシュを読み込むので、ロード時間がかからず表示が速いのですが
携帯電話で「戻る」をすると毎回CGIをロードしなおして時間がかかります。
携帯電話でも前ページを表示した時にキャッシュを読み込ませる方法はありますか?
0518nobodyさん
2006/10/20(金) 23:48:49ID:???AAA
BBB
CCC
というファイルがあります。
一行目がAAAであるときのAAAとCCCを
AAA CCCというならびで抽出したい場合
foreach(<STDIN>){
if(/(AAA)/){
print "$1";
foreach(<STDIN>){
if(/(CCC)/){
print " $1\n";
last;
}
}
}
}
で上手くいきません。
ご教授お願いします。
0519nobodyさん
2006/10/21(土) 01:08:52ID:???携帯電話のブラウザにキャッシュ機能があるのかどうかによる。
ヘッダーに Cache-Control を追加してみるとか。
>>518
http://pc8.2ch.net/test/read.cgi/tech/1157874614/784
マルチ乙
0520nobodyさん
2006/10/21(土) 02:29:15ID:???魔法のiランドとかaspとかですよね?
魔法のiランドとかなら 戻るしても キャッシュが読み込まれてるっぽいので
携帯電話にはキャッシュ機能はついてそうですね
0521nobodyさん
2006/10/21(土) 03:37:50ID:???他のスレでやった方が御互いのためだと思うが。
0523nobodyさん
2006/10/21(土) 05:03:26ID:???文字コードをjisからeucに書き直したのですが
GETで送る文字が受け取り側で化けてしまいます。
いろいろやってみたのですが上手くいきません
対処法ありましたら教えて下さい。
0524nobodyさん
2006/10/21(土) 05:33:46ID:???特別なこと書いてないからFORMからの送信だと思うけど
送信側の文字コードは確認したのですか?ヘッダの指定はしてありますか?
0525nobodyさん
2006/10/21(土) 06:08:17ID:???説明不足ですみません。
送信側の文字コードはEUCです。
FORMからではなくhtmlリンクに *.cgi?abc=あいうえお と記述しています。
(本当はpostしたいのですが別窓を開いて表示させたいので仕方なく)
0526523
2006/10/21(土) 06:16:03ID:???スクリプトや格納してあるデータは全てEUCにしてあります。
0527nobodyさん
2006/10/21(土) 06:33:32ID:???受け側のヘッダもEUCです。
それは文字コードやPerlの問題ではないですよ
URLエンコードしないと駄目ですよ
0529523
2006/10/21(土) 07:51:25ID:???ありがとうございました。
0530nobodyさん
2006/10/22(日) 01:38:10ID:???動くには動くのですが、ほんのたまにリセットされてしまい、また0からカウントしはじめます。
対処方法などご存知でしたら教えてください
0531nobodyさん
2006/10/22(日) 01:54:52ID:???排他制御を正しく行う。
専用スレ http://pc8.2ch.net/test/read.cgi/php/1024795138/
0533nobodyさん
2006/10/22(日) 02:09:49ID:Wr8nDhA3@array = qw(0 1 2 3);
foreach my $hoge(@array){
push @new_array,$hoge
}
my $x_array =[];
foreach my $hoge(@array){
push @$x_array,$hoge
}
print @new_array;
print @$x_array;
どなたか、これらの違いを教えてください。
速度?
予約済み変数とかいろいろ調べてみたんですが、
"[]"って何か知ってる方がいらっしゃったら
よろしくお願いします。
print [];
->ARRAY(0x274f18) ナニコレ?
0535nobodyさん
2006/10/22(日) 02:25:22ID:???0537nobodyさん
2006/10/22(日) 13:54:06ID:envKHppfif ( @list1[2] eq @list2[3] ){
とやってて、@list1[2]と@list2[3]にはそれぞれ"00001"が入っているのですが、
条件に一致しません。
if ( @list1[2] == @list2[3] ){
とすると一致します。
この例では値が"00001"ですが、実際は文字の場合もあるので、eq をつかいたいのですが、
どうしたらよいでしょうか?
Perlは文字とか数値とかあんまり意識せずに使えると思ってましたが、こういう場合は
別なんでしょうか?
0539nobodyさん
2006/10/22(日) 14:12:59ID:???ppmでモジュールをインストールしたいです。
モジュールはSOAP::Liteです。
>search SOAP::Lite
から調べていくと、以下まで達しました。
ppm> search ResourcePool-Resource-SOAP-L
Using cached search result set 7.
1. ResourcePool-Resource-SOAP-~ [1.0101] SOAP::Lite bindings for ResourcePool
2. ResourcePool-Resource-SOAP-~ [1.0101] ResourcePool-Resource-SOAP-Lite
ここで、正式名称が分からないので、インストール/確認ができない状態です。
チルダで省略されている部分を参照するにはどうすれば良いでしょうか?
宜しくお願いします。
0540nobodyさん
2006/10/22(日) 15:10:43ID:???>>539
http://pc8.2ch.net/test/read.cgi/tech/1157874614/813
0541nobodyさん
2006/10/22(日) 15:35:24ID:???恐らくマルチして指摘された奴が腹いせでやってるんだろう。
0542nobodyさん
2006/10/22(日) 15:39:31ID:???恐らくマルチして指摘された奴が腹いせでやってるんだろう。
0543nobodyさん
2006/10/22(日) 15:55:00ID:???0544nobodyさん
2006/10/22(日) 15:56:17ID:???0545nobodyさん
2006/10/22(日) 16:03:05ID:???0546nobodyさん
2006/10/22(日) 17:34:00ID:???1, ユーザ→CGI だと上手くいくのですが、
2, ユーザ→CGI→モジュール→CGI
のモジュールで
my $session=CGI::Session->new(undef,$sid,{Directory=>'../session'})
でデータを取得出来ないのですが、どうすれば取得出来るのでしょうか?
0547nobodyさん
2006/10/22(日) 21:34:28ID:???> 2, ユーザ→CGI→モジュール→CGI
これが意味不明だけど、$sidにはなにが入ってるの?
第2引数ってCGI.pmのオブジェクトじゃ駄目なの?
0548nobodyさん
2006/10/23(月) 05:27:20ID:???0549nobodyさん
2006/10/23(月) 16:44:05ID:???$MOJIRETSU="<太字>テスト1</太字><太字>テスト2</太字><太字>テスト3</太字><太字>テスト4</太字>";
とあったときに<太字>〜</太字>を→<b>〜<b>にして出力したいです。
そこで
$MOJIRETSU =~ s/<太字>(.*)/太字/<b>$1<\/b>/;
にして実行したら
<b>テスト1</太字><太字>テスト2</太字><太字>テスト3</太字><太字>テスト4</b>
というように最初の「太字」と最後の「/太字」を参照にして置き換えをします。
それぞれで置き換えを行って
<b>テスト1</b><b>テスト2</b><b>テスト3</b><b>テスト4</b>
という結果が欲しいのですがどうすればよいでしょうか?
0550nobodyさん
2006/10/23(月) 17:03:34ID:???//b/\/b/
0553nobodyさん
2006/10/23(月) 17:26:07ID:???0555nobodyさん
2006/10/23(月) 17:32:21ID:???/'".:=≡ミ_≧_尨彡三:ヽ、
//.:;:彡:f'"´‐------ ``'r=:l
/〃彡_彡′,.=、 ̄ ̄ ,.=、 |ミ:〉
'y=、、:f´===tr==、.___,. ==、._ゞ{
{´yヘl'′ | /⌒l′ |`Y}
゙、ゝ) `''''ツ_ _;`ー‐'゙:::::l{ あきらめたら
. ヽ.__ ,ィnmmm、 .:::|! そこで試合終了ですよ・・・・
,.ィ'´ト.´ ´`"`"`゙″ .::::;'
イ´::ノ|::::l \ "' :::/
::::::::::::|:::::l ヽ、 ..:: .:::/.、
:::::: ::: |:::::ヽ ヽ、.......::::/..:::/!\\
::::::::::: |::::::::ヽ ``''‐--ァt''′ |!:::ヽ:::\
:::::::::::::|::::::::::::ヽ、 /i|iト、 |l:::::::ヽ:::::\
:::::::::::::|::::::::::::::/:ヽ、 ∧|i|i|i|〉. ||::::::::::ヽ:::::::\
0556nobodyさん
2006/10/23(月) 17:42:02ID:???フォーム入力から取得した
$in{'address'}の最後が「 .zip 」で終わっているか確認するためには
if($in{'address'}){
# .zipで終わってないときのエラー処理
}
どういうふうにifを組めばいいですか?
0557nobodyさん
2006/10/23(月) 17:45:58ID:???0559nobodyさん
2006/10/23(月) 18:09:10ID:???逆に
<a href="http://hoge.com/hoge.cgi?keyword=test">test</a>
を 開始test終了 に戻すときにはどうすればいいでしょうか?
$data =~ s/\Q<a href=(.*?)>\E(.*?)\Q<\/a>\E/開始$2終了/g;
では出来ませんでした
0560nobodyさん
2006/10/23(月) 18:29:17ID:???0561nobodyさん
2006/10/23(月) 18:48:22ID:???$data =~ s|<a\b[^>]*>(.*?)</a>|開始$1終了|g;
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlretut.html
0562nobodyさん
2006/10/23(月) 19:12:11ID:I2ot/ZmI出来ました!ありがとうございました
0563nobodyさん
2006/10/24(火) 07:41:17ID:???>>549 の内容と>>559の内容を
合わせて
$MOJIRETSU="リンク青字テスト/青字/リンク"; #←結果としては<a href=http://hoge.com/hoge.cgi?keyword=テスト><font color=blue>テスト</font></a>が返ってきてほしい
$SEARCHADD="http://hoge.com/hoge.cgi?keyword=";
$MOJIRETSU =~ s/\Qリンク\E(.*?)\Q/リンク\E/<a href=$SEARCHADD$1>$1<\/a>/g;
$MOJIRETSU =~ s/\Q青字\E(.*?)\Q/青字\E/<font color=blue>$1<\/font>/g;
$MOJIRETSU =~ s/\Q赤字\E(.*?)\Q/赤字\E/<font color=red>$1<\/font>/g;
とすると文字列が
$MOJIRETSU="<a href=http://hoge.com/hoge.cgi?keyword=テスト><font color=blue>テスト</font></a>"が返ってきてほしいのですが
リンク〜/リンクの中身までをURLのkeyword以降に入れて
$MOJIRETSU="<a href=http://http://hoge.com/hoge.cgi?keyword=<font color=blue>テスト</font>><font color=blue>テスト</font>"となってしまいます。
解決方法を教えてください。
0564nobodyさん
2006/10/24(火) 09:02:56ID:???0565nobodyさん
2006/10/24(火) 10:04:02ID:???0566nobodyさん
2006/10/24(火) 11:06:32ID:???まず煮詰まったら外の空気に触れながら景色を見ろ
0568nobodyさん
2006/10/24(火) 17:56:30ID:S0nwA48Z現在ウェブメーラーを自作しようとしておりまして、POP3サーバにアクセスしてメールの差出人のメールアドレス、件名、受信時刻、本文を表示しようとしているんですが、件名だけがデコードの仕方が分からずに困っています。本文は
Encode::from_to($body,"iso-2022-jp","shiftjis");
だけでなんとかなってしまったのですが、件名はこれだけだとうまくいかず、デコード前の
=?ISO-2022-JP?B?〜〜〜?=
と表示されてしまいます(〜〜〜は任意の内容)。調べたところヘッダー部はエンコードの方法が異なっているというようなことを見たので、
$Subject = decode_base64($Subject);
としてみたのですが正しい表示はされません。どうしたらうまくいくでしょうか。初心者ゆえくだらない質問かもしれませんが、どうかご教示ください。
0569nobodyさん
2006/10/24(火) 18:05:43ID:???0570nobodyさん
2006/10/24(火) 19:44:51ID:FUbqOCaM掲示板CGIについて。
2ちゃんねるでは半角カタカナを使っても文字化けってしないですよね。
でも私の掲示板(ベースはKENTのMiniBBSとか、PrismWebのテンプレ掲示板とか)
では、半角カタカナを投稿すると???などという風に化けてしまいます(ログに記録する時点で化けてる)。
この違いって、どこから来るんでしょう?
エンコード方法?それともサーバの問題?jcodeモジュールの問題?
0571nobodyさん
2006/10/24(火) 19:53:56ID:???0572nobodyさん
2006/10/24(火) 19:55:02ID:???0573nobodyさん
2006/10/24(火) 20:10:58ID:myoH6Gq+0574nobodyさん
2006/10/24(火) 20:23:38ID:???0576nobodyさん
2006/10/24(火) 21:13:31ID:/nLWiTuIperlソース自体はEUCで記入しており、生成されたファイルも
EUCコードなのですが、このファイルをブラウザ(IE)で開くと
SJISエンコードで開いてしまい文字化けしてしまいます。
ブラウザがEUCエンコードで表記されたファイルという事を
認識していないようなのですが、どのようにすればEUCとして
認識してくれるのでしょうか?
IEを窓から投げ捨てる♪
か、適切なcharsetを指定してあげる♪
0578nobodyさん
2006/10/24(火) 21:35:09ID:???なにそれ?
0579nobodyさん
2006/10/24(火) 21:38:31ID:???0580nobodyさん
2006/10/24(火) 21:41:27ID:???0581nobodyさん
2006/10/24(火) 22:13:55ID:???EUC-JP のファイルを IE で確実に読みたいなら、IE のエンコード設定を EUC に固定すると良いでしょう。
方法は、あらかじめ IE のメニューから「表示」→「エンコード」→「日本語 (EUC)」を選んでおくだけです。
できれば次は Perl の質問をしに来てください。待ってます。
■ このスレッドは過去ログ倉庫に格納されています