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

Perlコーディング初心者質問スレ Part 51

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/07/27(木) 17:04:23ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0028nobodyさん2006/07/27(木) 23:47:50ID:???
>>27
>@a = hoge::escape_h(@a);
>%a = hoge::escape_h(%a);
この2つの区別はつかないよ。
他のは大丈夫だけど。
リファレンスの区別は ref を使う。
0029272006/07/27(木) 23:51:33ID:???
>>28
やっぱりさすがにハッシュと配列の区別なんて無理ですよね。
同じですもんね。

スカラーか配列かはどうすればいいですか?
やっぱり@_の要素数が1か複数かで見るのでしょうか?
0030152006/07/27(木) 23:57:33ID:???
>>18>>22
バッチリできました!
ありがとうございました!
でも、next unless /文字列1/ .. /文字列2/;
の動きが分からずじまい。
ファイルハンドルで1行ずつ読み込んでnextをかけて行くのに
なぜ複数行に渡っても処理ができてるのか不思議です。
たぶん条件式をきちんと解釈できてないんだろうなぁ。
こんな式初めて見るので。
暇な方居ましたら、解説してやって下さい。
0031nobodyさん2006/07/27(木) 23:58:58ID:???
eval 使って、$a[1] を強制的に読み込みを試行してエラーが帰ってきたなら
スカラー、読み取れたなら配列。
ちょっと強引過ぎる気もしますが・・・
0032nobodyさん2006/07/28(金) 00:12:00ID:???
> >@a = hoge::escape_h(@a);
> >%a = hoge::escape_h(%a);
> この2つの区別はつかないよ。

デマですね。
0033nobodyさん2006/07/28(金) 00:47:28ID:???
>992 名前:nobodyさん[] 投稿日:2006/07/27(木) 09:50:11 ID:1uzwaimq
>trust::error_print() if $form{test} =~ /\D|\d{2}/;
穴は防げてるよ。どういう意味かにもよるけど
/^\d$/ or trust::error_print();
とか!~とかunlessの方がわかりやすかったりしない?

>>29
@_はループでリファレンスは再帰って形になるんじゃないかな
sub escape {
 my @vals = @_;
 for(@vals){
  if(ref eq "ARRAY"){ # このへんをelsifで
   $_ = [ escape(@$_) ];
  }else{
   $_ = エスケープ処理($_);
  }
 }
 wantarray ? @vals : $vals[0];
}
0034nobodyさん2006/07/28(金) 01:23:03ID:???
>>32
はいはい。コーディングしてみろよ。
0035nobodyさん2006/07/28(金) 01:26:20ID:???
>>30
範囲演算子をスカラーコンテキストで使うと、内部状態を内包したスイッチのように振舞うよ。
ちょうど最近みかけた解説。
ttp://d.hatena.ne.jp/palmo/20060724/rangeop
0036nobodyさん2006/07/28(金) 08:36:07ID:???
>>20
もう解決したっぽいからどーでもいいんだけど、例えば、
{
open 略;
local $/ = "[00001]";
<FH>; # [00001] までのは捨てる
$/ = "[00002]";
my $log = <FH>; # [00001] の次 〜 [00002] まで取る
close (FH);
}
で 「情報A 情報B」 が取れないかな?
0037nobodyさん2006/07/28(金) 10:40:17ID:asi0sNZ0
open FH,"test.csv";
while (<FH>){...}
色々な処理
close FH;

色々他にもループ処理をしていまして、無限にならないようにちょこちょこ防止コードを
入れています。
それでtest.csvの行数が$form{get}に足らない場合にもエラー終了したいのですが。

my @test = <FH>;

ということをしたくありません。
scalar <FH>やlength <FH>
とやればいけると思ったのですが、一行目が取り出されてしまいます。
まあ配列じゃなくてあくまで行演算子?なので当然といえば当然ですが。

何かいい智恵はありませんでしょうか?
0038nobodyさん2006/07/28(金) 10:48:11ID:???
カウンタを用意すればいいだけかと思う
0039372006/07/28(金) 11:25:15ID:asi0sNZ0
>>38
いや一行で、イチイチ変数に読み込まずとか・・
scalar @test;
くらい簡潔にいけないかと思ってました。
でもむりなようですので配列に読み込むことでもうあきらめました。

連続ですいませんが他の疑問がありますのでお願いします。
http://perldoc.jp/docs/modules/Text-CVS_XS-0.23/Text-CVS_XS-0.23.pod
このモジュールをcsvファイルを扱う時にいつも使ってます。
my $csv = new Text::CSV_XS({ binary => 1 , "always_quote" => 1});
これでやってます。

$form{value} =~ s/\n/\t/g;
悲しいことにいつもこれやってます。このモジュールは改行文字をクォートしてくれないのですよね。
自分で読んでもどうも改行文字は自分で痴漢する以外にないと思うのですが、
中途半端な自分の勘違いなのかもしれないので詳しい人お願いいたします。
0040nobodyさん2006/07/28(金) 11:46:38ID:???
>>27
プロトタイプ使ってリファレンス受け取るサブルーチンにすれば
呼び出し側では字面上はスカラー/配列/ハッシュをそのまま
渡しているように書ける。あとはrefで何のリファレンスか調べる
ことができるのでなんとでもなるだろう。


% cat cat foo.pl
cat: cat: No such file or directory
sub foo (\[$@%]) {
my($x) = @_;

printf "ref(\$x)=%s\n", ref($x);
}

my $x = 'scalar a';
my @x = ('array', 'a');
my %x = (hash => 'a');

foo($x);
foo(@x);
foo(%x);

% perl foo.pl
ref($x)=SCALAR
ref($x)=ARRAY
ref($x)=HASH
0041nobodyさん2006/07/28(金) 11:56:20ID:???
>>40
それだとリファレンスを渡した時に
一度デリファレンスして調べないといけないね
0042nobodyさん2006/07/28(金) 12:20:45ID:???
cgiってどんどん書き換えていきますよね。
ちょっともう自分で全ての把握をするのが難しくなってしまいました。

local.libっていうライブラリに色々作ってあるんですが、
その中にsub slash_printfer{}というものがあります。
そのサブルーチンの名前をsub slash{}に変えたいのです。

でもそのサブルーチンを使ってるページを全て書き直すのは骨が折れます。
というか100以上のファイルをなんてやりたくないですし。
置換ソフトでやっても最終的には全てのファイルの動作チェックを入れないといけなくなっちゃいますのでキツイです。

二つの名前を持つサブルーチンは作れませんか?
sub slash or slash_printfer{}
みたいにしてどちらで呼ばれてもこのサブルーチンが動くというような。
0043nobodyさん2006/07/28(金) 12:22:48ID:???
ちなみに
sub slash_printferが呼び出されたらslashを呼んでslashからの返りを受けて
呼び出し元に返すといったやりかたは断固として拒否します。
0044nobodyさん2006/07/28(金) 12:31:11ID:???
> sub slash_printferが呼び出されたらslashを呼んでslashからの返りを受けて
逆ならいいべ。
sub slash{
  return slash_printfer();
}
つかそもそも
> そのサブルーチンの名前をsub slash{}に変えたいのです。
と。
0045nobodyさん2006/07/28(金) 12:31:49ID:???
最後の行だけに反応。

my $hoge = my $foo = sub () { print 'hage' . "¥n" ; } ;
$hoge->() ;
$foo->() ;

local *hoe = local *moe = sub () { print 'moeeeee' . "¥n" ; } ;
&hoe ;
&moe ;

0046nobodyさん2006/07/28(金) 12:42:56ID:???
レスは断固として拒否します
0047422006/07/28(金) 13:02:54ID:???
>>44
参りました^^;
なんか笑ったら疲れが少しだけ抜けたかも・・・軽く感動した。
0048nobodyさん2006/07/28(金) 13:23:00ID:???
>>37
ループしながらread()で読んで、改行を数える手も。

>>42
>>45も出してるけど、型グロブもあるよ。
use strict;
use vars qw(*slash);

local *slash = \&slash_printfer;
slash();
exit;

sub slash_printfer {
print "printfer!\n";
}
0049nobodyさん2006/07/28(金) 14:30:26ID:???
>>48
うちも型グロブ使う・・・
local にするのはなんか意味があるのん?
0050nobodyさん2006/07/28(金) 14:52:36ID:???
>>49
myにして実行すればわかる。
0051nobodyさん2006/07/28(金) 15:06:23ID:???
>>50
いや my にはしないけどさ、グローバル変数が一番上なとこで local にする意味あるのかなと。
0052nobodyさん2006/07/28(金) 16:49:40ID:???
>>51
変数を最初に使うとき、宣言を必ず行うという癖。
意味は保守性を上げるぐらいだと思う。
0053nobodyさん2006/07/28(金) 16:52:16ID:???
localは宣言なのかという疑問が...
0054nobodyさん2006/07/28(金) 16:57:19ID:???
そういえばすぐ上でuse varsかけてるからlocalしなおしてるのは謎。
0055nobodyさん2006/07/28(金) 17:04:08ID:???
癖かよwww じゃあまあいいやw
0056nobodyさん2006/07/28(金) 17:41:39ID:???
>>53
表現変ですか?
どのように表現するのかご教示お願いします。

# local()だけを指すなら演算子だけどさ。

>>54-55
トップレベルで宣言はしないもの?
スタイルが違いすぎるかなぁ。
0057nobodyさん2006/07/28(金) 17:48:13ID:???
トップレベルでの local は意味あるのかなあ?、って感じ。
いくつかモジュール見たけど、そういう風に書いてるのみたことなかったもんで。
まああってもなくても問題ないからどうでもいいかw

use vars qw(*slash); ← これも別になくても通るよね。
0058nobodyさん2006/07/28(金) 17:54:13ID:???
どっかにrequireして使うかもしれないならグローバルのスコープでも
myなり何なりしておくのはよさげ。
0059nobodyさん2006/07/28(金) 17:55:59ID:???
型グロブだから全部要らないじゃんってことですね。
はい、その通りです。
0060nobodyさん2006/07/28(金) 18:00:29ID:???
>>58 言いたいことは分かるけど、ちょっと流れを読んでくれ(笑)
0061nobodyさん2006/07/28(金) 18:04:01ID:???
そもそもライブラリの中身なのかorz
0062nobodyさん2006/07/28(金) 20:58:31ID:???
>>35
初めて知った。
使い方によっては便利そうだねぇ。
0063nobodyさん2006/07/29(土) 23:54:33ID:???
local が宣言でないというのは use strict してみりゃわかります。
local は既存の変数の値だけを一時的に差し替えて利用するためのアレですから。
0064nobodyさん2006/07/30(日) 08:37:54ID:kTzF8iv+
key %hash
この配列のキーはqw/1 2 3 4 5.../のようになってます。
でもqw/1 3 4 5 6 10.../のようにトビトビになってる場合もあります。

key %hashのキーを参照して、まだ存在してないキーの中から一番数字が若いものが(0以下除外)
いくつになるかを調べるにはどうすればいいでしょうか?

forとexistsを使う方法を自分で考えましたが、ちょっとforを使いたくありません。
0065nobodyさん2006/07/30(日) 09:19:54ID:???
>>64
$key = (sort { $a <=> $b } grep ($_ > 0, keys %hash))[0];
0066nobodyさん2006/07/30(日) 09:21:13ID:???
って存在してないキーか ('A`) 全然違った
0067nobodyさん2006/07/30(日) 09:37:19ID:???
Keyの範囲を仮定できるならバイナリーサーチ
0068642006/07/30(日) 09:37:20ID:kTzF8iv+
for使っちゃいました。m(__)m
>>65
せっかくなのにすいません。
普通に安全なforだったことに気付いたのでいいやってことで。

変わりに別の質問がしたいのですが、CGIで一番面倒なことはエスケープだと最近思うのですが。
チャット、掲示板、〜ファイル、〜ファイル、〜ファイル・・・・
何をやるにも表示の時にはエスケープ。
書き込む前には内容のチェック。

mysqlを思い出しまして。まあmysqlを使うほどではないときの法が多くて。
でもそんな時に例えば相手が送ってきた文字列のデータ型が何かをチェックしてくれるボジュールとかあれbなと。

@form{qw/name count ip address tel memo time/};
これら全て自分で毎度「これには何が入っていてはいけなくて・・・」とか書くのがめんどうってことです。
妄想モジュールのオブジェクト->data型(数字のみ,@form{qw/count tel time/})
みたいにするとチェックできるとか。数字のみであるかどうかをチェックみたいな。
0069672006/07/30(日) 09:39:53ID:???
俺、全然ダメじゃん。寝る。
0070nobodyさん2006/07/30(日) 09:52:10ID:???
>>68
Data::FormValidator
0071nobodyさん2006/07/30(日) 09:53:02ID:???
>>64
すでに解決したかもしれんが。

my $ret = 0;
$ret = ++$_ while exists $hash{$ret};
0072nobodyさん2006/07/30(日) 09:57:59ID:???
>>64
こういう処理で for とか while とかのループ使わないって条件だったらひどいことになるなーw
grep でやろうと考えたけど煩雑でやめた。
0073nobodyさん2006/07/30(日) 09:59:34ID:???
my $test = \@test{qw/a b c d/};
こうすると$testの中にリファレンスが入るけどどうもスカラー型なんだよね。それも$test{d}の中身が入る。
my $test = [@test{qw/a b c d/}];
こうすればちゃんと配列リファレンスではいる。

どういう理屈だろこれ。
0074nobodyさん2006/07/30(日) 10:01:25ID:???
>>69
いやいや。もう朝だよ・・・頑張れよ。遊びに行こうぜ!
0075nobodyさん2006/07/30(日) 10:03:43ID:???
>>73
前者は、

my $test = \( @test{qw/a b c d/} );

になるんじゃないかな。
my $val = ( list ... );
で最後の値が代入される。

後者は無名配列へのリファレンス。
0076732006/07/30(日) 10:15:01ID:???
>>75
なるほど〜。
でも
\@testは\(@test)解釈されないのを聞くのは・・・無粋だよね。
そういう仕様なんだもんね。

タンキウス!
0077nobodyさん2006/07/30(日) 10:26:02ID:rQ64iO4Q
1:計算機を作りたい


すいません3つあるんですが
$a = 3/4; という例で・・
1.分数の分子と分母をそれぞれ取り出す方法はありますか?
  $?? = 3; $?? = 4; みたいに・・・

2.分数の逆数を求める方法はありますか?
  $?? = 4/3: みたいに・・・

3.分子を1にして通分する方法はありますか?
  $a = 3/4; $?? = 1/1.3333・・・
0078nobodyさん2006/07/30(日) 10:37:17ID:???
>>77
$a = 3/4; の ”3/4” は文字列なの?
0079nobodyさん2006/07/30(日) 10:58:53ID:???
>>76
お前がリストと配列の違いを理解できてないことのどこが無粋?

>>77
前スレより条件減ってるけどそんなんでいいの?
>1.(2/3)*(2/3) の解を 4/9 にするにはどうすればいいですか?
0080nobodyさん2006/07/30(日) 13:28:14ID:???
>>77
use bigrat;   # or use Math::BigRat;

$a = 3/4;   # or $a = Math::BigRat->new(3/4);
my($n, $d) = $a->as_parts();   # 1. 分母分子の取り出し
$i = 1/$a;   # 2. 逆数

3. だけ分からん。自分で考えてくれ。
BigRatでは、分母を小数にはできないかも。

ちなみに (2/3)*(2/3) を 4/9 にするには
use bigrat;
print 2/3 * 2/3;
0081nobodyさん2006/07/30(日) 14:15:52ID:???
多分正規表現についてのことだと思いますが、
ifを使って文字列の中にaとbとcがあったときに真を返すようにするにはどうすればよいのでしょうか。
例えば「crab」とか、「arabic」とかなら真を返す、見たいな感じです。
0082nobodyさん2006/07/30(日) 14:23:24ID:???
遲レス。
>>64,>>72
my @data = sort { $a <=> $b } keys %hash ;
( join ',', @data ) =~ /(¥d+),(?!(??{$1 + 1}))/;
print $1 + 1 , "¥n" ;
# sort は使わざるを得ない。

>>81
if ( $str =~ /a/ and $str =~/b/ and $str =~/c/ ) { print 'true' . "¥n" ; }
0083nobodyさん2006/07/30(日) 14:54:10ID:???
>>82
�dです!できますた!
0084nobodyさん2006/07/30(日) 18:27:52ID:???
>>82
正規表現の選択肢はなかったわ。さすが。
0085nobodyさん2006/07/30(日) 19:12:17ID:???
>>80
自己レス
すまん、分母分子の切り出しだけメソッド名間違ってた。
my($n, $d) = $a->parts();
0086nobodyさん2006/07/30(日) 19:20:45ID:NH/5yRqc
初歩的な事を質問しますが
ダブルクォート文字列で&を表示させたいのですが
どうすれば良いのでしょうか?
何度やってもエラーが出てしまいます。
0087nobodyさん2006/07/30(日) 19:24:21ID:???
print "¥&";
0088nobodyさん2006/07/30(日) 19:26:36ID:???
print "&";
でも問題なく表示されるなぁ。何が違うんだろう。
0089nobodyさん2006/07/30(日) 19:37:55ID:???
日記スクリプトでRSS出力するのを自分用に弄っているのですが



$RSS_ITEM_URI = "http://www.google.com/url?sa=D";."\&"."q=".
$RSS_SCRIPT_URI."?DT=".$dateY.$dateM.$dateD.$dateSUB."#".$dateY.$dateM.$dateD.$dateSUB;

では、どうもエラーが出てしまいました。


$RSS_ITEM_URI = "http://www.google.com/url?sa=D";."\x?"."q=".
$RSS_SCRIPT_URI."?DT=".$dateY.$dateM.$dateD.$dateSUB."#".$dateY.$dateM.$dateD.$dateSUB;
こういう感じの事も試してみたのですが上手く行きませんでした。
0090nobodyさん2006/07/30(日) 19:44:14ID:???
>>89
そのエラーを書いてくれ。
&じゃなくて &amp; にしたら?
0091nobodyさん2006/07/30(日) 19:52:11ID:???
&amp;
で無事行けました!
xhtmlでは&amp; なのですね…(汗) 勉強なりました。
0092nobodyさん2006/07/30(日) 21:33:25ID:???
HTMLでも正式には &amp; と書かなきゃいけない。

HTML は人による閲覧が主だから多少間違ってても読み手が補完するだろう
と IE なり NN なり FF が適当に表示してくれるだけ。
XML だとそれが通用しない。
0093nobodyさん2006/07/30(日) 22:42:51ID:???
>>92
◎Fx
×FF
0094nobodyさん2006/07/31(月) 00:56:13ID:yxBpgbMa
if ($hoge ne ""){$hogeが無いぉ}
と
if (!$hoge){$hogeが無いぉ}
ってどっちがいい?
0095nobodyさん2006/07/31(月) 01:18:45ID:???
>>94
casebycase
ってか下で迷うのは if ($hoge) じゃないのかよw

if ($hoge ne "") ← これは $hoge が undef のときに警告がでる
if ($hoge) ← これは $hoge が "0" のときにも FALSE になるのが注意
0096nobodyさん2006/07/31(月) 02:15:40ID:???
>>94
どっちもSyntax Error
0097nobodyさん2006/07/31(月) 02:33:59ID:???
>>95-96
・・・
0098nobodyさん2006/07/31(月) 07:17:33ID:YjkkI8MZ
perlで作られた変数名から自動でhtmlを生成させるには
どうすればよろしいの?

記事の投稿があったその都度に、その内容で新規HTMLを生成するスクリプトを考えてます
0099nobodyさん2006/07/31(月) 08:59:40ID:???
>>63
うん、まぁ、とりあえず、perldocではdeclaration(宣言)と書かれてしまっているんだ。
(5.8ではmyとourしか扱ってないから、古いperldocをあたってくれ。)
0100nobodyさん2006/07/31(月) 10:49:13ID:???
http://b.hatena.ne.jp/entry/http://blog.poyo.jp/archives.php/categ-1/year-2006/month-7/id-1154062309

2006年07月31日 elf 気づいてるのかな.mixi.pne.pjは本当にmixi.jpからファイルをmixiからコピーしてるんですよ? 他とはレベルが違う
(2006-07-31T09:45:59+09:00)
0101nobodyさん2006/07/31(月) 10:50:52ID:???
誤爆すみません
0102nobodyさん2006/07/31(月) 11:17:46ID:???
>>98
何を言ってるのか分からない。
(変数名).htmlというファイルを作りたいのか、
変数名を反映させた内容のhtmlファイルを作りたいのか、
>記事の投稿があったその都度に、その内容で新規HTMLを生成するスクリプトを考えてます
コレなんかは単に掲示板の出力をファイルにすればイイだけでは・・?
0103nobodyさん2006/07/31(月) 11:20:43ID:???
>>94
趣味の範囲の話しだけど
$hogeにはいる値の候補が文字列なら$hoge ne""とした方が読みやすいと思う。
0104nobodyさん2006/07/31(月) 11:29:14ID:???
$hoge ne '' と !$hoge では$hogeが"0"のとき挙動違うし。
0105nobodyさん2006/07/31(月) 11:35:59ID:???
http://www.rfs.jp/sb/perl/05/goto.html

なんかラベルなんていらねって書いてあるけど、CGIでは結構使いところあるけどなぁ。
初めから設計通りに作るとかじゃなく、その場その場でどんどん機能が追加されていく場合に
数行処理をふっ飛ばしたいとか、多分多くの人がifとか$error = 1とかでやるところも
gotoでもっと簡単にできるのにって思った。

詳しい人にすっごい突っ込まれそう。
怖いがちょっと突っ込まれてみたいかも
0106nobodyさん2006/07/31(月) 11:37:47ID:???
>>104
というか、数値が入ったり文字列が入ったりするような変数があるコードは設計がおかしい。
そして、数値が入ってるか文字列が入ってるか分からないような状態でif文にかけるようなコードは
明らかに設計がおかしい。

http://pc8.2ch.net/test/read.cgi/tech/1153312202/
0107nobodyさん2006/07/31(月) 11:39:46ID:???
Perlだしなあ
0108nobodyさん2006/07/31(月) 11:40:34ID:???
>>106
'0'という文字1文字の文字列もあるだろ。
0109nobodyさん2006/07/31(月) 11:42:32ID:???
>>105
>数行処理をふっ飛ばしたいとか、多分多くの人がifとか$error = 1とかでやるところも
たぶんそういうところは関数定義で何とかする
0110nobodyさん2006/07/31(月) 11:55:33ID:???
if(0ne''){print 2}
if('0'ne''){print 3}
if(0){print 5}
if('0'){print 7}
>>23
01111052006/07/31(月) 11:58:13ID:???
>>109
そこらへんがスリコミなんですかね。
目的も知らずに、「テーブルレイアウトはダメだ」と言うのに近い。

実際自分もgoto使うの気が引ける。
でもね。それで目的が果たせるのになぜ気が引けるのか。
で、スリコミだなぁって。

いやいや、スリコミじゃないだろって否定してもらいたいってのもあるんですけど。
0112nobodyさん2006/07/31(月) 12:24:48ID:???
すいません、今掲示板に確認画面を加える改造をしているのですが、
少々疑問があったため、質問させていただきます。

「投稿フォーム → 確認画面」 に行くとき、改行等を

$value =~ s/\r\n/<br>/g;
$value =~ s/\r/<br>/g;
$value =~ s/\n/<br>/g;

で、デコードするんですが、

もし「投稿フォーム → 確認画面 → 投稿フォーム」 にと、戻ったとき改行は

$hoge =~ s/<br>/\n/ig;

で、処理してよろしいのでしょうか?ちょっと自信がありません・・・。
0113nobodyさん2006/07/31(月) 12:25:40ID:???
>>110
キンパルの蛙の大合唱に見えて仕方ない
0114nobodyさん2006/07/31(月) 12:30:33ID:???
>>112
エスケープちゃんとしてるか?
タグを埋め込まれてアボーンしても知らないよ?

んでな。普通はHTML表示部分のところだけ<br>と置換するが、
その置換結果を別の変数に入れるんだよ。大本をなくしたら困る時も出てくるからね。

<修正点があるので修正をする>とかのボタンで前のページに飛ばす時は
input type="hidden"1"に置換してない方の文字列を埋め込むのよ。
でもその時もエスケープは必要だから。

とりあえず動作確認してみなさい。
できないならローカル環境整えなさ稲。
0115nobodyさん2006/07/31(月) 12:32:00ID:???
input type=hiddenに埋め込む時はURIエスケープね。
確認画面で相手が書き込んだ内容を相手に見せる時はHTMLエスケープね。
ダレラ
0116nobodyさん2006/07/31(月) 12:32:31ID:???
gotoは判ってる奴が必要なときに使うのはいいんだが、判ってない奴がめちゃくちゃに
使うと手に負えないから表では使用禁止といっとくぐらいがちょうどいい。
0117nobodyさん2006/07/31(月) 12:35:40ID:???
例外処理にはErrorなんてモジュールがあるけどこれはどうなんだろ
0118nobodyさん2006/07/31(月) 13:09:04ID:oRCGT1rh
use CGI;
use Time::Local;

&timelocal(・・・


先日まで問題なく動いてたんですが、本日使用しているPGM全てで
落ちるようになりました。

とりあえず回避するコードを書いたんですが、原因って何がかんがえられますか?

0119nobodyさん2006/07/31(月) 13:30:54ID:???
>>118
パーミッションは?
とりあえずエラーログだせよ。
わかるわけねえだろボケ。

>>117
何がじゃ
0120nobodyさん2006/07/31(月) 13:32:35ID:???
>>118
原因ねえ。おまいの頭が悪いってあたりが一番怪しいんじゃないか?
とりあえずそこらへんから検討してみてはいかが?
0121nobodyさん2006/07/31(月) 13:36:06ID:???
>>118カワイソスw
プログラム変えてないのに挙動が変わったのなら鯖側でしょ
0122nobodyさん2006/07/31(月) 13:41:15ID:???
エラーメッセージも晒さずに聞いてわかるわけねーじゃん。
0123nobodyさん2006/07/31(月) 13:46:29ID:???
そういやビッグロブ、鯖変更メンテした時にフルパスが変わってたな。アナウンス無しに。
画像掲示板の画像が出なくなって驚いた記憶がある。
0124nobodyさん2006/07/31(月) 15:22:42ID:???
>>123
残酷にも程がアル
0125nobodyさん2006/07/31(月) 15:50:18ID:???
>>123
絶対パスは$ENV{DOCUMENT_ROOT}から取得したらいいよ。
後、バッククォート演算子でpwdしたり、Cwdモジュールで取得したりするのもいいかも
0126nobodyさん2006/07/31(月) 16:00:06ID:???
>>115
うそやん(´・ω・`)
hidden で %ef%80%80 とか書くと普通に % が %25 になるお。
0127982006/07/31(月) 16:45:36ID:YjkkI8MZ
>>102
レスありがとうございます。
スマソです。
(変数名).htmlのファイルを生成したいのです。
ひな形としての.htmlファイルは予め用意されていてるけど、
内容の一部も変数を反映させるけどこれはなんとかなりそうなんです。

最初はrenameを使うのかと思ったんですけど、これだとダメですね。
0128nobodyさん2006/07/31(月) 17:12:27ID:???
Webporgとは違うんですが、Perlでソケット通信についての質問はどこでしたらいいんでしょうか?
通信技術はハードよりの話題みたいなので・・・
■ このスレッドは過去ログ倉庫に格納されています