Perl コーディング初心者質問コーナー Part34
■ このスレッドは過去ログ倉庫に格納されています
0001前スレの連投で気分崩したので後よろ
04/04/05 16:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0512nobodyさん
04/05/04 19:33ID:???ISDNのおじさんブチ切れますよ?
初めからファイル容量計算しろ
0513nobodyさん
04/05/04 19:49ID:???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,:,:,:,:,:,:,:\,:,:,:,:,:,:,:,:,:,:,\
0518512
04/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:???ゲームで、対戦で、攻撃はパンチとキック、どちらかは2分の1
パンチの場合は、5回に1回はダメージ低い。
さらに5分の2の確率でミスをする。
というのを、1ターンの各攻撃を下のスクリプトに書いたが動かない
誰かこの初心者を助けてください
0525ちょっと入れ子して綺麗にしてみた
04/05/04 20:11ID:???プレイヤー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
0526510
04/05/04 20:12ID:???念のためにファイル化した後もサイズチェック。
なにかしら処理途中でレスポンスヘッダを送信できれば、
アップロードに専念しているブラウザも止められるかなぁ?
・・・と、考えつつも案が浮かばず放置している状態なのです。
0527nobodyさん
04/05/04 20:13ID:???>念のためにファイル化した後もサイズチェック。
だから、その行為がクライアントから見ると「アップロード」になるわけで・・・
CONTENT_LENGTHで判断するだけでいいだろ
0528nobodyさん
04/05/04 21:35ID:???http://httpd.apache.org/docs/mod/core.html#limitrequestbody
Apacheであれば、規定量を超えたら413(Request Entity Too Large)が
返るように設定できるけど、クライアントを止められるかどうかは不明。
同様の処理はmod_perlであればヘッダ解析フェーズで可能かも。
CGIレベルでは無いことは確か。
0529nobodyさん
04/05/04 21:56ID:???(´-`).。oO(なんで鯖までいじらにゃならんのよ・・・)
0530510
04/05/04 22:00ID:???残念だけど諦めます。
> CONTENT_LENGTHで判断するだけでいいだろ
申し訳ない。今のロジックをみたらCONTENT_LENGTHのチェックと、
STDINからデータ取得時のチェックの二段階だけだった。
0531nobodyさん
04/05/04 22:02ID:???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をクリアするためにはexpiresを空に、
有効期限を決めるにはexpiresを設定すればいいだけのこと
ですが、この2種を同居させることは不可能でしょうか。
つまりやりたいことは、「有効期限を設定しておいても、ブラウザ
が閉じられればCookieはクリアされる」ということです。
うまくいかないので質問させていただきました。
宜しくお願い致します。
0536 ◆Emx7X7JtuI
04/05/05 21:16ID:jTThsR/v$day = "20040505";
の時、$dayから 2004、05、05を分けて取り出すには、
$yyyy = substr($day, 0, 4);
$mm = substr($day, 4, 2);
$dd = substr($day, 6, 2);
とするしかないでしょうか?
もう少し良い方法がありましたらご教授お願いします。
0538nobodyさん
04/05/05 21:40ID:???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:???ありがとうございます!
umpackという手がありましたね。
これでいこうと思います。
>>538
>#バターンマッチ
この書き方がよく分かってないんですよ<私
サンプルソースを写して、何となくうまくいってるって感じで(汗)
がんばって勉強します!
0541540 ◆Emx7X7JtuI
04/05/05 21:50ID:???0542nobodyさん
04/05/05 22:22ID:???.htaccessのファイルの内容を、指定したサーバーの順番に、Socketでデータと一緒にPOSTして、受け取ったCGIでそれを元の.htaccessと書き換えるという流れで逝きたいんですが、
一つのデータ送信+ファイル更新用の親CGIと、受信+ファイル更新用の子CGIという仕組みです。
私はPerl初心者で、今までソケットについては一切書いてないので知識が無いので、
最近ネットでPerlのSocket.pmについて調べてるんですが、どうもソケットについて詳しく解説してるサイトが無くて困ってます。
何方かSocketについての解説サイトをご教授してください。
0543nobodyさん
04/05/05 22:26ID:???0544nobodyさん
04/05/05 22:26ID:???0545542
04/05/05 22:29ID:???私自身、10つのサーバーで複数のコンテンツを公開してるので。。。
アップロードファイルがこんがらがってるのでこういうCGIを実装したいのです。
0546nobodyさん
04/05/05 22:33ID:???0547nobodyさん
04/05/05 22:34ID:???0548nobodyさん
04/05/05 22:35ID:???0550nobodyさん
04/05/05 22:37ID:???この板だけじゃないけどすんなり書き込めななくなったな。
0551nobodyさん
04/05/05 22:49ID:???http://www.accesstrade.net/at/c.html?rk=010003h3000dcb
http://www.accesstrade.net/at/r.html?rk=010008la000dcb
0552nobodyさん
04/05/05 23:24ID:???Socket.pmが使えるということは、標準モジュールが使えるのだから、
IO::Socket::INETを使えばハンドル操作だけで楽になるよ。
さらにLWPモジュール群を使えば、ハンドル操作さえ不要に。
0553nobodyさん
04/05/06 02:57ID:???前のレベルに戻すまで1ヶ月はかかるからよ
∧_∧
∧_∧ (´<_` ) 今ちょうど
( ´_ゝ`) / ⌒i 人生最大の危機に
/ \ | | 直面しているな
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ FMV / .| .|____
\/____/ (u ⊃
0554nobodyさん
04/05/06 17:07ID:???0555nobodyさん
04/05/06 18:11ID:???0556nobodyさん
04/05/06 21:28ID:???---- 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:???------------------------------------------------------
#!/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続き2
04/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:???今までテキストか、リストによるものだけだったんですが
今回、チェックボックスを使いたいんですが、
どのようにperl側に情報が送られてくるのでしょうか・・・。
0565nobodyさん
04/05/06 23:47ID:21UK75Lzmy @child_val = $node->getElementsByTagName("name");
my $child_val = $child_val[0];
の部分を
my $child_val = $nn->getFirstChild->getData;
0566556-558
04/05/07 10:22ID:???全文は自分で書いてませんが
ttp://member.nifty.ne.jp/hippo2000/perltips/xml/dom.htm
を参考に部分部分を変えて書きました。
>>565
ありがとうございます!ばっちり表示できました。
おかげ様でやっと次の段階に進めそうです。
0567nobodyさん
04/05/07 12:50ID:p3Wu+afh$honbun =~ s/$FORM{'text'}/<font style=\"background:#00ffff\">$FORM{'text'}<\/font>/g;
print "本文=$honbun";
というプログラムで本文を置換したいんですけどフォームからaaaなどを入力してもエラーにはならないけど
コーヒーと入力するとエラーになってしまいます。
どうしたらコーヒーと入力してもエラーがでないんでしょうか?
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:???これをHTML上に表示するにはどのようにすればよいのでしょうか?
現在は$files[1]〜$files[15]というように1個1個記述してます。
何か良い方法があればアドバイスいただければと思います。
0573nobodyさん
04/05/07 15:44ID:???0574571
04/05/07 15:55ID:???ありがとん
foreach $key (@files) { print "<a href=\"$key\">$key</a><br>\n";}
ってやったら出来た
サンクスコ
0575nobodyさん
04/05/07 16:45ID:???0576nobodyさん
04/05/07 20:24ID:zsY2eiyt一人複数投票をなるべく避けるようにしたいのですが、こういう
場合、どのような工夫があるでしょうか?
とりあえず同一アドレスははじきます。リスクはありますが、
プロバイダの同一サクセスポイントもはじこうと思っています。
他にどういう手があるでしょうか?もちろん100%防ぐのは
無理だと思いますし、そんな厳密なアンケートでもない
(どっちかというと遊びっぽい)ので、少しでも役立つ
方法をご存知でしたら、教えてください。
よろしくお願いします。
0577nobodyさん
04/05/07 20:26ID:???> プロバイダの同一サクセスポイントもはじこうと思っています。
ネタだろ?
0578nobodyさん
04/05/07 20:33ID:???個数をカウントするにはどうすればいいですか・・?
0579nobodyさん
04/05/07 20:35ID:???0582nobodyさん
04/05/07 21:12ID:???0583576
04/05/07 21:46ID:???>>581
あ、クッキーという手がありましたね。消して再投票する人もありえるでしょうが、
一定の効果はありそうですね。ありがとうございます。
0584nobodyさん
04/05/07 22:57ID:???@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:???foreach my $str (@array){
$str = quotemeta $str;
if( !$aiu =~ /$str/){
last; # ループを抜けるのはlastです
}
}
こんなもんでどうなんでしょう? 正規表現はそんなにややこしくする必要ありですか?
0586nobodyさん
04/05/07 23:39ID:???まずそれは EUC-JP とうまく付き合いたがっているコードなわけだけど
@array と $aiu はきちんと EUC-JP ですか?
0587586
04/05/07 23:53ID:???0588584
04/05/08 00:20ID:???エラーはおこりませんが、HITしませんでした。。。
下のレスにもかかれてたコードのせいですかねぇ?
>>586
EUC-JPかどうか実はよくわかっていません・・・が、
なぜか部分部分でそのコードを入れないと反応しないものがありまして。
なくてもうまくいく場合もあるんですが、
基本的に日本語が含まれるものには無いとうまくいかないようです。
0589nobodyさん
04/05/08 00:59ID:???@lst = (12, 20);
これを print を用いて「12 20」のように表示したいのですが、
print($fmt, @lst); では「%d %d1220」と表示されてしまいます。
「12 20」のようにするにはどうしたらよいでしょうか。
ちなみに、$fmt, @lst は動的に変わり、
要素が2個とは限りません。
C言語の va_list のようなことができるのか知りたいです。
0592nobodyさん
04/05/08 01:41ID:???僕が良くワンライナで使う手はこう。
$ perl -e '@list=(1..5);print join(" ", @list);'
1 2 3 4 5
0593nobodyさん
04/05/08 01:45ID:???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:???プログラミングで構造体と言うと既にある型を使って新しい型を作ることを指す。
Perlは基本的にデータを文字列で記憶するからそれをバイナリ値にしたものが
バイナリ構造体。
0599nobodyさん
04/05/08 03:09ID:???でも s/?//; の?の部分がバイナリ構造体だというのはいまいち意味がわからない
0600595
04/05/08 03:29ID:???ということは文字列をバイナリ値(0と1)に変換して記憶・保存する構造自体がバイナリ構造体ですか?
>>599
packってpack後にバイナリ構造体に結果を返すって勉強したので、packの結果を受け取れる
場所はスカラ変数に限らず、全てバイナリ構造体と言える?あれる?のかなと思いましたが・・・・・
う〜ん難しいですね。スカラや配列って文字列のまま記憶・格納しているのですか?
例)$x = "あいうえお";
という代入をした場合、「あいうえお」のままはコンピューターは保存できませんよね?
だから、保存時に2進数に直して保存し、呼び出すと自動で解凍?される・・・・のですか?
その仕組みがバイナリ構造体そのもの????
0601nobodyさん
04/05/08 03:40ID:???バイナリ値というのは2進数のことではない。
それにPerlにおいてバイナリ構造体の意味を学んでも役には立たないから
おかしな理解をしてしまう前にpackして得られる値とだけ思っておけ。
0602595
04/05/08 04:20ID:???「整数値を、2 の補数表現で符号化したものをバイナリ値とする。」こんな程度しか
バイナリ値ではひっかかりませんでしたがとりあえず単純な2進数ということでは
ないようですね。
プログラム関係って言葉の意味さえわかれば関数や表記法なんて結構どうにでもなるかな
と思ってるんですよ。理解できない言葉があると勉強の効率が悪いので私にとっては
言葉の意味は重要なんですよ。
プログラム関係の言葉の辞書って今アスキーっていうHP使ってますが、他にどこか
いいとこありますか?アスキーはバイナリ値もバイナリ構造体も載っていませんでしたので
プログラム系の言葉に特化してる辞書とかないですかね
0603595
04/05/08 04:27ID:???「0x」とは、後に続く文字列が16進数であることを示しているらしいのですが、
print hex(0xa);
としてみたら16が表示されました。
print hex(a);
の場合は10なのですが、「0x」は後続が16進数であるという示し以外にどのような
効果を与えるのでしょうか?
0604nobodyさん
04/05/08 05:08ID:???# 10
print hex 10;
# 16
0605nobodyさん
04/05/08 12:01ID:???英語版の perldoc などには存在しない。
よって正確な定義もたぶん存在しない。
たぶんCの構造体(struct)との類推で作られた言葉だとは思う。
struct の定義ならCの入門書でも読めばわかるが、
「なぜこんなものが必要なのか、実際何の役に立つのか」ということは
実際にCのプログラムを作ってみないとわからんだろうな。
0606nobodyさん
04/05/08 14:38ID:???$hoge
@hoge
%hoge
0608595
04/05/08 15:22ID:???>>604どうやらhex関数の引数として「0x」をつかうとちょっと違うことになるみたいですね。
通常は「0x」が前につけば単に16進数という宣言みたいですが、どうしてhex関数の引数
で使うとおかしな事になるんでしょう。
そういえば、バイナリ値以外にもchar値とかその他にもいっぱい「〜値」というものが
あるんですね。どっかにいろんな「〜値」について詳しく解説してるサイト知りませんか?
0609nobodyさん
04/05/08 15:59ID:???何もおかしくないのに>>604を見てわからないならかなりニブいな。
packで指定する型のcharやintや浮動小数点だのをひっくるめてバイナリ値を呼ぶ。
どんな型があるかはpack関数を調べればいい。
いいかげんスレ違いになってきたからここらでやめれ。
■ このスレッドは過去ログ倉庫に格納されています