トップページ⇒php
1001コメント324KB

【Perl】初心者コーナー Part17

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆Go4ZKngPGE 02/10/14 17:24ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0751nobodyさん02/11/09 16:50ID:???
ここはPerlの質問用スレッドだということを分かっているのかな。
0752nobodyさん02/11/09 18:22ID:???
>749
ttp://pc.2ch.net/test/read.cgi/php/1032704121/567n
0753Ruby!!!!!!!!!!!02/11/09 19:20ID:???
ここは糞言語の質問用スレッドだということを分かっているのかな。


0754nobodyさん02/11/09 20:17ID:???
>>750
dieはまずいでしょう。
0755nobodyさん02/11/09 22:08ID:???
>>754
チョトワラタ
言われてみればそうだ
0756デフォルトの名無しさん02/11/10 08:28ID:???
>>750
`kill 投稿者`と言いたかったんだろ。

0757nobodyさん02/11/10 10:48ID:/Zxw7C49
Perl でブラウザのJavaScriptがONになっているのと、なっていないのとで、
処理を分けることは可能でしょうか?
環境変数か何かから受け取れるとか^^;

やはり、Perlのソース内(ページ表示部分に)に
JavaScriptのソースを直接書くしかありませんか?

微妙に板違いかもしれませんが、よろしくお願いします。
0758nobodyさん02/11/10 10:53ID:???
>>757
多分、無理だと思う
0759nobodyさん02/11/10 11:00ID:???
>Perl でブラウザのJavaScriptがONになっているのと、なっていないのとで、
>処理を分けることは可能でしょうか?

無理
0760nobodyさん02/11/10 11:43ID:???
758氏、759氏
お答え、ありがとうございました。
0761nobodyさん02/11/10 12:31ID:???
>>757
余裕でできるよ
0762nobodyさん02/11/10 12:36ID:???
>>757
onBlurとかで出来る気はするけどなぁ
0763nobodyさん02/11/10 13:28ID:???
>757は、CGIのソースのHTML表示部分にJavaScriptを直接書く方法以外でってことでしょ。


もとの文字列($hoge)と、その文字列の一部分を置換した文字列($piyo)が欲しいとき
$piyo = $hoge;
$piyo =~ s/xxx/yyy/;
ってやってるんだけど、一発でいける方法ってある?
0764nobodyさん02/11/10 13:34ID:???
>>763
既出
0765nobodyさん02/11/10 13:39ID:???
$hage="あ";
の$hageがshift_jisだったら、真を返すには、
どうすればいいのですか?
(jcodeを使用せずに。)
0766nobodyさん02/11/10 13:39ID:???

>764
このスレ?
リンクとか張ってもらえると嬉しいが、探すの面倒なら
検索キーワードくらい教えてくれ。

っていうか、答えいて。
0767nobodyさん02/11/10 13:41ID:???
質問です。
HPを二つ持ってて同じ掲示板を使っているんですが・・・
SKINだけ別々にできますか?
0768nobodyさん02/11/10 13:57ID:???
>>766
($piyo= $hoge) =~ s/xxx/yyy/;
って764はいいたいんじゃないの
できるかは試してないけど
0769nobodyさん02/11/10 13:59ID:???
>>767
それぞれの外部スタイルシートをリファラで分岐させるとかくらいでは
0770nobodyさん02/11/10 14:02ID:???
>>765
$hage eq 'shift_jis'
0771nobodyさん02/11/10 14:06ID:???
>>769
リファラってなんですか?
0772nobodyさん02/11/10 14:08ID:???
>>765
if($hage eq 'あ'){print 'SJISぽ'}
else{print 'SJISじゃないぽ'}
0773nobodyさん02/11/10 14:13ID:???
>>771
リファラとはリンク元のこと。掲示板が置いてあるページのURLが返ってくる。
リファラがA.htmだったらA.cssを使い、
B.htmだったらB.cssを使うようにしてみれば、とゆこと。
ブックマークやブラウザの種類によってはリファラが空の場合もあるけど
0774nobodyさん02/11/10 14:47ID:???
>>771
if ($ENV{'HTTP_REFERER'} =~ /a.html/) {
print "<LINK REL=\"stylesheet\" HREF=\"a.css\" TYPE=\"text/css\">";
} else {
print "<LINK REL=\"stylesheet\" HREF=\"b.css\" TYPE=\"text/css\">";
}
0775nobodyさん02/11/10 15:41ID:???
>>774
いかがなものか・・・
0776nobodyさん02/11/10 15:58ID:???
全てのグローバル変数を初期化するにはどうすればいいんでしょうか?
ひとつずつ書くしかないのでしょうか?
0777nobodyさん02/11/10 16:29ID:???
print '777get記念にティンコ袋の毛をソイエで奪毛'
0778nobodyさん02/11/10 16:32ID:???
>>776
実行しなおすと、自動的に初期化される仕様です。
0779nobodyさん02/11/10 16:53ID:???
>>778
mod_perlかspeeycgi使いたいので
前の変数が残ってると変な動きするんで...
0780 ◆hMJAPH9PWA 02/11/10 16:58ID:???
>>779
use strict;して変数はmyで宣言する
0781nobodyさん02/11/10 17:38ID:???
mod_perlの罠 〜 その1
スクリプト全体は一つの大きなサブルーチンとして呼び出されます。
そのため、
0782nobodyさん02/11/10 19:09ID:gP4L1IC3
はじめまして
perlとDBIを使ってoracleデータベースに接続してselect等の結果をHTMLで表示
したいのですが行き詰まってしまいました。

ActivePerlのPPMを使って

ppm
install DBI
ppm
install DBD-oracle

と入力したのですが

install_driver(oracle) failed: Can't load 'C:/usr/local/site/lib/auto/DBD/Oracle
/Oracle.dll' for module DBD::Oracle: load_file:このアプリケーションの実行に必要
なライブラリ ファイルのうちの 1 つが見つかりません。 at C:/usr/local/lib/DynaLoa
der.pm line 206.
Compilation failed in require at (eval 1) line 3.
Perhaps a required shared library or dll isn't installed where expected

上記のようなエラーが出てしまいます。
何が問題なのでしょうか?よろしければご教授お願いします。
078378202/11/10 19:12ID:gP4L1IC3
すいません
ppm
install......
の後oracleデータベースに接続できるようなプログラムを作って
そのプラグラムをコマンドラインから実行すると上記のエラーが出ます
0784nobodyさん02/11/10 23:13ID:???
>>782
oracle.dllがリンクしてるdllが無い。OCIW32.DLLとやら要るんじゃないか?
0785nobodyさん02/11/11 22:36ID:???
すみません、色々資料探したのですが分からなかったので教えてください
Ambiguous call resolved as CORE::exit(), qualify as such or use & at hogehoge.cgi line 975.
っという警告を吐かれて、どうすれば修正できるのかわかりません( ´Д⊂
他の個所でexitとか使ってても警告吐かれないのになんでだろう…

あと、外部設定ファイル(require "setting.cgi")に、色々変数に放り込んで設定が書いてあるんですけど
myとかでローカル変数にしてしまうとmainから読み込めなくて困ってます
かといってmyつけないとガンガン警告吐かれるし( ´Д⊂

すみませんが、解決方を御教授いただきたく思います、お願いします
0786nobodyさん02/11/11 23:21ID:v+DAnj2A
Perl5.8.0(win32)を試してるのですが、eucを読み込んで
内部形式に変換することができません。お助けを・・

use Encode;
$fname = "euc.txt";
open(FILE, "<$fname") or die;
$euc = <FILE>;
close FILE;
$str = decode('euc-jp', $euc);
print $euc."\n".$str;
0787_gunzip ◆eiH/XdoCNg 02/11/12 02:06ID:???
>>785
前者: おんなじパッケージに自分で定義したサブルーチンexitがあるので、exit()と
書かれた場合どちらを呼び出すのか曖昧だけど、組み込みの方を呼ぶことにしたよ、という意味(だいたい)
自分で定義した方を呼び出したければ、前にアンパサンドを付けて&exit()のように呼び出せばいい。
そうでなければCORE::exit()とすれば警告は出ない。
詳しくはuse diagnostice;して調べて。

後者: >Perl5.6 ならばourを用いて宣言する。
それ以外の場合は use vars qw[$foo @bar] とする。
----------------
>>786 v5.8.0(built for i686-linux-thread-multi)では普通に動くよ。
変換できない、とはどのように出来ない?
open my $infile, "<:encoding(euc-jp)", $filename or die $!;
で勝手に変換してくれるし楽になったなぁ。
0788_gunzip ◆eiH/XdoCNg 02/11/12 05:44ID:???
すまん。
>>787では、Encodeモジュールが動かないのだと勝手に勘違いして「動くやん」と書いてしまった。

VC++6でコンパイルしたPerl5.8.0(built for MSWin32-x86-multi-thread)で試してみた。
それで思ったのだが、
use encoding "shiftjis";
とか、
use encoding "utf8", STDOUT => "shiftjis";
とするか、
binmode(STDOUT, ":encoding(shiftjis)");
が必要なのだなぁ。取りあえず報告までに
0789nobodyさん02/11/12 11:29ID:???
mod_perlというのはどのレンタル鯖とかでも組み込まれているものなのでしょうか?
CGI可とかPerl可とか曖昧にしか書いてないところが多いのですが。
0790nobodyさん02/11/12 11:50ID:???
>>789
共用なら普通動きません。
昔、mod_perlを開放して痛い目にあってた鯖屋を知ってます。
079178602/11/12 12:49ID:ucbSPxI8
わざわざ調べてもらってありがとうございます。788さんのを
ヒントに色々やってたらできました。using encode("shiftjis")
で内部の使用形式を変えているのですね。ただ、shiftjisの
問題は解決されていないようでしたので、eucかutf8で処理して
コンソール出力時にshiftjisにするように書くことにしました(汗。
内部形式に変換するにはEncode::decode("euc-jp", $euc)と
書けばできました。ありがとうございました。
0792nobodyさん02/11/12 15:43ID:kFsoQdfX
本当は改造なんですけど、改造工房よりこちら向けかと思ったので。
よろしくおながいします。

掲示板などの書き込み欄で
平仮名だけを入力したい時ってどう書けばいいんでしょうか?
例えばメール欄にアルファベットか数字のみしか入力させたくない場合
if ($in{'email'}){
if ($in{'email'} !~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,3}/){
&error("不正な入力です");
}
}
こんな処理を、平仮名でやりたいんです。
リファレンスサイトで調べても未記入の際のエラーはあっても
「○○以外の入力は不正」とする処理で、平仮名を対象にしたものを
見つける事ができませんでした。
perlはまるっきり分からないので、とんちんかんな事言ってたらすみません。
(自分なりにやってはみたんですが、案の定internet server error...)
0793nobodyさん02/11/12 15:57ID:???
>792
まずはひらがなをどうやって判定するかを考える。
文字コードの勉強からはじめよう。
0794nobodyさん02/11/12 16:02ID:???
>793
正規表現が先では?
0795nobodyさん02/11/12 16:34ID:???
>>785
後半について。その外部設定ファイルの先頭でuse strict; せずに、
package Set;
などとして適当なパッケージにして、mainで参照するときに
$Set::var
などとパッケージ名をつければ読めます。
パッケージに隔離すれば、その中で宣言された変数はグローバルにはならず、
パッケージ変数になりますので安心して使用できます。

079679202/11/12 18:15ID:kFsoQdfX
>>793 >>794
レスありがとうございます。

if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/){
&error(不正な入力です);}
else {
$msg = '';
$errmsg = "不正な入力です\n";
}  }

このようにしてみたところ、ひらがなは入力できるのですが
カタカナや漢字をいれると、エラーメッセージ(不正な入力です)ではなく
Internet server errorになってしまいます。
else以下は、書き込み後の確認画面でメッセージが出せるのでもいいかと思い
見よう見真似でやってみたんですが &error の部分で失敗してるっぽいですね...

平仮名部分は
if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/)
を使うとして、これに加えてカタカナで入力するとエラーが出る風に
書くとするとどう書けばよいのでしょうか。
全角カタカナの文字コードは \x83[\x40-\x96] ですよね?
こっちの方がやりにくいのかな…
0797nobodyさん02/11/12 18:35ID:???
>>796
&error('不正な入力です');

if ($in{'msg'} !~ /\x82[\x9F-\xF1]/ or $in{'msg'} !~ /\x83[\x40-\x96]/)
これではダメなの?
079879202/11/12 19:18ID:kFsoQdfX
>>797さん ありがとうございます
それでやってみたんですが
ファイルを呼び出した時点でinternet server errorになりました...
if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/){
&error(不正な入力です);}
}
だと、平仮名入力なら実行できます。
平仮名以外を入力すると500エラーになります。

平仮名 ならば そのまま実行
平仮名以外 ならば エラーメッセージを出しましょう
……という風にできればベストなんですが。
0799nobodyさん02/11/12 19:39ID:???
>>798
不正な入力です を '' で囲って。
ローカルでテストできる環境があるなら perl -cTw でエラー読んでね。
080078502/11/12 20:06ID:???
>>787
レス有り難うございます、たしかにサブルーチンexitって作りました(藁
でもCOREってなんじゃらほいとかuse diagnostics;ってなんだー、とか
our?use vars qw[$foo @bar]?ってな感じで…
たまに解説サイトででくる$fooとかってなんなんだろう…とか…
貴方の教えを胸に色々調べてがんがってみます、ありがとうございました

>>795
御教授有り難うございます
パッケージ宣言とかして名前空間移しちゃう攻撃とかは思いついたんですが
既に1500行くらい書いちゃって直すの面倒だなぁ、とか思ってる横着な私です(藁

>>792
手持ちの学校の図書室に侵入してコソーリ購入リストに紛れ込ませておいた本に書いてあるんですけど
平仮名は[ぁ-ん]で引っかかるそうな…?
080179202/11/12 20:28ID:kFsoQdfX
>>799
すみません、いじってる方のファイルには " 入れてました。
perl -cTw・・ぐぐってみたのですが分かりませんでした・・・
ローカルテストは出来ない環境なんです

>>800
[ぁ-ん]やってみたんですけど、だめですた。鯖の関係かも?

今気付いたんですが、同じスクリプトのメール不正入力の処理が
こうなってます。同じようにしたいんだけど...
if ($in{'mail'}) {
if ($in{'mail'} =~ /^[\w\.\-]+\@[\w\.\-]+$/) {
$mail = $in{'mail'};
} else {
$mail = '';
$errmsg1 = "■メールアドレスが正しく記入されていませんでした、未記入扱いにさせて頂きます。<BR>\n";
}
}
0802nobodyさん02/11/12 21:27ID:9jFBTK95
コンマで区切られたデータの中のaをbに変えたいのですが、

s/,a,/,b,/g;

とすると/,a,/は大丈夫なんですが/,b,/でエラーになります。
/\,b\,/としてもだめでした。
s/a/b/g;だとよけいなところまで変わっちゃいます。
どう書けばよいのでしょう?
0803nobodyさん02/11/12 21:33ID:???
>>802
それでエラーになるわけない。つーか、aとかbとかじゃなく、元のソース
そのまま見せてみ。
0804nobodyさん02/11/12 22:07ID:???
>802
ちなみにそのやり方だと、,a,a,a,が,b,a,b,にならないか?
080578502/11/12 22:09ID:???
すみません、やっぱどうしても分かりません…
今一度御教授ください、おながいします
色々自分で調べてみて、Perl5.6で実行してる(はず…)ので、ourで宣言しても
Global symbol "$log_dir" requires explicit package name at 2ch.cgi line 1340.
とかガソガソ警告吐かれました( ´Д⊂
use vars qw[$log_dir];と、もう片方の御教授いただいたやり方だと
引っ張ってきた変数に関しては警告吐かれなくなりました… なんでだ…
でも20も30もあるのに全部引っ張ってくるなんてわかりにくすぎー…、と

ちなみにCORE::の方はわかんなかったのでとりあえず呪文みたいなもんだと思っておきます(藁

>>801
-cスイッチ スクリプトの構文チェックだけして終了する(スクリプトを実行しない
-Tスイッチ 汚染チェック(データセキュリティチェック)を有効にする
-wスイッチ 警告を出力する
本よりコピペ   …本にCtrl+Fとかやりたくなったりしません?
080679502/11/12 22:21ID:???
>>800
1500行でpackage分けされていないとは、物凄いコードをつかまされてしまいました
ね。ご愁傷様です。

さて...まずですね、myをつけると、別の変数から移し換えない限り、スコープの外
からは読めません。別のファイルはスコープの外なんで読めません。

従いまして、settingの変数はグローバル変数かパッケージ変数にするしかありませ
ん。よって、settingのuse strict; を外すか、>>787さんが書いているように明示的
なグローバル宣言をしなければなりません。mainでuse strict; していないなら、
シンボルのエクスポート/インポートという手もありますが、名前空間を汚染するの
で、グローバル変数にするのと何ら変わりません。

名前空間を汚染しないようにするには、おそらく私の書いた方法しかないはずです。

納期が迫っているなど、修羅場な場合は、settingをmainの先頭にべちょっと貼りつ
けるという手もあります(これならmyでも読めます)が、非推奨です。
080779502/11/12 22:26ID:???
ああ、そういえば、ourのスコープはレキシカル(myと一緒)なんですね。つまり、
スコープの外では参照できません。
例えば、同じサブルーチンを何回も通る時に、前の値を記憶しておいて使いまわし
たい時とかに使います。
私も過去に誤解して苦しんだ経験があるのを忘れていましたよ。ヤレヤレ。
0808nobodyさん02/11/12 22:34ID:???
>792
>&error の部分で失敗してるっぽいですね...
&error でコケてるの?
コケてるのが &error なのか正規表現なのかの切り分けが先では?
080978502/11/12 22:59ID:???
>>806-807
つかまされたと言うかなんというか…
すみません本から得た付け焼き刃の知識なので効率とか可読性とかその他モロモロダメダメです( ´Д⊂
いまだにどういう記述をしたらのちのち楽できるかとか分かってないリアルに初心者なもので…
えと、スコープってまだよくわかんないんですけどスコープ≒個別の名前空間みたいな認識でいいのでしょうか(汗
あと、use strict;の方はmainの方でしてますです、そのあとにsetting.cgiの方を引っ張ってくる、とゆー流れです
えーと、それでourで宣言してもレキシカル(?)で局地的だよ、>>787さんの言ってたuse vars略で
引っ張ってくる、と言う手もあるけど名前空間が汚染される(意図しない変更が加えられる?)ので
よろしくない、パッケージにしちゃった方がよい、という意味だと思ってよいのでしょうか…

…がんがります
0810nobodyさん02/11/13 00:57ID:???
スコープは変数の有効範囲だよーん。
0811nobodyさん02/11/13 09:43ID:4S21F8gN
PerlでDBMを使って掲示板を試しに作ってみたのですが、
これってDBMによる恩恵はあるんでしょうか?
とりあえず勉強目的で作ってみたのですが。。。
081279502/11/13 11:35ID:???
>>809
まぁまぁ。慌てない慌てない。マターリと落ちついていきましょうや。
my変数のスコープは、宣言してあるところを囲んでいる一番内側のブロック、
サブルーチン、ファイル、eval(これは分からなくてもいい)です。
よって、setting.cgiというファイルの外は、「スコープの外」になりますので参照
不可能です。
グローバル変数のスコープはありません。どこからでも参照できて変更できる、
地獄への片道切符です。package Pak; と指定することによって、package宣言のス
コープ(これはmy変数と同じです)の範囲に書いてあるグローバル変数が、パッケージ
変数となります。だから、ファイルの先頭でpackage Pak; とやると、そのファイル
に書いてあるグローバル変数すべてが、Pakに属するパッケージ変数になります。

要するに、スコープとネームスペースは別ものです。
パッケージ変数はグローバル変数の一種ですが、レキシカル変数(my)はそれらとは別
ものです。
081379502/11/13 11:48ID:???
>>809
それで、our宣言した変数のスコープはmyと同じですから、settingの外では参照不可能
です。our => グローバルではありません。
main で use strict; しているということですから、settingから変数を読む仕様に
なっていると、それはグローバル変数なので(myだと読めませんよ)、警告が出ます。
use vars qw(var ...)は、use strict; した時にグローバル変数を使うぞ、と宣言する
ものですから、これをやっておけば警告は出ません。しかしながら、これをやると
いうことは、setting を main の先頭に書いているのと同じことになります。つまり
setting で使ったシンボル(変数とかの名前)だけ、mainのネームスペースが汚染され
ることになります。ネームスペース汚染の恐ろしさは、exitの件でお分かりでしょう。

以上の理由からパッケージ分けをおすすめしているわけです。
というか、納期が迫っているんでなければ、settingをクラス化、そこで宣言されて
いる変数をクラスのメンバにしてアクセスメソッドを実装してそれでアクセスする
ようにし、ついでにmainでそれらのデータをいじくっている部分をクラスに放り込む
といったことをするといいんじゃないかと思います。
0814nobodyさん02/11/13 11:49ID:???
>>811
そんなのは主観の問題で、コメントのしようがないね。
081579202/11/13 15:51ID:???
>792 >798 >801 です

結局、別の項目の処理で出るエラーページを流用する事にして
(不正な入力の項目があります、平仮名にしてくださいと一文足して)
こうなりました
if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/){
&error1();}
}

レス下さった方々ありがとうございました。
081678502/11/13 18:41ID:???
>>810
ありがとうございます 本とかネットとかもそーゆーふーに簡潔に書いてもらいたいもんです(藁

>>812-813
毎度親切にありがとうございます( ´Д⊂ がんがります
スコープは>>810さんともあわせて分かったような気がします
今までもmyで宣言した変数が使える範囲はなんとなく分かってたんですけど、それがスコープだったのですね
んで、パッケージ内でグローバル変数っぽく振る舞ってるヤシがパッケージ変数、と…
スコープと名前空間は別物だということも多分わかりました

ourで宣言した変数の扱いのほうも自分なりに調べてみますた
tp://books-support.softbank.co.jp/pn/special04-1.html
↑のより、"宣言した時の名前空間に所属する変数だけど同じスコープ内だったら別の名前空間のトコでも明示しなくても扱えるよ"
て感じなのですかね?

また、名前空間の汚染の方のお教えも、大体分かった気がします
(´-`).。oO( いまだに名前空間の汚染、というののハッキリした意味が分かっていないのですけれども(藁 )
とりあえずスクリプト全体を見直しながら、設定ファイルの方をパッケージにして書き直してみようと思います
最後の4行は全然分かりませんでしたが( ´Д⊂ オブジェクト指向…? 勉強不足です…

ちなみに工房の道楽(不真面目にやってるわけでもないですけど)ですので納期とかはありません(藁
(´-`).。oO( 大人は大変なんだろうなぁ… 現在BlackBookのPerl&CGI言語リファレンス読んでます 今までに読んだ3冊とはレベルが…(トオイメ )
0817nobodyさん02/11/14 22:14ID:???
年は関係無い、つーか慣れ
MFCガリガリ弄ってるリア厨も居る訳だから
分かった気になったもん勝ち
081878502/11/14 23:15ID:???
いや、だって納期とか言われたもんですから…(藁
工房だもーん、会社勤めなんかしてないもーん、と
つーか分かった"気になった"もん勝ちですか(藁

とりあえず本読み終わって>>813で御教授いただいたヤツの最後4行もほんのりとわかりますた
でもそういう管理の仕方にする利点がいまだにわかりません(藁
あとクラスとかの宣言がどうとか、とかも(藁
perlobjの日本語化されたヤツとか探して彷徨ったり、と( ´ー`)y-~~

(´-`).。oO( 正直もうごちゃごちゃしちゃって大変ですたい )
0819nobodyさん02/11/14 23:45ID:WsA3gc/p
フリーの掲示板を使っている者ですが、
フリーの掲示板をカスタマイズするコトすらままならない者です。
バカなわたくしめに御教授お願いします。
※HTMLタグは分かります。
わたしがダウンロードした掲示板はタグ禁止タイプです。
しかし、メッセージ・フォーム($body)に「http://」で始まる文字列には<a href="">でリンクを
はりたいのですが、どうしたらよいのでしょうか。
すみませんがよろしくお願いします。
0820nobodyさん02/11/15 00:21ID:???
$body =~ s|(http://[\w.%?/=&]+)|<a href="\1">\1</a>|;
0821nobodyさん02/11/15 00:34ID:???
$body =~ s|(http://[-\w.%?/=&~]+)|<a href="$1">$1</a>|g;
082282002/11/15 01:11ID:???
>>821
補完サンクス
0823nobodyさん02/11/15 09:01ID:Vx/BDeum
こんにちは。
今CGIの猛勉強中なのですが、分らない事があったので教えてください。
「-=」 マイナスイコール
この演算子は、どういう意味のものなのでしょうか?
そもそも演算子なのでしょうか;;
検索を書けても-=ではヒットせず、色々調べてみても情報が見当たりませんでした。
知ってる方、是非教えてください〜〜。
0824nobodyさん02/11/15 09:31ID:???
>>823
$hoge -= 10;   $hoge = $hoge - 10;
$hoge += 10;   $hoge = $hoge + 10;
$hoge *= 10;   $hoge = $hoge * 10;
$hoge /= 10;   $hoge = $hoge / 10;
ほとんどのプログラム言語で使える
0825 02/11/15 09:39ID:???
初心者はここへ行ってシェアウェアもタダでゲット!!
http://216.127.90.232/scripts.html
0826nobodyさん02/11/15 10:02ID:???
>>824
なるほどっ、少し深読しすぎてしまったようです。
有難うございます!
0827nobodyさん02/11/15 10:16ID:???
>>821
s/(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/<A HREF="$1">$1<\/A>/g;
が略解。
by perlメモ
0828nobodyさん02/11/15 11:03ID:???
(´・ω・`)FORMのデコード処理の定石みたいなのあるデショウカ…
0829nobodyさん02/11/15 13:41ID:???
(´・ω・`)
0830nobodyさん02/11/15 15:26ID:???
(´・w・`)
0831 ◆hMJAPH9PWA 02/11/15 15:47ID:???
>>828
あるよ。CGI.pm
0832nobodyさん02/11/15 16:13ID:???
(´・ω・`)CGI.pm……CGI.pm? ? ?
0833nobodyさん02/11/15 16:32ID:???
>>832
荒らすんならrubyのスレでやってくださいよ。
0834nobodyさん02/11/15 17:14ID:???
print <<"(´・ω・`)ショボーン";
829と830は僕じゃないデスヨ。そして書くのにルールがあるのをいま知りますた。
初心者コーナー、よしここだ! ズザー!! て感じで書いてしまいますた。反省。

1、Perlのおべんきょに一つ掲示板でも、と(`・ω・´)
2、とりあえずフォームから何か入力して表示させて見よう
3、
まだまだ右も左もわからないので、他所様のソースをじろじろ見ながらまずはデコード、と思ったわけですが。
人によって色々と違ったり何かしてみちゃったりしてよく分からなくて。
お約束事?みたいなのはあるようなのでつが…そこでーデコードと言えば、まあ普通こう書くよ。
みたいなのはあるのかなぁ、とか思った次第であります!(`・ω・´)

CGI.pmは調べて舐めたり触ったり眺めたりしますたが、よく分かりませんでした(´・ω・`)
(´・ω・`)ショボーン
0835nobodyさん02/11/15 17:20ID:???
んじゃ
cgi-lib.pl
0836nobodyさん02/11/15 18:01ID:???
tp://yaino.com/gzudoc2/0001/000004.html
0837nobodyさん02/11/15 18:55ID:???
すみません、Perlで円周率を参照するにはどうすれば?
0838(* ・ω・)萌えー02/11/15 19:08ID:???
http://3.141592653589793238462643383279502884197169399375105820974944592.jp/
0839rubyist@カラアゲうまうま02/11/15 20:30ID:???
Math::Complexのpi使うだけでいいのに。
まあ、君たちのような低学歴どもは円周率3でいいんじゃない?
(大爆笑)
0840rubyist@カラアゲうまうま02/11/15 20:37ID:???
この板の住人は専卒ばっか
0841nobodyさん02/11/15 21:04ID:???
質問なのですが、現在時刻-60秒と、当該ファイルの最終更新日時を比較したいんですけど
if(time-60 >= (stat('比較するファイル.txt'))[9]){
とゆーやり方はやっぱ無理がありますか?
0842nobodyさん02/11/15 21:12ID:Mv79oNNw
>>841
それで出来たんならいいんじゃねーの?
0843nobodyさん02/11/15 21:43ID:???
質問させてください。

<input type=text name=$hoge>

というテキストボックスに数字を入力してもらい、
その数の回数、$hogeに対する処理を行いたいのです。
たとえば、$hogeをブラウザに出力するとして、

$cou=$form{"$hoge"};
for($i=0; $i<$cou+1; $i++)
{print "$hoge";}

で良いだろうと思いサンプルを作ってテストしてみましたが、
エラーこそ出ないものの{print "$hoge";}の処理を行ってくれません。
何か悪いところがあったらご指摘いただけますでしょうか。
よろしくお願いします。
0844nobodyさん02/11/15 21:48ID:???
>>843
name属性に文字$を用いる必然性と、
use CGI;
my $query = CGI->new();
$query->param("hoge");
とやらない理由を補足せよ。
084584302/11/15 22:40ID:???
>>844
すみません、説明が足りませんでした。

<input type=text name=$hoge>

の$hogeですが、事前に外部ファイルから読み込んだデータを
任意の検索条件によって抽出した文字列が入るようになっています。
商品番号のようなものだと思っていただければ良いかと思います。

後者の方ですが、純粋に当方の勉強不足により
矢印演算子の用法に自信が無いというのでは駄目でしょうか。
844さんの挙げた例も、リファレンス片手に解読を試みましたが
今ひとつピンと来ておりません。

いかにも初心者の書いたループ文でお恥ずかしい限りですが
よろしくお願いします。
0846nobodyさん02/11/15 22:57ID:???
$form{$hoge}の中身はちゃんと確認した?
0847nobodyさん02/11/15 23:45ID:R8gc4u8S
申し遅れました。820, 821さんどうもありがとうございます。<(_ _)>
初心者にも入らないおヴァカなわたしに御教授下さいまして。
勇気出して投稿してヨカッタ。。。
0848(* ・ω・)萌えー02/11/16 00:46ID:???
$cou = $form{'%24hoge'};
0849nobodyさん02/11/16 00:53ID:???
(; ・ω・)オォ・・

フォームの name をURLデコードしてないなら、$hoge の $ は %24 でおくられてくるからネ。
もしや name=$hoge の $hoge がそのまま Perl のスカラー変数として扱われると勘違いしてたりして・・?(んなことないか ・ω・;)
0850nobodyさん02/11/16 12:12ID:???
(; ・ω・)
■ このスレッドは過去ログ倉庫に格納されています