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

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

■ このスレッドは過去ログ倉庫に格納されています
0001前スレの連投で気分崩したので後よろ04/04/05 16:01ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0514nobodyさん04/05/04 19:55ID:???
      おまえらのせいでエラーばっかだぜえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
0515nobodyさん04/05/04 19:56ID:???
      おまえらのせいでエラーばっかだぜえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
0516nobodyさん04/05/04 19:57ID:???
     エラーばっか出す、嘘ばっか教えんじゃねえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
0517nobodyさん04/05/04 19:58ID:???
                   ,....':::::::::::::゙=:::::、
                 /::::::::::::::::::::::::::::::::゙:、
.                /:::::::::::::::::::,r-:::::::::::::::::゙::、
..               ,l':::::::::::::::::::/-〃゙゙''''''゙\:::::::゙、
                l:::::::::::::::::::,l' ll'l    ゙l;:::::::l,
               ,;:::::::::::::::::::l  .ll.l..    l:::::::::l
              ,ィ:::::::::::::,r-- '''''--=-'l''=-''り::::l
             〃::::::::::::::l'   ゙ - ' ;. l゙ - ' l::::::l   ここのスレには…
             ソ::::::::::::::::l     , ア__,.l,.('' .t:::::j'
.             l::rk:::::::::::::゙l   ,..'゙-、=-:,.゙ t ゙レ   書き込まないで…ほしいです…
             ゝj:::::::,、::::::゙、  ; -==ヲ'弋''''{ ゙l,
            ,.-'::;==' ノ::::::::>'~::::゙=、_,l,.;'゙^'''゙l. ゙、
         ....,.=''   ,,〃'ヘ:::/:::::::::::::::::゙l爪.     l,
        ,.r'',:,:,:,:,:,^~",:,:,:,:,:,:,:7'''',=';,''''ヘ:ノ爻゙、   ,.=''-、
        k,:,\、,:,:,:,:,:,:,:,:,:,l,:,:,:,:/ (ふ勺 ,''l' j::l ゙l,-='',:,:,:,:,:,:゙、
       ,l',:,:,:,:゙、,:,:,:,:,:,:,:,:l,:,:,:,:l---===,,'.j^~:::l ,-゙,:,:,:,:,:,:,:,:,:,:,゙、
       /,:,:,:,:,:,:,゙、,:,:,:,:,:,:j,:,:,:,:,:l l':::::゙ュ), l.,' ;::;,/,:,:,:,:,:,:,:,:,:,:,:,:,:,:,ヘ
      j,:,:,:,:,:,:,:,:,:,゙、,:,:,:,:,l,:,:,:,:,:,k:::::::ヒ_l .;:::ll,:,:,:,:,:,:,l,:,:,:,:,:,:,:,:,:,:,ハ
      ,l,:,:,:,:,:,:,:,:,:,:,:,z,:,:,:,l,:,.,. '^.、::_:j':::::::::::::::::::l,:,:,:,:,:,:,:\,:,:,:,:,:,:,:,:,:,:,\
051851204/05/04 19:58ID:???
ハーン
おじさんマジ切れますよ?I/Oの関数みろYO!!!

@stat=stat $file;
$size=$stat[7];

if(104857600<=$size) print "100MBより多いぞゴルァ";
0519nobodyさん04/05/04 19:59ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
0520nobodyさん04/05/04 20:01ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
0521nobodyさん04/05/04 20:02ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
0522nobodyさん04/05/04 20:02ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
0523nobodyさん04/05/04 20:03ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
0524nobodyさん04/05/04 20:05ID:???
592 名前: nobodyさん [] 投稿日:03/08/07 16:03 ID:MNjVgF7U
ゲームで、対戦で、攻撃はパンチとキック、どちらかは2分の1
パンチの場合は、5回に1回はダメージ低い。
さらに5分の2の確率でミスをする。

というのを、1ターンの各攻撃を下のスクリプトに書いたが動かない
誰かこの初心者を助けてください
0525ちょっと入れ子して綺麗にしてみた04/05/04 20:11ID:???
593 名前: nobodyさん [] 投稿日:03/08/07 16:03 ID:MNjVgF7U
プレイヤー1は$play11の攻撃
プレイヤー2は$play22の攻撃

$play11 = $sentaku1   //Syntax Error
$play22 = $sentaku1   //Syntax Error
$kik = 60  //Syntax Error

$sentaku ={  //Syntax Error
 $play1 = int(rand 2)  //Syntax Error
 if($play1 == 0) $kik  //Syntax Error $kikって何だよオブジェクトか?で、メソッドは?
}  //Syntax Error

else($play1 == 1) {  //Syntax Error Elseに条件つけんなよw
 $bougyo = int(rand 5) //Syntax Error だからセミコロン・・・
 if($bougyo =< 1)   0;
 else($bougyo >= 2) 1;
}

{  //Syntax Error  エエエエ・・・・ なにこの括弧
 $panti = int(rand 5);
 if($panti == 0)  $panti1 = 10;
 else($panti > 0) $panti2 = 20;
 }  //Syntax Error 括弧・・・
  * $bougyo;  //Syntax Error  おい、オペランド足りんぞ
 }  //Syntax Error 括弧・・・
}  //Syntax Error 括弧・・・


括弧の対応おかしいーーwww
052651004/05/04 20:12ID:???
いえいえ、サーバー側でファイル化する前にCONTENT_LENGTHで判断してます。
念のためにファイル化した後もサイズチェック。

なにかしら処理途中でレスポンスヘッダを送信できれば、
アップロードに専念しているブラウザも止められるかなぁ?
・・・と、考えつつも案が浮かばず放置している状態なのです。
0527nobodyさん04/05/04 20:13ID:???
>>526
>念のためにファイル化した後もサイズチェック。
だから、その行為がクライアントから見ると「アップロード」になるわけで・・・
CONTENT_LENGTHで判断するだけでいいだろ
0528nobodyさん04/05/04 21:35ID:???
>>510
http://httpd.apache.org/docs/mod/core.html#limitrequestbody
Apacheであれば、規定量を超えたら413(Request Entity Too Large)が
返るように設定できるけど、クライアントを止められるかどうかは不明。

同様の処理はmod_perlであればヘッダ解析フェーズで可能かも。
CGIレベルでは無いことは確か。
0529nobodyさん04/05/04 21:56ID:???
だから527が言ってるようにCONTENT_LENGTHで(ry
(´-`).。oO(なんで鯖までいじらにゃならんのよ・・・)
053051004/05/04 22:00ID:???
やはりPerlへ処理が渡された時点で手遅れみたいですね。
残念だけど諦めます。

> CONTENT_LENGTHで判断するだけでいいだろ
申し訳ない。今のロジックをみたらCONTENT_LENGTHのチェックと、
STDINからデータ取得時のチェックの二段階だけだった。
0531nobodyさん04/05/04 22:02ID:???
>592 名前: nobodyさん [] 投稿日:03/08/07 16:03 ID:MNjVgF7U

my @attack = (
sub {
my($damage, $rate) = (100, 10);
$damage *= 1 + ((1 / 2 <=> rand) * rand $rate) / 100;
$damage *= 1 / 3 unless int rand 5;
$damage = 0 if 2 > rand 5;
'パンチ', int $damage;
},
sub {
my($damage, $rate) = (200, 10);
$damage *= 1 + ((1 / 2 <=> rand) * rand $rate) / 100;
'キック', int $damage;
}
);

for (1..20) {
print $attack[rand 2]->(), "\n";
}
0532nobodyさん04/05/05 13:19ID:???
Cookieクリアについて質問ですが、「ブラウザ(セッション)を
閉じたとき」にCookieをクリアするためにはexpiresを空に、
有効期限を決めるにはexpiresを設定すればいいだけのこと
ですが、この2種を同居させることは不可能でしょうか。

つまりやりたいことは、「有効期限を設定しておいても、ブラウザ
が閉じられればCookieはクリアされる」ということです。

うまくいかないので質問させていただきました。
宜しくお願い致します。
0533nobodyさん04/05/05 13:42ID:???
>>532
勘違い擦れ違い板違い
0534nobodyさん04/05/05 15:22ID:???
>>533
申し訳ありません。
違うところで質問させていただきますね。
0535nobodyさん04/05/05 17:38ID:???
>>532
Netscapeベースの一般的なクッキーだと不可能。
クッキーの中に有効期限を書いておき、サーバ側でチェックするとか。
0536 ◆Emx7X7JtuI 04/05/05 21:16ID:jTThsR/v
質問させて頂きますm(_ _)m

$day = "20040505";
の時、$dayから 2004、05、05を分けて取り出すには、
$yyyy = substr($day, 0, 4);
$mm = substr($day, 4, 2);
$dd = substr($day, 6, 2);

とするしかないでしょうか?
もう少し良い方法がありましたらご教授お願いします。
0537nobodyさん04/05/05 21:40ID:???
>>536
これでどうかな
($yyyy, $mm, $dd) = unpack("a4a2a2", "20040505");
0538nobodyさん04/05/05 21:40ID:???
>>536
TMTOWTDI.

# substr
my($yyyy, $mm, $dd) = (substr($day, 0, 4), substr($day, 4, 2), substr($day, 6, 2));

# unpack
my($yyyy, $mm, $dd) = unpack 'A4A2A2', $day;

# パターンマッチ
my($yyyy, $mm, $dd) = $day =~ /^(\d{4})(\d\d)(\d\d)/;

# 回りくどい方法
my @tmp = split //, $day;
my $yyyy = join '', splice @tmp, 0, 4;
my $mm = join '', splice @tmp, 0, 2;
my $dd = join '', @tmp;
0539nobodyさん04/05/05 21:45ID:???
printf "%d %d %d", $day =~ /^(\d{4})(\d{2})(\d{2})$/;
0540 ◆Emx7X7JtuI 04/05/05 21:49ID:???
>>537-538
ありがとうございます!
umpackという手がありましたね。
これでいこうと思います。

>>538
>#バターンマッチ
この書き方がよく分かってないんですよ<私
サンプルソースを写して、何となくうまくいってるって感じで(汗)
がんばって勉強します!
0541540 ◆Emx7X7JtuI 04/05/05 21:50ID:???
>539 �dクス
0542nobodyさん04/05/05 22:22ID:???
複数の異なるサーバー間で、アクセス規制用に.htaccessファイルを同期させる為のCGIを作ろうと思ってます。

.htaccessのファイルの内容を、指定したサーバーの順番に、Socketでデータと一緒にPOSTして、受け取ったCGIでそれを元の.htaccessと書き換えるという流れで逝きたいんですが、
一つのデータ送信+ファイル更新用の親CGIと、受信+ファイル更新用の子CGIという仕組みです。
私はPerl初心者で、今までソケットについては一切書いてないので知識が無いので、
最近ネットでPerlのSocket.pmについて調べてるんですが、どうもソケットについて詳しく解説してるサイトが無くて困ってます。

何方かSocketについての解説サイトをご教授してください。
0543nobodyさん04/05/05 22:26ID:???
.htaccess その物を送ったほうが速いんで内科?
0544nobodyさん04/05/05 22:26ID:???
.htaccess その物を送ったほうが速いんで内科?
054554204/05/05 22:29ID:???
WEB上で親CGIでIP・リモホなどを追記して送信するだけで登録されたサーバーに一度に同期させたいからです。

私自身、10つのサーバーで複数のコンテンツを公開してるので。。。
アップロードファイルがこんがらがってるのでこういうCGIを実装したいのです。
0546nobodyさん04/05/05 22:33ID:???
cron+scpでダメな理由を述べよ
0547nobodyさん04/05/05 22:34ID:???
cron+scpでダメな理由を述べよ
0548nobodyさん04/05/05 22:35ID:???
ま、スレ違いだな
0549nobodyさん04/05/05 22:35ID:???
俺>>543じゃないんだけど、同じ失敗してるな。
「書き込みに失敗した模様」でも書きこめてるっぽい。
0550nobodyさん04/05/05 22:37ID:???
548だけどやっぱり書き込みおかしい?
この板だけじゃないけどすんなり書き込めななくなったな。
0551nobodyさん04/05/05 22:49ID:???
↓ここのフリーCGIマジおすすめ。どこのサーバーでもいけるぞ

http://www.accesstrade.net/at/c.html?rk=010003h3000dcb
http://www.accesstrade.net/at/r.html?rk=010008la000dcb
0552nobodyさん04/05/05 23:24ID:???
>>542
Socket.pmが使えるということは、標準モジュールが使えるのだから、
IO::Socket::INETを使えばハンドル操作だけで楽になるよ。
さらにLWPモジュール群を使えば、ハンドル操作さえ不要に。
0553nobodyさん04/05/06 02:57ID:???
Perlを1年ぶりに勉強
前のレベルに戻すまで1ヶ月はかかるからよ

          ∧_∧
    ∧_∧  (´<_`  ) 今ちょうど
   ( ´_ゝ`) /   ⌒i 人生最大の危機に
   /   \     | |  直面しているな
  /    / ̄ ̄ ̄ ̄/ |
__(__ニつ/  FMV  / .| .|____
    \/____/ (u ⊃
0554nobodyさん04/05/06 17:07ID:???
スクリプト言語ごときで人生最大の危機ですか
0555nobodyさん04/05/06 18:11ID:???
首切りが掛かってるんですよ。もう必死です。
0556nobodyさん04/05/06 21:28ID:???
↓このようなxmlファイルがあるとして
---- xml2.xml ----------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<data>
    <shop num="01">
        <name val="a">AAAshop1</name>
        <name val="b">AAAshop2</name>
        <tel>012-345-6789</tel>
    </shop>
    <shop num="02">
        <name>BBBshop</name>
        <tel>098-765-4321</tel>
    </shop>
</data>
------------------------------------------------------
0557続き04/05/06 21:29ID:???
↓のperlを実行すると
------------------------------------------------------
#!/usr/local/bin/perl
use XML::DOM;
$xmlfile = "./xml2.xml";
my $parser = new XML::DOM::Parser;
my $doc = $parser->parsefile ("$xmlfile");
my $nodes = $doc->getElementsByTagName ("shop");
my $n = $nodes->getLength;

for (my $i = 0; $i < $n; $i++){
    my $node = $nodes->item($i);
    my $attr = $node->getAttribute("num");
print $attr."-attr\n";
    my $child = $node->getElementsByTagName("name");
    my $nn = $child->item(0);
    my $val = $nn->getAttribute("val");
print $val."-val\n";
    my @child_val = $node->getElementsByTagName("name");
    my $child_val = $child_val[0];
print $child_val."-child_val\n";#●
}
------------------------------------------------------
0558続き204/05/06 21:29ID:???
------------------------------------------------------
01-attr
a-val
XML::DOM::Element=ARRAY(0x843e234)-child_val
02-attr
-val
XML::DOM::Element=ARRAY(0x84406fc)-child_val
------------------------------------------------------
このような表示になります。
●の部分が「XML::DOM::Element=ARRAY(0x843e234)-child_val」こうなってしまいますが
「AAAshop1」や「AAAshop2」「BBBshop」を取得するにはどうすれば良いのでしょうか?
0559nobodyさん04/05/06 21:41ID:???
formからPOSTをつかってフォームの値をperlによって受け取っているんですが、
今までテキストか、リストによるものだけだったんですが
今回、チェックボックスを使いたいんですが、
どのようにperl側に情報が送られてくるのでしょうか・・・。
0560nobodyさん04/05/06 21:55ID:???
>>559
実際に受け取ってみればいいじゃん
056155904/05/06 22:00ID:???
>>560
初心者ですいません。
受け取ってそのまま表示させるにはどうすればいいですか・・・(´Д`)
0562nobodyさん04/05/06 22:12ID:???
>>556-558
それ自分で書いたコードじゃないだろ
0563nobodyさん04/05/06 22:25ID:???
>>561
GETで渡して$ENV{'QUERY_STRING'}を表示すれ。
056455904/05/06 22:41ID:???
>>563
ありがとうございます!
0565nobodyさん04/05/06 23:47ID:21UK75Lz
>>558
my @child_val = $node->getElementsByTagName("name");
my $child_val = $child_val[0];

の部分を

my $child_val = $nn->getFirstChild->getData;
0566556-55804/05/07 10:22ID:???
>>562
全文は自分で書いてませんが
ttp://member.nifty.ne.jp/hippo2000/perltips/xml/dom.htm
を参考に部分部分を変えて書きました。

>>565
ありがとうございます!ばっちり表示できました。
おかげ様でやっと次の段階に進めそうです。
0567nobodyさん04/05/07 12:50ID:p3Wu+afh
$honbun = "aaabbbcccdddeeefffコーヒー";
$honbun =~ s/$FORM{'text'}/<font style=\"background:#00ffff\">$FORM{'text'}<\/font>/g;
print "本文=$honbun";
というプログラムで本文を置換したいんですけどフォームからaaaなどを入力してもエラーにはならないけど
コーヒーと入力するとエラーになってしまいます。
どうしたらコーヒーと入力してもエラーがでないんでしょうか?
0568nobodyさん04/05/07 13:07ID:???
>>567
>>1読んで。
どんなエラーかわからない事にはまともな答えは期待できない。
0569nobodyさん04/05/07 14:10ID:???
>>567
\Qマルチポスト(・∀・)ニヤニヤ\E
0570nobodyさん04/05/07 15:03ID:???
サニタイズするよろし。
$honbun = 'aaabbbcccdddeeefffコーヒー';
$keyword = 'コーヒー';
$keyword =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g;
$honbun =~ s/($keyword)/<b>$1<\/b>/g;
print "本文=$honbun";
0571nobodyさん04/05/07 15:35ID:???
@filesという配列の中に10〜15個程度の要素が入ってるのですが
これをHTML上に表示するにはどのようにすればよいのでしょうか?
現在は$files[1]〜$files[15]というように1個1個記述してます。
何か良い方法があればアドバイスいただければと思います。
0572nobodyさん04/05/07 15:39ID:???
>>571
foreachを使う。
用例は検索すれば一杯出てくる。
0573nobodyさん04/05/07 15:44ID:???
print @files;
057457104/05/07 15:55ID:???
>>572
ありがとん
foreach $key (@files) { print "<a href=\"$key\">$key</a><br>\n";}
ってやったら出来た
サンクスコ
0575nobodyさん04/05/07 16:45ID:???
quotemeta を使いましょうよ。
0576nobodyさん04/05/07 20:24ID:zsY2eiyt
アンケートサイトを作ろうと思っています。

一人複数投票をなるべく避けるようにしたいのですが、こういう
場合、どのような工夫があるでしょうか?

とりあえず同一アドレスははじきます。リスクはありますが、
プロバイダの同一サクセスポイントもはじこうと思っています。

他にどういう手があるでしょうか?もちろん100%防ぐのは
無理だと思いますし、そんな厳密なアンケートでもない
(どっちかというと遊びっぽい)ので、少しでも役立つ
方法をご存知でしたら、教えてください。

よろしくお願いします。
0577nobodyさん04/05/07 20:26ID:???
> とりあえず同一アドレスははじきます。リスクはありますが、
> プロバイダの同一サクセスポイントもはじこうと思っています。
ネタだろ?
0578nobodyさん04/05/07 20:33ID:???
@list に何列(何個)存在しているか
個数をカウントするにはどうすればいいですか・・?
0579nobodyさん04/05/07 20:35ID:???
$kosuu = @list;
058057804/05/07 20:42ID:???
>>579
ありがとうございます!
0581nobodyさん04/05/07 20:52ID:???
>>576
クッキー食わせるのは良くあるパターン
0582nobodyさん04/05/07 21:12ID:???
サクセスポイント
058357604/05/07 21:46ID:???
サクセスポイントはアクセスポイントのタイプミスでした。どもすみません。

>>581

あ、クッキーという手がありましたね。消して再投票する人もありえるでしょうが、
一定の効果はありそうですね。ありがとうございます。
0584nobodyさん04/05/07 22:57ID:???
検索用CGIを作っているのですが、
@array にたとえば「あ」「い」「う」が入っているとして、
それを$aiuにマッチすればそのまま、マッチしなければそのループを抜ける
という表記なつもりなのですが、結果がうまくいきません。

foreach $i (@array){
if ($aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$i/i) { ; }
else { next; }
}

どのようにかきかえればいいでしょうか?
0585nobodyさん04/05/07 23:13ID:???
>>584
foreach my $str (@array){
  $str = quotemeta $str;
  if( !$aiu =~ /$str/){
    last; # ループを抜けるのはlastです
  }
}

こんなもんでどうなんでしょう? 正規表現はそんなにややこしくする必要ありですか?
0586nobodyさん04/05/07 23:39ID:???
>>584
まずそれは EUC-JP とうまく付き合いたがっているコードなわけだけど
@array と $aiu はきちんと EUC-JP ですか?
058758604/05/07 23:53ID:???
早とちり失礼。
058858404/05/08 00:20ID:???
>>585

エラーはおこりませんが、HITしませんでした。。。
下のレスにもかかれてたコードのせいですかねぇ?

>>586
EUC-JPかどうか実はよくわかっていません・・・が、
なぜか部分部分でそのコードを入れないと反応しないものがありまして。
なくてもうまくいく場合もあるんですが、
基本的に日本語が含まれるものには無いとうまくいかないようです。

0589nobodyさん04/05/08 00:59ID:???
$fmt = "%d %d";
@lst = (12, 20);

これを print を用いて「12 20」のように表示したいのですが、
print($fmt, @lst); では「%d %d1220」と表示されてしまいます。
「12 20」のようにするにはどうしたらよいでしょうか。

ちなみに、$fmt, @lst は動的に変わり、
要素が2個とは限りません。
C言語の va_list のようなことができるのか知りたいです。
0590nobodyさん04/05/08 01:07ID:???
>>589
>>574を参考にすべし。
059158904/05/08 01:35ID:???
>>590
$fmt も任意で、必ずしも %d のスペース区切りではないんです。
0592nobodyさん04/05/08 01:41ID:???
>>589
僕が良くワンライナで使う手はこう。
$ perl -e '@list=(1..5);print join(" ", @list);'
1 2 3 4 5
0593nobodyさん04/05/08 01:45ID:???
printf
059458904/05/08 01:58ID:???
>>593
できました、ちょっとハマって勘違いしていました。
ありがとうございました。
0595nobodyさん04/05/08 02:19ID:3p4uAER8
初めまして。

「バイナリ構造体」の意味がイマイチつかめなくて困ってます。

「バイナリ」は2進法とかいう感じの意味らしいですが、では「バイナリ構造体」
とは構造が2進法である。みたいな感じですか?なんか変な感じ・・・

バイナリはいろんな所で調べれますが、バイナリ構造体という言葉の説明はみつかりません。

どうやらスカラ変数や s/〜//; の〜部分もバイナリ構造体らしいのですが、どなたか
バイナリ構造体の意味を教えてくださいませんか。お願いします。
0596nobodyさん04/05/08 02:25ID:???
バイナリデータ
0597nobodyさん04/05/08 02:51ID:???
バイ ナラ
0598nobodyさん04/05/08 02:58ID:???
>>595
プログラミングで構造体と言うと既にある型を使って新しい型を作ることを指す。
Perlは基本的にデータを文字列で記憶するからそれをバイナリ値にしたものが
バイナリ構造体。
0599nobodyさん04/05/08 03:09ID:???
まあ pack してできるものがバイナリ構造体だ

でも s/?//; の?の部分がバイナリ構造体だというのはいまいち意味がわからない
060059504/05/08 03:29ID:???
>>598
ということは文字列をバイナリ値(0と1)に変換して記憶・保存する構造自体がバイナリ構造体ですか?

>>599
packってpack後にバイナリ構造体に結果を返すって勉強したので、packの結果を受け取れる
場所はスカラ変数に限らず、全てバイナリ構造体と言える?あれる?のかなと思いましたが・・・・・

う〜ん難しいですね。スカラや配列って文字列のまま記憶・格納しているのですか?
例)$x = "あいうえお";
という代入をした場合、「あいうえお」のままはコンピューターは保存できませんよね?
だから、保存時に2進数に直して保存し、呼び出すと自動で解凍?される・・・・のですか?
その仕組みがバイナリ構造体そのもの????


0601nobodyさん04/05/08 03:40ID:???
>>600
バイナリ値というのは2進数のことではない。
それにPerlにおいてバイナリ構造体の意味を学んでも役には立たないから
おかしな理解をしてしまう前にpackして得られる値とだけ思っておけ。
060259504/05/08 04:20ID:???
>>601
「整数値を、2 の補数表現で符号化したものをバイナリ値とする。」こんな程度しか
バイナリ値ではひっかかりませんでしたがとりあえず単純な2進数ということでは
ないようですね。

プログラム関係って言葉の意味さえわかれば関数や表記法なんて結構どうにでもなるかな
と思ってるんですよ。理解できない言葉があると勉強の効率が悪いので私にとっては
言葉の意味は重要なんですよ。

プログラム関係の言葉の辞書って今アスキーっていうHP使ってますが、他にどこか
いいとこありますか?アスキーはバイナリ値もバイナリ構造体も載っていませんでしたので
プログラム系の言葉に特化してる辞書とかないですかね
060359504/05/08 04:27ID:???
忘れてました追加です。

「0x」とは、後に続く文字列が16進数であることを示しているらしいのですが、
print hex(0xa);
としてみたら16が表示されました。
print hex(a);
の場合は10なのですが、「0x」は後続が16進数であるという示し以外にどのような
効果を与えるのでしょうか?
0604nobodyさん04/05/08 05:08ID:???
print 0xa;
# 10
print hex 10;
# 16
0605nobodyさん04/05/08 12:01ID:???
バイナリ構造体というのは、誰が作ったか知らないが、日本独自の言葉で、
英語版の perldoc などには存在しない。
よって正確な定義もたぶん存在しない。

たぶんCの構造体(struct)との類推で作られた言葉だとは思う。
struct の定義ならCの入門書でも読めばわかるが、
「なぜこんなものが必要なのか、実際何の役に立つのか」ということは
実際にCのプログラムを作ってみないとわからんだろうな。
0606nobodyさん04/05/08 14:38ID:???
つか、Perlは普通に構造体使えるようになってるしな
$hoge
@hoge
%hoge
0607nobodyさん04/05/08 14:45ID:???
>>606
それは構造体の話とは関係ない
060859504/05/08 15:22ID:???
>>605う〜ん難しいですね。簡単な例え話とかあったらいいんですがね。

>>604どうやらhex関数の引数として「0x」をつかうとちょっと違うことになるみたいですね。
通常は「0x」が前につけば単に16進数という宣言みたいですが、どうしてhex関数の引数
で使うとおかしな事になるんでしょう。

そういえば、バイナリ値以外にもchar値とかその他にもいっぱい「〜値」というものが
あるんですね。どっかにいろんな「〜値」について詳しく解説してるサイト知りませんか?

0609nobodyさん04/05/08 15:59ID:???
>>608
何もおかしくないのに>>604を見てわからないならかなりニブいな。

packで指定する型のcharやintや浮動小数点だのをひっくるめてバイナリ値を呼ぶ。
どんな型があるかはpack関数を調べればいい。

いいかげんスレ違いになってきたからここらでやめれ。
0610nobodyさん04/05/08 16:11ID:???
>>607
釣れますか?
061158404/05/08 16:58ID:???
2重ですいません。
>>584 の質問誰かお願いします。。。
調べたところ、すべてEUCにはされていました。

if ($aiu ne 'all') {
if ($aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$array[0]/i ||
$aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$array[1]/i) { ; }
else { last; }
}

だと、理想的な結果が出るんですが、2枚目のページにいくと、
結果がクリアされるようなんです・・・。
0612nobodyさん04/05/08 17:09ID:???
「2枚目のページ」ねぇ。
誰か2枚目のページってどんなのか知ってる?
知ってる人が教えてあげて。
0613nobodyさん04/05/08 17:13ID:???
(゚�听)シラネ
■ このスレッドは過去ログ倉庫に格納されています