Perl コーディング初心者質問コーナー Part33
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/03/01 02:46ID:1GeWO7LH【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0578nobodyさん
04/03/18 11:46ID:DQQyLTpV($num, undef, undef, undef) = split...
でもok
0579nobodyさん
04/03/18 12:39ID:???ご親切に有難うございます。
$mail = (split(/\t/,$temp))[2];
($num, undef, undef, undef) = split...
どちらも便利そうな使い方なので、よく覚えておきます。
0581nobodyさん
04/03/18 14:01ID:???0582nobodyさん
04/03/18 14:05ID:???0583nobodyさん
04/03/18 14:43ID:???こ こ ま で 春
--------------------------
0585nobodyさん
04/03/18 16:36ID:imQmJK7bプププププ
0586nobodyさん
04/03/18 19:10ID:LItTEfZFプププププヴァーカ
0587nobodyさん
04/03/18 20:03ID:msXg0fxAプゲラゲラッチョ( ´,_ゝ`)
0588nobodyさん
04/03/18 20:57ID:???0589nobodyさん
04/03/18 21:09ID:???splitの第3引数をきちんと設定すると余計な処理が減るからサーバーに優しい。
数が明確なら第3引数をしっかり渡す事を勧める。
0590nobodyさん
04/03/18 21:17ID:???>余計な処理が減るから
すまん、解説キボンヌ。
$mail = (split(/\t/,$temp))[2];
(undef, undef, $mail, undef) = split(/\t/,$temp);
これでも下のコードのほうがいいってこと?
0591nobodyさん
04/03/18 21:25ID:???なんのこっちゃ。
$mail = (split(/\t/, $temp, 4))[2];
の様にすれば良いってだけかと。
第三引数に最大分割数を指定できるって話ね。
0592577
04/03/18 21:26ID:???> これでも下のコードのほうがいいってこと?
splitの第三引数、って言ってるじゃん
$mail = (split(/\t/,$temp,4))[2];
(undef, undef, $mail, undef) = split(/\t/,$temp,4);
だよ
分けるのは四つだ、と明示できるなら明示せよ、ということ
0593nobodyさん
04/03/18 21:26ID:???第「3」引数。
$mail = (split(/\t/,$temp,4))[2];
こうすると、splitは4分割で処理を終了する。
全ての場合で早くなるとは限らないが、ほぼ全ての状況で早くなる。
まぁ>574みたいに確実に行の戦闘にあるなら、substringとindex使った方が速いんだろうが。
0594nobodyさん
04/03/18 21:36ID:???0595nobodyさん
04/03/18 21:42ID:???my $str = "number\tname\tmail\ttext";
timethese(1000000,{'TEST1'=>'&test1($str);','TEST2'=>'&test2($str);','TEST3'=>'&test3($str);','TEST4'=>'&test4($str);','TEST5'=>'&test5($str);','TEST6'=>'&test6($str);', });
sub test1{
my $str = shift;
my ($number,$name,$mail,$text) = split(/\t/,$str);
}
sub test2{
my $str = shift;
my ($number,undef) = split(/\t/,$str,2);
}
sub test3{
my $str = shift;
my $number = (split(/\t/,$temp,2))[0];
}
sub test4{
my $str = shift;
my $number = substr($str,0,index($str,"\t"));
}
sub test5{
my $str = shift;
$str =~ /^([^\t]+)/;
my $number = $str;
}
sub test6{
my $str = shift;
$str =~ /^(.*?)\t/;
my $number = $str;
}
0596nobodyさん
04/03/18 21:42ID:???TEST1: 3 wallclock secs ( 3.00 usr + 0.00 sys = 3.00 CPU) @ 332889.48/s (n=1000000)
TEST2: 4 wallclock secs ( 2.46 usr + 0.00 sys = 2.46 CPU) @ 406008.93/s (n=1000000)
TEST3: 3 wallclock secs ( 2.54 usr + 0.00 sys = 2.54 CPU) @ 393236.34/s (n=1000000)
TEST4: 2 wallclock secs ( 2.30 usr + 0.00 sys = 2.30 CPU) @ 434216.24/s (n=1000000)
TEST5: 1 wallclock secs ( 2.01 usr + 0.00 sys = 2.01 CPU) @ 496770.99/s (n=1000000)
TEST6: 1 wallclock secs ( 1.93 usr + 0.00 sys = 1.93 CPU) @ 517063.08/s (n=1000000)
正規表現も使い方次第で速くなるのな。
0597nobodyさん
04/03/18 22:25ID:???今自分がやっているのはログをsplitで分割するだけなので、
「この行を全部タブがある部分で区切れ」よりも、
一行に存在するタブで区切られたデータの個数はわかっているので、
「この行にはタブで区切られたデータが4つあるから4つに区切れ」というように、
指定可能ならばsplitの第三引数を渡した方がいいということですね。
0598nobodyさん
04/03/18 22:47ID:???貴殿には「詳説 正規表現 (オライリー)」を薦める
0600nobodyさん
04/03/18 22:52ID:???そのままhoge.txtにprintするのって危ないですか?
ファイル名は time() の値にする予定です。
0602nobodyさん
04/03/18 23:34ID:???フォームから入力した文字列をjcode.plでsjisに変換したものを
$text として、
$file = time().'.txt';
open(FILE, ">$file") || error('open error');
print FILE $text;
close(FILE);
とする予定です。
ファイル名を決める部分を'.html'にするとブラクラやウイルスなどの危険性があるので
'.txt'としたのですが、'.txt'にしてもやはりウイルスなどの危険性があるのでしょうか。
0603nobodyさん
04/03/18 23:40ID:v217X1kZ0604nobodyさん
04/03/18 23:45ID:???0605nobodyさん
04/03/18 23:47ID:???サニタイズの話なのか、ファイル名の話なのか。
HTMLを解釈するブラウザでそのまま開くつもりなら、
<と>を実体参照に置き換えるのが手軽。
コーディング方法としては単純で、単純にs///で置き換えれば良い。
ファイル名なんてのはそんなの好きにすれば良いと思うってかここで聞く事じゃない。
拡張子なんてどうでも良い。ファイルの中身が問題だろう。
#質問内容とは違うけどtime()だと同時投稿されるとファイル名が被るという問題が
公開しない、自分が読むためだけのコメント投稿フォームでも作ってるのか?
0607nobodyさん
04/03/18 23:58ID:???HTMLタグが含まれるだけで、HTMLとして表示してくれるよ。
0608nobodyさん
04/03/18 23:59ID:???テキスト投稿CGIを作ろうとしています。
投稿者がテキストを投稿したら、time().txtで保存、
同時にindex.htmlにテキストへのリンクを付け足す、という流れです。
普通の掲示板の場合<と>の置換をしていたのですが、
txtの場合実体参照などがそのまま>などと表示されるので、
置換作業は一切行わないことにしました。
ですが、やはりtxtを表示するのもブラウザである以上、
悪意を持った何者かが何か細工すればブラクラ程度に機能してしまうのでは、
と不安になり質問しました。
0609nobodyさん
04/03/19 00:11ID:???ということはブラクラなどを仕込もうと思えば幾らでも仕込めちゃうってことですね……。
なんとかhtmlで保存してみます。
#なかなか書き込めない…´Д`ナジェディス
0610nobodyさん
04/03/19 01:04ID:koDF+TRW郵便番号の - を除くプログラムが出てきますた
$_ = "123-1234";
s/(\d\d\d)-?(\d\d\d\d)/$1$2/;
?の意味って何ですか?
?がなくとも同じ結果が得られると思うのですが。
0613nobodyさん
04/03/19 03:57ID:KxdLBMtCサンクス
0614nobodyさん
04/03/19 08:52ID:???0615nobodyさん
04/03/19 13:29ID:3UeG122v検索結果を表示するときに、Googleみたく検索キーワードを強調表示し、
さらにその前後の文字列を含めて切り抜いているのを実装したいのですが、
どのようにすればよいでしょうか。
たとえば、
「私はりんごが好きで、あなたはみかんが好きで、二人はバナナが好きです」
を「りんご バナナ」で検索した際、検索結果には
「私は<em>りんご</em>が好きで、あ...で、二人は<em>バナナ</em>が好きです」
という感じにしたいです。前後五文字を切り抜いています。
これだけならなんとかなりそうですが、「あなた みかん」で検索したときに
「...が好きで、<em>あなた</em>は<em>みかん</em>が好きで、二...」というように
切り抜き範囲に別なキーワードがさらに見つかった場合などを考えるといい方法が浮かびません。
0616615
04/03/19 13:36ID:???検索して見つかった文章は$textに入っていて、検索キーワードは@keywordsに配列で入っています。
foreach $keyword(@keywords){
$text =~ s/(.*)($keyword)(.*)/substr($1,-10)<em>$2<\/em>substr($1,10)/eg;
}
こんな感じのを考えていましたが、いろんな場合を考えるとイマイチなのは先ほど書いたとおりです。
0617nobodyさん
04/03/19 14:32ID:???ここはコーディングスレ。
>「...が好きで、<em>あなた</em>は<em>みかん</em>が好きで、二...」
これの何がイヤなのか知らんが、どうしたいか仕様ぐらい考えてから来い。
0618615
04/03/19 15:37ID:???すいません、イヤなんじゃなく、むしろそうしたいんです・・・。
基本的には、前5文字. <em>キーワード</em>. 後5文字 で切り抜く。
ひとつの文章内で複数ヒットしたら、切り抜きを「...」で結ぶ。
複数ヒットしたキーワードが切り抜き幅以内の近距離にあった場合は
まとめて前後5文字で切り抜く
さらに、文頭や文末だったら「...」はつけないとかいう気配りも欲しいです。
自分で作ったのは
$preview = $text;
foreach $keyword(@keywords){
$preview =~ s/($keyword)/<em>$1<\/em>/g;
}
$preview =~ s/([^>]*)(<em>.*?<\/em>)([^<]*)/"...". substr($1, -30). $2. substr($3, 0, 30). "..."/eg;
それっぽいだけで、これではあちこち不備があるようです。
文章内で複数ヒットしたときにキーワードより前が切り抜かれなかったりしてます。
0619nobodyさん
04/03/19 16:16ID:???「アルゴリズム+データ構造=プログラミング」という古い格言に従って、
コードを書く前にまずどういうアルゴリズムで実現するか考えてみるべきだろう。
一例だが、以下のようなアルゴリズムが考えられる。
1. ヒットした文字列の部分にマークをつける
2. その前後5文字にもマークをつける
3. 非マーク部分を削除しつつ、マーク/非マークの境界に "..." を挿入
これをコードに落とすときはどうするかと言うと、
配列をマーク用に用意し、文字と配列要素を1対1に対応させて、
キーワードの出現位置を index で検出し、その前後の配列要素を1にして、
全部検出終わったら、次は配列を前から舐めてって1のところと0のところを…
みたいな感じ。
0620615
04/03/19 17:14ID:???行数制限に引っかかるので省略記法で書いてます。
あとは半角文字が含まれた場合の対応と、この強引なコーディングをもう少しスマートにしたいです。
ポイントをご教授いただければ幸いです。
$preview = ''; $pos = 0; $flg = 0; # 変数初期化
$mark[$_] = 0 for(0..length($text)); # マーク初期化
# マーク付け
foreach $keyword(@keywords){
while(1){
$markPos = index($text, $keyword, $pos); # キーワード出現位置取得
if(0 <= $markPos){
$mark[$_] = 1 for(($markPos - 10)..($markPos + length($keyword) - 1 + 10));
$pos = $markPos + 1;
}else{
last;
}
}
}
# マーク判別して $preview 生成
for(0..length($text)){
if(($flg == 0) && ($mark[$_] == 1)){ $flg = 1; }
if(($flg == 1) && ($mark[$_] == 0)){ $flg = 2; }
if(($flg == 2) && ($mark[$_] == 1)){ $flg = 0; $preview .= "...";}
$preview .= substr($text, $_, 1) if($mark[$_]);
}
# キーワードの強調
foreach $keyword(@keywords){
$preview =~ s/($keyword)/<em>$1<\/em>/g;
}
0621nobodyさん
04/03/19 17:16ID:???キーワードに<em></em>を付けた後、
</em>(もしくは文頭)〜<em>(もしくは文末)の〜が11文字以上あった場合間を...に置換、
ではどうだろうか?
0622615
04/03/19 17:40ID:???書いてみたら意外に難しかったです。
しかも正しく動いてないっぽい・・・。
</em>(5文字) .* (5文字)<em> のところがうまくいったりいかなかったり
( ... にならずそのまま出る)です。
$preview = $text;
# キーワードの強調
foreach $keyword(@keywords){
$preview =~ s/($keyword)/<em>$1<\/em>/g;
}
if($preview =~ /^(.+?)<em>/){
if(10 < length($1)){
$preview =~ s/^.+?(.{10})(<em>)(.*)$/\.\.\.$1$2$3/;
}
}
if($preview =~ /<\/em>(.+?)$/){
if(10 < length($1)){
$preview =~ s/^(.*)(<\/em>)(.{10}).+$/$1$2$3\.\.\./;
}
}
if($preview =~ /<\/em>(.+?)<em>/){
if(20 < length($1)){
$preview =~ s/(<\/em>.{10}).*?(.{10}<em>)/$1\.\.\.$2/;
}
}
0623nobodyさん
04/03/19 19:34ID:???$diary{"order"} = "nm";
$diary{"order"} =~ s/$writer//e;
この様なスクリプトを書きました。
ローカルで実行すると
$diary{"order"} = "m";
と意図した動作をしたのですが,サーバにアップするとこのような動作をしません。
これは何でなのでしょうか
0624623
04/03/19 19:37ID:???$diary{"order"} = "mmn";
となります
0626621
04/03/19 22:20ID:???$previewに特定の文字(以下では\0)が含まれていない事が条件だが、
こんな感じでどうだろう?
foreach $keyword(@keywords){
$preview =~ s/($keyword)/<\0>$1<\/\0>/g;
}
$preview =~ s/(<\/\0>[^\0]{10}|^)[^\0]+?([^\0]{10}<\0>|$)/$1\.\.\.$2/g;
$preview =~ s/\0/em/g;
0627623
04/03/19 23:28ID:???多分これが原因ですね…
ありがとうございました
0628nobodyさん
04/03/20 10:10ID:pZHNeEFdメールアドレスがある場合はNAMEにリンクさせて、ない場合はリンクが発生しないということをしたいのですが…
if (($MAIL ne "") && ($NAME ne "")) { print "<b>:<a href=mailto:$MAIL>$NAME</a>:</b>\n";
}elsif (($MAIL ne "") && ($NAME eq "")) { print "<b>:<a href=mailto:$MAIL>nobodyさん</a>:</b>\n";
}elsif (($MAIL eq "") && ($NAME ne "")) { print "<b>:$NAME:</b>\n";
}elsif (($MAIL eq "") && ($NAME eq "")) { print "<b>:nobodyさん:</b>\n";
}
↑では上手くいきません。
MAILを入力しようとしまいとmailto:でリンクされます。
NAMEはしっかり分岐して動いてます。
どのように修正したらいいんでしょうか?
0629nobodyさん
04/03/20 10:25ID:???$MAILの中身が本当に空っぽかどうかをしっかり確認するべき。
あと、こうした方が見やすいぞ。
if($NAME eq ""){$NAME = "nobodyさん";}
if ($MAIL ne "" ) { print "<b>:<a href=mailto:$MAIL>$NAME</a>:</b>\n"; }
else { print "<b>:$NAME:</b>\n"; }
0632nobodyさん
04/03/20 13:19ID:Y1bzghLT配列と配列をつなぎ合わせるにはどうしたらよいでしょうか?
@array1 = (1,2,3);
@array2 = (4,5,6);
例えばこの配列の操作に関してなのですが
@array1 = (1,2,3,4,5,6);
と言う様にしたいのです。pushを使えば@array1 = (1,2,3,[4,5,6]);
となってしまいますし、foreach (@array2) { push (@array1,$_)}のように
すればいいと思うのですが、同様に操作したい配列が後に@array3 @array4...
と続いているのでもう少しスマートな方法でしたいと思っております。
joinか何かでできたような気がするのですが方法を見つけることができませんでした。
よろしければアドバイス頂けないでしょうか?
0633nobodyさん
04/03/20 13:34ID:???print "Content-type: text/html\n\n";print <<"EOF";
<HTML><HEAD><TITLE></TITLE></HEAD><BODY>
EOF
# データ入れて試して。
$MAIL = "";$NAME = "";
if ($MAIL ne "") {
if ($NAME ne "") {
print "<b>:<a href=mailto:$MAIL>$NAME</a>:</b>\n";
} else {
print "<b>:<a href=mailto:$MAIL>nobodyさん</a>:</b>\n";
}
} else {
if ($NAME ne "") {
print "<b>:$NAME:</b>\n";
} else {
print "<b>:nobodyさん:</b>\n";
}
}
print <<"EOF";
</BODY></HTML>
EOF
これなら動いたが。全部をelsifにするのはイクナイ。MAILが空の場合と値がある場合でifはわかりやすく2つ置こう。
0634nobodyさん
04/03/20 13:35ID:???これ消し忘れ。スマソ。
0637nobodyさん
04/03/20 18:17ID:???>pushを使えば@array1 = (1,2,3,[4,5,6]);
……そんなんなるかなあ。
リファレンス見たら、第二引数は配列でいいことになってるぞ。
push @array1, @array2;
他にもあるんなら、
push @array1, ( @array2, @array3, @array4 ... );
でいいんじゃねえか。
push @array1, [@array2];
とか、
push @array1, \@array2;
とか変なことやってんじゃねえのか?
もしくは、@array2自体におかしな代入しているとか。
0638nobodyさん
04/03/20 20:29ID:bXEf4bM+以下のようなスクリプトだと、何も print してくれません。
--------------------------------
use strict;
my %hash = (
name1 => 'hoge',
name2 => 'fuga'
);
for my $key ( keys %hash ) {
$main::{$key} = $hash{$key};
}
print $main::name1;
exit;
--------------------------------
更にできれば $main::name1 ではなく $name1 で取得したいんですが、
perl 5.6 以下なんで our も使えません。(perl 5 です)
どうすればいいのでしょうか???
0639nobodyさん
04/03/20 21:05ID:???>$main::{$key} = $hash{$key};
>print $main::name1;
なにをやってるのかよく考えて見れ。
>更にできれば $main::name1 ではなく $name1 で取得したいんですが、
これもめっちゃイミフ。
0640639
04/03/20 21:07ID:???>何も print してくれません。
俺のperlではちゃんとエラーメッセージをprintしてくれたけど。
Name "main::name1" used only once: possible typo at - line 9.
Use of uninitialized value in print at - line 9.
0641638
04/03/20 21:11ID:bXEf4bM+すんません。。。
分かりにくかったですね。 m(_ _)m
------------------
my %hash = (
name1 => 'hoge',
name2 => 'fuga'
);
------------------
というハッシュから、
------------------
my $name1 = 'hoge';
my $name2 = 'fuga';
------------------
という変数定義をしたいって意味です。
use strict なしでは、
------------------
for my $key ( keys %hash ) {
${$key} = $hash{$key};
}
print $name1;
------------------
とやると、ちゃんと 'hoge' が print されてたんですが、
use strict した場合に同じことをする方法が思い当たらなかったので。。。
0642nobodyさん
04/03/20 21:12ID:???シンボリックリファレンス。
strictな記述ではスカラー変数の自動生成出来ない。
あと、ourがサポートされてるperlでもシンボリックに対してourは認識されない(と思った記憶)
0643nobodyさん
04/03/20 21:15ID:???そんな設計が駄目設計だという事に気付け。
0644639
04/03/20 21:18ID:???strictした時はおそらく自動生成出来ないと思われ。
no strictすれば?
あと、俺もあまりそれ良い設計とは思えない。
0645638
04/03/20 21:21ID:???変数の自動生成が出来ないとは知りませんでした。。
ご指摘有難うございます。
>>643
ダメ設計かどうかもわからなかったです。。(初心者丸出しだ…
もっと勉強します。
変数の動的生成は個人的に結構使いそうだと思っていたんですが、
普通にperl自体では避けた方がいいのでしょうか???
0646nobodyさん
04/03/20 21:22ID:???http://www.perldoc.com/perl5.005_03/lib/strict.html
ループ括弧内で、no strict "refs";使うしか。
どんな変数を展開するか知らないけど、
外部から入力された値をmainパッケージで展開するとなると、
セキュリティホールになるかも。
(PHPのregister_globals問題と同じ。)
0647638
04/03/20 21:25ID:???CGIで、フォームからのクエリを %form に入れて、
%form のキーから変数を自動生成しようと思ってました。
素直に
my $name1 = $form{name1};
とするしかないですよね。。(汗
0648nobodyさん
04/03/20 21:26ID:???>普通にperl自体では避けた方がいいのでしょうか???
普通は同じ事が出来て、見やすくて、記述が綺麗になって、速度も速い方法が他に用意されてるから。
それと、ハッシュのまま使うのが一番柔軟で使いやすくもある。スカラーにしたい理由が見つからない。
0651648
04/03/20 21:36ID:???長い変数名書きたくないって理由だったらお断りだよ。
ただ、キミがちゃんとことごとく局所化する記述書けてるなら、
sub age{
my $age = $form{'age'}; #この関数ではこの値を使う。
#処理
}
みたいな記述はお勧めできる
0652nobodyさん
04/03/20 21:40ID:???フォームからのクエリを %form に取得した後に、
スカラー変数を自動生成して、
スクリプトの記述量($form{})を減らしたかったのが主な理由です。
0654648
04/03/20 21:44ID:???減らさんくて良し。
スカラーにしたら汚くなる&処理の柔軟さを捨てるだけだから。
どーしても自動生成したいなら、>>646のヤツ使うよろし。
誉められた記述じゃないけど、自動生成の中ではそれが一番マシ。
0655638
04/03/20 21:46ID:???今までは
my $name1 = $form{name1};
my $name2 = $form{name2};
…
と記述していたところを、
もっと簡単に定義できないかというのが今回の発端でした。
651さん、、親切に有難うございました。。。
0656nobodyさん
04/03/20 21:52ID:???後で見たとき間違いなく意味不明になるが。
0658未承諾広告※ ◆TWARamEjuA
04/03/20 23:34ID:???0660nobodyさん
04/03/21 02:34ID:???$type eq 'A' or $type eq 'B' or $type eq 'C' or $type eq 'D';
上記の記述なんですが、もうちょい短くならないでしょうか?
$typeと4回書かれているのはなんか俺の感性に反するんですが…。
それだけの理由です。
0661nobodyさん
04/03/21 02:39ID:???感性よりも知識を付けろハゲ
0662660
04/03/21 02:52ID:???scalar grep {$type eq $_} (A, B, C, D);
コスト高いけどこれで(・∀・)
0663nobodyさん
04/03/21 02:55ID:???0664660
04/03/21 02:58ID:???ありが�d。
0665628
04/03/21 11:31ID:???動きますた(=゚ω゚)ノ
他の方々も貴重な情報さんくすこでした(*´Д`)ハァハァ
0666nobodyさん
04/03/21 11:36ID:???何度もチェックする、チェック対象が複雑、などの場合はハッシュを使ってチェックするのが最速。
my %valid_types = map{ $_ => 1 } qw(A B C D foo bar baz);
if($valid_types{ $type }){
# ...
}
0667nobodyさん
04/03/21 15:06ID:???C#の方がいいじゃん。
0670nobodyさん
04/03/21 19:39ID:Bb+Pz/Rr簡単なCGI(例えばHello World等)でテストを行いましたが、エラーの解決法がよくわかりません。
UTF-8(Unicode)以外の文字コードにするとプログラムは正常に動きます。
PerlではUTF-8は一応サポートされていて実際使っている方もいるようですが、
何かうまくいくコツなどありましたらどうかご指南ください。
0672nobodyさん
04/03/21 20:08ID:???「ぱーる」って読むのか「ぴーる」って読むのかわかりにくいってんだろ。
「しーしゃーぷ」は見たまんまだもんな。
0673T.K
04/03/21 20:55ID:???$key に name1 が、 $valに中身があるとして
クエリを分解して読み込むときに
${$key} = $val;
ってやってforeachでループさせれば君のやりたいことはできるよ。
実は俺も長くなるからそうやってたんだけど
やっぱあとあと大変だということがわかった。
PHPに乗り換えようとしたときも変数の取り扱いがちょっと違うだけで
違和感感じてなじめなかった。
おとなしく$form{}でやってたほうがよいよ。
0674nobodyさん
04/03/21 20:56ID:???しーどんぶり、じゃねえの?
0675nobodyさん
04/03/21 21:10ID:???url は うるる、
ってのは、もはや常識ですね
0676T.K
04/03/21 22:36ID:???■ このスレッドは過去ログ倉庫に格納されています