トップページphp
329コメント113KB

Perl コーディング初心者質問コーナー Part27

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/08/14 06:06ID:xOc/6R60
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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

関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
0320nobodyさん03/08/21 12:36ID:DAq1ln5w
#=============================================================================
# クッキー書き込み
# &cookie_regist(クッキー名, データ, 日数);
# ・クッキー名 ⇒ クッキーの名称、半角英数字
# ・データ ⇒ キー!値,キー!値,キー!値 の書式で整えられたデータ
# ・日数 ⇒ 保存しておく日数(ただし、sessionと入力すると、
#  セッションクッキーとなる(ブラウザを閉じたらクッキーは削除される)
# ★注!:キー値に「!と=と;は使わないこと」
#例文:
#&cookie_regist("session","sessionid!246",1/24);
#-----------------------------------------------------------------------------
sub cookie_regist(){
local($cookiename, $cookievalue, $cookiedate) = @_;


($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime(time + 60*60*24* $cookiedate );
@mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$date_gmt = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",
$week[$wday], $mday, $mons[$mon], $year+1900, $hour, $min, $sec);
if ($cookiedate ne "session"){
print "Set-Cookie: $cookiename=$cookievalue; expires=$date_gmt\n";
} else{
print "Set-Cookie: $cookiename=$cookievalue\n";
}
}
という関数をつくったのですが、(長いので次のレスに続きます)
032132003/08/21 12:38ID:DAq1ln5w
すいません、タブを全角スペースにするの忘れたので見づらいので、書き直します。
#=============================================================================
# クッキー書き込み
# &cookie_regist(クッキー名, データ, 日数);
# ・クッキー名 ⇒ クッキーの名称、半角英数字
# ・データ ⇒ キー!値,キー!値,キー!値 の書式で整えられたデータ
# ・日数 ⇒ 保存しておく日数(ただし、sessionと入力すると、
#  セッションクッキーとなる(ブラウザを閉じたらクッキーは削除される)
# ★注!:キー値に「!と=と;は使わないこと」
#例文:
#&cookie_regist("session","sessionid!246",1/24);
#-----------------------------------------------------------------------------
sub cookie_regist(){
    local($cookiename, $cookievalue, $cookiedate) = @_;
    

     ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime(time + 60*60*24* $cookiedate );
    @mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
    $date_gmt = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",
     $week[$wday], $mday, $mons[$mon], $year+1900, $hour, $min, $sec);
    if ($cookiedate ne "session"){
        print "Set-Cookie: $cookiename=$cookievalue; expires=$date_gmt\n";
    } else{
        print "Set-Cookie: $cookiename=$cookievalue\n";
    }
}
という関数をつくったのですが、(長いので次のレスに続きます)
032232003/08/21 12:41ID:DAq1ln5w
&cookie_regist("hoge_session","hoge_sessionid!".$in{cust_code},180);
みたいにしてクッキーをセットすると、
ネスケでは、180日有効なクッキーがセットされるのですが、
IEだと、セッションクッキー(ブラウザを閉じると削除されるクッキー)に
なってしまいます。

どこがおかしいのでしょうか?
032332003/08/21 13:29ID:???
すいません、自己レス。いつのまにか、
@mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
のあとの
@week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
を消してしまっていたことが原因でした。

しかし、ネスケでexpireを強引に認識してくれて、IEだと無視されるとは・・・
(逆なら納得いくんだが)

ともかく解決しました。すみません。
0324nobodyさん03/08/21 15:29ID:pPohBqhp
PHPの質問で数値の表示方法についての質問なんですが、数値の計算で
例えば
10×1.05 をやると 10.5
になるのですがこれの小数点以下を切り捨てたいのですが、どうすれ
ば良 いのでしょう。number_format関数を使えば小数点以下の修正が
行なえるというのは知っているのですが、number_format関数を使うと
1000などの数値の時、1,000となり","(カンマ)が表示されてしまい、数
値として認識しなくなってしまいます。
この計算の後にもさらに計算をしたいので、数値として認識させなけれ
ばならないので、こまっています。
どうぞご指導をよろしくおねがいします。
0325nobodyさん03/08/21 15:32ID:???
>>324
ここPerlだしPHPよく知らんけど、

$formated_number と $number と別にすればいいんでないの?
0326nobodyさん03/08/21 15:34ID:???
なんでPHPの質問板でしないの?
floatだっけか忘れた。
0327nobodyさん03/08/21 15:42ID:pPohBqhp
ごめんなさい。間違えました!
※ちなみに$numberと$formated_numberを使ってみたところfatal error
になっちゃいました。
すみません。迷惑かけました。ありがとうございました。
0328nobodyさん03/08/21 17:56ID:DAq1ln5w
"私は39歳のオヤジで2人の子供がいます。"
という文字列に対して、全角数字を半角数字に置換したいのですが、
どうすればいいのでしょうか?
(文字列も、スクリプト自体も、文字コードはEUCです)
0329nobodyさん04/03/26 19:55ID:???
タイムスリップ記念
■ このスレッドは過去ログ倉庫に格納されています