[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/25 20:07 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:nobodyさん mailto:sage [2007/09/16(日) 19:49:43 ID:???]
Perlのコーディングで困ってる人のスレです。

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

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >2 以降

前スレ ttp://pc11.2ch.net/test/read.cgi/php/1180492441/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/

41 名前:nobodyさん mailto:sage [2007/09/17(月) 23:15:28 ID:???]
つまりここにいる奴は全員キモイってことだな。

42 名前:nobodyさん mailto:sage [2007/09/18(火) 01:53:41 ID:???]
ま、いくら挑発しても答えてやらないけどな

43 名前:nobodyさん [2007/09/19(水) 19:41:21 ID:uZuxrlKv]
Perl の CGI::Application モジュールを使ってアプリを作成しているのですが、
デバッグの仕方でつまづいています。

というのも CGI::Application の場合 ランモードのそれぞれのメソッドからブラウザに表示させたい
htmlを return しますよね?

で、その途中で 勝手に「 print $hensu; 」みたいにやっても画面上には表示されません。。。
もちろん「 return $hensu; 」とやればその変数の内容は表示されるのですが、複数の変数の値を
一度に表示させたいのですーー。

こんな時みなさんどうしてるのでしょう???


44 名前:nobodyさん mailto:sage [2007/09/19(水) 19:47:18 ID:???]
V に TT とか使えばいいんじゃね?

45 名前:nobodyさん mailto:sage [2007/09/19(水) 20:52:24 ID:???]
ヘッダを出力する前にprintしてもブラウザには表示されないよ

CGI::App::Plugin::DebugScreenとかLogDispatchとか使ってたっけかな
手っ取り早いのはData::DumperとかYAML使ってwarnでダンプとか
httpdのエラーログにね

46 名前:nobodyさん mailto:sage [2007/09/19(水) 23:34:44 ID:???]
CGI::Application ってテストサーバないのか。ダサいな。

47 名前:nobodyさん mailto:sage [2007/09/19(水) 23:44:49 ID:??? BE:914760566-PLT(15017)]
あるよ

search.cpan.org/perldoc?CGI::Application::Server
search.cpan.org/perldoc?CGI::Application::Dispatch::Server

48 名前:nobodyさん [2007/09/20(木) 00:36:25 ID:FmGzC+A0]
DBIを使用してDB処理をした場合、sqlのログってどうしてます?

プリペアードステートメント使っていますが、肝心の値の部分が「?」なので、実際に流れるクエリが分かりません。

49 名前:nobodyさん mailto:sage [2007/09/20(木) 09:16:22 ID:???]
モジュールの質問ならpodくらい見てからしろよ

search.cpan.org/~timb/DBI-1.59/DBI.pm#trace
>DBI->trace($trace_setting)
>DBI->trace($trace_setting, $trace_filename)
>DBI->trace($trace_setting, $trace_filehandle)
>$trace_setting = DBI->trace;



50 名前:nobodyさん [2007/09/20(木) 12:35:47 ID:yNzQPcIL]
>>44
>>45

43です。レスありがとうございます。
なるほど、簡単にはいかないんですね。。CGI::Applicationしょぼ!

結局グローバルな変数(ハッシュ)に変数の値を保存していって

cgiapp_prerun (メソッド名間違ってたらスマソ)でその変数に
値が入っていればブラウザに表示するという方法でいきます。

ていうかこれぐらいのこともできないのかよ。CGI::Application



51 名前:nobodyさん mailto:sage [2007/09/20(木) 13:40:05 ID:???]
ヘッダの送る前にprintしてもブラウザに出力されないのは当たり前だろ・・・
自分の無知を認識しろよ

52 名前:nobodyさん mailto:sage [2007/09/20(木) 13:45:10 ID:???]
だからwebprogは揶揄される

53 名前:nobodyさん mailto:sage [2007/09/20(木) 14:21:55 ID:???]
今時 CGI::Application なんか使うなよ…

54 名前:nobodyさん mailto:sage [2007/09/20(木) 19:18:46 ID:???]
じゃあ何使えって言うんだよ。
どこのレンタルサーバでも使えるような方法で頼む。

55 名前:nobodyさん mailto:sage [2007/09/20(木) 21:46:49 ID:???]
if文ダラダラ使えってことじゃね

56 名前:nobodyさん mailto:sage [2007/09/20(木) 21:49:39 ID:???]
あるいはR信者が言語批判したかっただけとか

57 名前:nobodyさん mailto:sage [2007/09/20(木) 21:50:20 ID:???]
yukiwiki 的にサブルーチン呼べば?
値は PATH_INFO とかでとればよい。

58 名前:nobodyさん [2007/09/21(金) 04:57:02 ID:9/Wk3rtw]
質問です。

ネットに落ちてるサンプルを見ながら、アクセス解析や掲示板などを書いて
練習しているのですが、データを書き込んでいく空ファイルは
どこのサンプルでも自前で事前に用意しています。

これを、日時ごとに070921.dat、070922.dat…のように自動生成させたいのですが、そのようなことは出来ないのでしょうか?

よろしくお願いします。

59 名前:nobodyさん mailto:sage [2007/09/21(金) 05:11:32 ID:???]
問題なく出来ると思う。



60 名前:nobodyさん mailto:sage [2007/09/21(金) 05:15:49 ID:???]
テキスト表示のアクセスカウンタを作っているのですが、<img>タグで呼び出すとテキストを返せません。

SSIが使えないならば、直接CGIにアクセスさせるしかないんでしょうか??

61 名前:nobodyさん mailto:sage [2007/09/21(金) 09:28:25 ID:???]
質問させてください。

GDでファイルを生成→表示というスクリプトを組んでいますが
どうやら生成されるまえに表示する処理が実行されてしまい。うまくいきません。
リロードすれば表示されるようにはなるのですが・・・

生成されるまで待つ→表示処理実行

という事を考えて生成→slepp 2とか10;→次を実行

と、してみましたがうまくいきません。
生成完了するまでウェイトをかける方法を教えていただければありがたいです。
よろしくお願いします。

62 名前:61 [2007/09/21(金) 09:35:31 ID:EZVVl+6I]
自己解決しました。

sleepでOKでした。

よくみると

コメントアウトしてましたw

63 名前:nobodyさん mailto:sage [2007/09/21(金) 14:07:32 ID:???]
>>60
scriptタグのsrcでアクセスさせる。JavaScript。

64 名前:nobodyさん [2007/09/21(金) 20:24:02 ID:yGE03KVM]
winXPsp2とactive perlでローカルテストをする時の質問なのですが、
例えば print 1; という命令のあるplファイルをダブルクリックしても1が表示されません。
いや正確には一瞬何かが出てきてるっぽいんですが、閉じるの早すぎです。

コマンドプロンプトから実効命令をするとprint先がコマンドプロンプトに来るので、
勝手に閉じることはないようですが。
いちいちコマンドプロンプトやらずに簡単なコードテストの時はダブルクリックで済ませたいのですが
方法ありましたら教えてください。

65 名前:nobodyさん mailto:sage [2007/09/21(金) 20:46:57 ID:???]
>>64
END{<STDIN>}
とか書いとけば。

66 名前:64 [2007/09/21(金) 21:00:38 ID:yGE03KVM]
>>65
ありがとうございます。
うまく出ました^^
endって一体なんなのですか?

perlの説明サイトとかで関数調べてendありませんし。
最後にやるってことですか?
となると<STDIN>が閉じさせない命令の本体になるんでしょうか?
どういう理屈なんでしょうjか。


67 名前:nobodyさん mailto:sage [2007/09/21(金) 22:37:24 ID:???]
>>66
perldoc.jp/docs/perl/5.8.8/perlmod.pod
perlmodのBEGIN, CHECK, INIT and END BEGIN CHECK INIT ENDのところ。

プログラムの終了するところで、
<STDIN>で、コンソールの入力待ちをしてる。

68 名前:64 [2007/09/21(金) 23:02:02 ID:yGE03KVM]
>>67
コンソール???あの黒い画面のことかな。
で、試しに適当に打ち込んだら本当に入力できました。
最後にenterを押したら画面が消えました。
perlの方にはしっかりとその内容が送られてるんですかね?

試しに
my @array = <STDIN>;
print $array[0];

としてみましたが、今度はenterを何度押しても画面が閉じません。
配列に入れてるから無限に取るっぽいですね。
my $scalar = <STDIN>;
print $scalar;
END{<STDIN>}
としたらうまくいきました。

任意の内容を入力してenterした瞬間に制御が一瞬コードに行ってprint $scalar;が実行されました。
ローカルでやるときはこうやって引数を取るというのも面白いですね。
物凄い面白いことを教えていただいて感謝です。


69 名前:nobodyさん mailto:sage [2007/09/22(土) 13:27:49 ID:???]
質問です。
Class::DBI使ってDB操作する場合、二つのレコード間で主キー以外のデータを交換するには
どのように書いたらいいですか?



70 名前:nobodyさん mailto:sage [2007/09/22(土) 15:58:05 ID:???]
#! /usr/local/bin/perl

print "content-type:text/html\n\n";

print "<html>\n";
print "<head><title>タイトル</title></head>\n";
print "<body>\n";
print "<h2>テスト</h2>\n";
print "</body>\n";
print "</html>\n";


↑これでInternal server error 500になる。
ただしレンタルサーバー上ではエラーだが、
自分のパソコンでやったらちゃんと表示される。

ソースにもし間違いがあったら
場所と対処法を具体的に指摘しろ。

71 名前:nobodyさん mailto:sage [2007/09/22(土) 17:15:55 ID:???]
>>70
態度でかいぞ。
そんなやつには教えてやらん。



#! と /usr の間に半角スペースが入ってるのが問題とか言わん。


72 名前:nobodyさん mailto:sage [2007/09/22(土) 17:44:10 ID:???]
>>68
和んだ、俺も10年くらい前Cやった時そんなだった。

73 名前:69 mailto:sage [2007/09/22(土) 19:54:58 ID:???]
すみません。解決しました。

74 名前:nobodyさん mailto:sage [2007/09/22(土) 21:34:17 ID:???]
>>70
パーミッションはちゃんとやってあるのか?
とりあえず雑魚が粋がるのはやめておけ。

75 名前:nobodyさん [2007/09/22(土) 22:09:17 ID:VEv2R0s3]
pc11.2ch.net/test/read.cgi/php/1158647441/369-372 から来ました。

ws.strikeiron.com/SwanandMokashi/StockQuotes2?WSDL
このサービスを SOAP::Lite から使いたいんですが、ドキュメントのWSDL関連部分を読んでも
  use SOAP::Lite;
  print SOAP::Lite
    -> service('www.xmethods.net/sd/StockQuoteService.wsdl')
    -> getQuote('MSFT');
としか書いてません。
WSDLを見てみると、GetStockQuotesメソッド(オペレーション?)のパラメタとして
QuoteTicker(MSFTとかの文字列)だけでなく、オブジェクト構造みたいなのを組んで
メアドなども渡さないといけないようなんですが、どう書けばいいんでしょうか。

76 名前:75 mailto:sage [2007/09/22(土) 22:43:31 ID:???]
guide.soaplite.com/#access%20with%20service%20description%20(wsdl)
> SOAP::Liteでは今のところWSDL 1.1のサポートは限定されているが〔中略〕、
> 複雑な型(types)を記述に含まないサービスにはアクセス可能だ。

と書いてあるので、無理なのかもしれませんね・・・

77 名前:75 mailto:sage [2007/09/23(日) 03:01:09 ID:???]
やっと自己解決・・・
wsparam.strikeiron.com/BasicRealTimeQuotes?WSDL
という、もっと単純なWSDLを使用。
www.strikeiron.com/authentication/
ここの下のほうにPerlのサンプルが(も)置いてあるので、それを改造。
わかりやすいのでSOAP初心者にはおすすめかも。

78 名前:nobodyさん mailto:sage [2007/09/23(日) 03:53:09 ID:???]
>>74
なぁーんてこった!
cgiファイルのパーミッションを
755にしたらそれで動いたぜ
そんなこと教科書には
どこにも一言も書いてなかった!
ローカルで動かす教科書だからかな?
サノバビーィーーーッチ!

それでパーミッションが500でも
動くのはなんでだ?

79 名前:nobodyさん mailto:sage [2007/09/23(日) 05:27:46 ID:???]
それくらいググれカス



80 名前:nobodyさん mailto:sage [2007/09/23(日) 06:45:28 ID:???]
やはりWebProg板はレベルが低いな。最高。

81 名前:nobodyさん mailto:sage [2007/09/23(日) 06:53:38 ID:???]
だって初心者スレだもん。いいじゃない。

なんか、すごくレベルの高い質問が最近多すぎな気がする。俺のレベルが低いだけなんだろうけどw
Webprogなんだから、動けばいいじゃない的な考えがイクナイ?

82 名前:nobodyさん mailto:sage [2007/09/23(日) 07:50:40 ID:???]
if ( $hoge =~ /$moge/ ){ print "もげら" }
って感じで書いて$mogeが展開されてくれないみたいなんだけど、
特別な書き方があるのかな。
ぐぐったけど正規表現ばかりで、変数をつかってる例が全然見つからなかったんだけど、
こういう記述方法自体があまり一般的じゃなくて、他の書き方があるのかな。

教えてちゃぶだい。

83 名前:nobodyさん mailto:sage [2007/09/23(日) 08:00:28 ID:???]
>>82
$mogeの中には何が入ってるの?
2バイト文字関係とか、文字コードでこけてる可能性もありそう。

84 名前:nobodyさん mailto:sage [2007/09/23(日) 11:07:04 ID:???]
>>82
変数使うときはquotemeta()くらいはかましときなはれ。

85 名前:nobodyさん mailto:sage [2007/09/23(日) 14:57:13 ID:???]
サンクス!
quotemetaでいけたよ。

1)index($hoge, $moge) でもやったけどダメ
2)auotemeta() してみた
3)$hoge =~ /$moge/ で成功!
4)でもなぜかそれ+ index($hoge, $moge) じゃダメ

って感じだった。
中に入ってるのはどちらもEUCの2バイト文字列なんだけど、
なぜか$mogeが空の文字列として扱われてしまってるっぽい動作だった。
print $hoge.$moge;とかで出力するとちゃんと出力されるんだけどね。
良く分からないけどとりあえず解決はしてよかった。
ありがとう。

86 名前:nobodyさん [2007/09/25(火) 00:47:19 ID:XOfpdsF8]
はじめまして。

use strict;
use diagnostics;

という宣言をした状態で、

Name "html::copyright" used only once: possible typo at bbs.cgi line 554 (#1)

というwarningが出ました。

html::copyrightは、htmlモジュール で、
$copyright = 'hogehoge ';
などというように、宣言されています。
warnings は、他のモジュールの変数は見てくれないのでしょうか?

実は、html::copyright 以外にも数十個でていて、紛らわしいことこの上ないです。
(他のwarningにも混じってしまい、識別が困難です)
このwarningをつぶしたいのですが、何とかする方法はないでしょうか?


87 名前:nobodyさん [2007/09/25(火) 00:49:11 ID:XOfpdsF8]
x 実は、html::copyright 以外にも数十個でていて、紛らわしいことこの上ないです。
o 実は、html::copyright 以外にも used only once: possible typo が、数十個でていて、紛らわしいことこの上ないです。

used only once: possible typo・・・
は、意味は、わかっておりまして、
一度しか使ってないので、ミスじゃない?ってことなのですが、
実際には、ちゃんと、htmlモジュールで代入してから、mainで参照しているのに・・・ということです。

88 名前:nobodyさん mailto:sage [2007/09/25(火) 03:43:51 ID:???]
>>87
Use of uninitialized value
が続かないなら、理由が分からない。
一度ourで宣言してみたらどうなる?

89 名前:86 [2007/09/25(火) 17:25:00 ID:XOfpdsF8]
試しに、最小限のコードを書いてみたら、
-----test_pm.pm-------
package test_pm;
use strict;
use warnings;

our $hoge = "test foo bar";
1;
-----main.pl---------
use strict;
use warnings;

use test_pm;
print $test_pm::test;
-------------------

> perl main.pl
Name "test_pm::test" used only once: possible typo at main.pl line 5.
Use of uninitialized value in print at main.pl line 5.

ちゃんと、Use of uninitialized value でて、実行不能でした orz
ourでも、myでも同じでした

>>86は、CGIなんですが、なんで、ちゃんと動いているんだろ・・・
もうちょっと解析してみます。



90 名前:86 [2007/09/25(火) 17:28:00 ID:XOfpdsF8]
x print $test_pm::test;
o print $test_pm::hoge;

スペルミス。
これでも同じ結果です。

91 名前:nobodyさん [2007/09/25(火) 21:26:37 ID:o7XeBw4v]
先日このスレで
END{<STDIN>}
を教えてもらったものです。その節はありがとうございました。

ローカルチェックをする時に、ダブルクリックだけでいいという大変便利なものなのですが、
エラーが出てるときに一瞬で画面が閉じてしまうのです。

ちなみにその時のエラーはuse strictによるmy使え先刻でした。
途中でエラー中断してるのでEND{}まで行かないのは至極当然な話ですが、
エラーの時はエラー内容をSTDINに出力させりょうと思うと大変なことになりますか?

エラーにも色々あるので難しいかもしれませんが、用はコマンドプロンプト画面に出ることを
代わりにそのままSTDINに出力してもらえばいいわけなのですが。

92 名前:nobodyさん mailto:sage [2007/09/25(火) 21:28:39 ID:???]
>>89
CGIってことはサバにあるわけだ。
つまり君がローカルで試してるファイルとは違うファイルが動いてる可能性もあるわけね。

93 名前:nobodyさん mailto:sage [2007/09/25(火) 21:36:47 ID:???]
>>91
コンソールを開いておけない余程の事情でもあるの?

94 名前:91 [2007/09/25(火) 22:20:58 ID:o7XeBw4v]
>>93
いえ、単純にちょっとしたコードテストをしたいときにわざわざ
1.コマンドプロンプト画面を開いて
2.ファイルがあるフォルダを開いて
3.黒画面にファイルをD&Dしてenter

という手順を踏むのが面倒だといつも思っていたのです。
1.ファイルをダブルクリックする
これだけで済むなら最高です。

意外に大きな差かなって思いまして。
黒画面へのエラー内容出力ってどういう仕組みで行ってるんでしょうか?
きっとperlの方から出してるんだと思いますが、その出し先をSTDINに変えればできるのでは?
とか思ったり。

95 名前:nobodyさん mailto:sage [2007/09/25(火) 22:46:42 ID:???]
>>94
同じファイル?ならコンソール開きっぱなしで1回目だけ「perl スクリプト名」で実行しておけば連続テストは↑+Enterで済む。
慣れにもよるけど多分ダブルクリックより速く操作できる

エラーはSTDERRに出力される。
誤解しているようだけどSTDINは標準入力であって出力ではない。標準出力はSTDOUT

96 名前:91 [2007/09/26(水) 00:17:27 ID:zmZEFb0X]
>>95
2回目以降は確かに楽なんですけど。
STDERRに出力されてるので、END{<STDIN>}で出る入力受付画面には出力されない?
STDOUTへの分はきちんと表示されますし。

STDERRの取得方法があるのでしょうか?

97 名前:nobodyさん mailto:sage [2007/09/26(水) 00:27:31 ID:???]
>>89
これ、ActivePerl 5.8.8.822で普通にtest foo barと表示された
ダメ出しも無し

98 名前:nobodyさん mailto:sage [2007/09/26(水) 00:37:06 ID:???]
>>96
ラクダ本より
>内部的に発生する例外によって終了する場合でも、ENDサブルーチンは呼び出される(ただし、シグナルによって撃沈された場合は除く)
とあるようにENDそのものが実行されない。自分で(できれば)トラップする必要がある。これはsigtrapを使えばよい。

…が、それくらいなら最初からコンソールから使うことを強く勧める。元々ダブルクリックで起動するようには設計されてないし。

99 名前:nobodyさん mailto:sage [2007/09/26(水) 00:41:02 ID:???]
>>91
echo off
perl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
pause

みたいなバッチファイル作って、,plに関連付けして置くぐらいかなぁ。

統合型開発環境(みたいなエディタ)を使うと、その場で実行して、
その場で結果表示できたりするので、そういうの使うと便利だよ。



100 名前:nobodyさん mailto:sage [2007/09/26(水) 00:56:23 ID:???]
しまった。
> perl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9

> perl %1 %2 %3 %4 %5 %6 %7 %8 %9
だた。

101 名前:101 mailto:sage [2007/09/26(水) 02:22:27 ID:???]
型グロブというものについて
教科書を今日読んで理解したので
型グロブについて誰か質問してください。
説明します。

102 名前:nobodyさん mailto:sage [2007/09/26(水) 05:15:12 ID:???]
型グロブをうまいこと使っているモジュールを列挙してください。

103 名前:nobodyさん mailto:sage [2007/09/26(水) 13:38:32 ID:???]
>>99-100 perl %*

104 名前:nobodyさん mailto:sage [2007/09/26(水) 17:01:12 ID:???]
>>101
ありがとうございます!
スカラー変数
配列変数
リスト
ハッシュ変数?
それらのリファレンスなど

上記との違いを説明してください。
そして何の為にグロブがあるのですか?
僕は素人なのでまだ使うべきところに出会っていません。
いや使えてたらもっと簡単につくれてたのかもしれません。

105 名前:nobodyさん mailto:sage [2007/09/26(水) 18:35:06 ID:???]
ビウログってなんですか?

106 名前:nobodyさん [2007/09/27(木) 02:15:46 ID:rW8f5K4d]
質問です。

if($Fm{'form'}){  処理  } #フォームに何か入力されていれば処理

上記の場合
フォームに0と入力した場合もスルーされてしまいます。
認識させるにはどのような書き方になるのでしょうか。

if分の前に
$Fm{''form'}=sprintf( "%c", $Fm{''form'} );
のように文字列にするという方法を思いついたのですが、ちょっとスマートじゃないなと思っています。
よろしくおねがいします。

107 名前:nobodyさん mailto:sage [2007/09/27(木) 02:23:35 ID:???]
if($Fm{'form'} ne ""){  処理  }

108 名前:nobodyさん mailto:sage [2007/09/27(木) 02:35:47 ID:???]
>>107
素早い回答ありがとうございます。
その手がありましたか。目からうろこでした。
ありがとうございます!

109 名前:nobodyさん mailto:sage [2007/09/27(木) 03:41:52 ID:???]
length とかも



110 名前:nobodyさん mailto:sage [2007/09/27(木) 06:29:35 ID:???]
1000:1234:abcd:2000::/120のような省略されたIPv6のアドレスを展開して
リストに格納したいのですが、プレフィックス長(=120)に応じて
展開する部分が一部不完全なので教えてください。
下のコードだと、下4桁の連番生成しかできない上に、プレフィックス長が4の倍数でない場合にうまくいきません。
これを4の倍数でなくても&下4桁以上もちゃんと展開できるようにしたいのですが…。
たとえば、1000:1234:abcd:2000::/127であれば、
1000:1234:abcd:2000:0000:0000:0000:0000
1000:1234:abcd:2000:0000:0000:0000:0001
の二つが出来てほしいのです。
できれば10進数で連番作ったものを16進数変換してる部分もなんとかしたいんですけど…。

sub _Gen{
  my ($addr, $pref) = split(m|/|, $_[0]);
  $addr = &_Format($addr); # ここで省略のない32桁の英数字を4桁ごとに:で区切ったものになる
  $addr =~ s/://g;
  if($pref % 4 != 0 || $pref < 112 || $pref > 128){
    return;
  }elsif($pref == 128){
    1 while $addr =~ s/(\w+)(\w\w\w\w)/$1:$2/;
    return $addr;
  }
  my $fixed = substr($addr, 0, $pref / 4);
  my $keta = (128 - $pref) / 4;
  my (@addrs, $tmp);
  for(my $i=0; $i<16**$keta; $i++){
    $tmp = sprintf("$fixed%0${keta}x", $i);
    1 while $tmp =~ s/(\w+)(\w\w\w\w)/$1:$2/;
    push(@addrs, $tmp);
  }
  return @addrs;
}

111 名前:nobodyさん mailto:sage [2007/09/27(木) 06:34:39 ID:???]
defined 常考

112 名前:101 mailto:sage [2007/09/27(木) 09:02:14 ID:???]
型グロブについて。

スカラー変数
アレイ
ハッシュ(連想配列)

この3つを同時に
扱うために、型グロブは
生まれてきたのです。

113 名前:101 mailto:sage [2007/09/27(木) 09:04:34 ID:???]
例えば

$a ←これはスカラー変数
@a ←これはアレイ(配列)
%a ← これはハッシュ(連想配列)

aの左側についてる記号は
$だったり
@だったり
%だったりとそれぞれ違うが
記号の右側はaで全部統一されている。

このとき

「aの型グロブ!」
と宣言すれば、

$a @a %a

この3つを全部同時に扱うことができる。
これが型グロブ。

114 名前:nobodyさん mailto:sage [2007/09/27(木) 09:14:21 ID:???]
こいつはOmotiとかタクトくせぇ

115 名前:101 mailto:sage [2007/09/27(木) 09:59:46 ID:???]
つまり
4年1組と
4年2組と
4年3組が
いたとして、

「4年生全員集合!」
と言うと、4年生が全員集まってくるのです
これが型グロブです。

116 名前:nobodyさん mailto:sage [2007/09/27(木) 11:04:43 ID:???]
全員集まってくることがどういうことか(メリットなど)
を語らないと通じないでしょ
肝心な部分が抜けてるポ^^

117 名前:nobodyさん mailto:sage [2007/09/27(木) 13:26:43 ID:???]
どっちも4年生なら配列かハッシュ使えば済むでしょ
どっちかというと「全学年の1組集合」の方が近いのではないかと。

118 名前:nobodyさん mailto:sage [2007/09/27(木) 13:32:25 ID:???]
その例なら多重配列使いたいからそれもちょっと…

119 名前:118 mailto:sage [2007/09/27(木) 13:33:29 ID:???]
ごめん勘違いしてた



120 名前:nobodyさん mailto:sage [2007/09/27(木) 13:34:07 ID:???]
この聞いてjも居ないのに延々と騙ろうとするのはタクトに違いない。

121 名前:nobodyさん mailto:sage [2007/09/27(木) 13:58:24 ID:???]
ねぇねぇ
なんでおじちゃんたち
DBが全部やってくれることを一生懸命書いてるの?

122 名前:nobodyさん mailto:sage [2007/09/27(木) 14:53:03 ID:???]
DB使ってないしぃ

123 名前:nobodyさん mailto:sage [2007/09/27(木) 15:13:12 ID:???]
DB使わない理由って やっぱサーバーにないから?
それとも手をつけたことがない?
後者なら絶対覚えたほうがいいよ。
生産効率が全然ちがうよ

124 名前:nobodyさん mailto:sage [2007/09/27(木) 16:59:17 ID:???]
>>110
これじゃだめなん?

use Net::CIDR;

print join("\n", Net::CIDR::cidr2octets("1000:1234:abcd:2000::/127"));

125 名前:nobodyさん mailto:sage [2007/09/27(木) 17:11:50 ID:???]
わざわざDB使うほどの事してないしぃ
ゴミ箱にごみを捨てるのは、わざわざ執事雇って呼んで捨てさせる程の事じゃないしぃ

126 名前:nobodyさん mailto:sage [2007/09/27(木) 19:38:27 ID:???]
>>124
うああああ、助かった
こんな便利なものがあるなんて!
ありがとう〜!

127 名前:nobodyさん [2007/09/27(木) 20:05:25 ID:fs1IYXrA]
色々なPerlがあるようですが、
rand ≠ rand(1)
となるものはあるのでしょうか?ちなみに自分のactiveperl fow win32 5.8は
rand == rand(1)
になっていると思います。
サバによって違うなら面倒でもrand(1)としといたほうが無難なのでしょうか?

それと演算子の優先順位をわかりやすい表にしてるところ知っていたら教えてくださいませm(__)m

last if 1-rand(1) <= 0.3;
こういうの書く時
last if ( (1-rand(1)) <= 0.3);
とすれば確実ですが、地味に面倒で意外と見づらいです。

128 名前:nobodyさん mailto:sage [2007/09/27(木) 20:36:42 ID:???]
同じだよ
その手の仕様をプラットフォームによって違うようにする必要性がないし

129 名前: ◆TWARamEjuA mailto:sage [2007/09/27(木) 20:40:25 ID:??? BE:2178645-2BP(6825)]
perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity
とか。。。



130 名前:127 [2007/09/27(木) 20:54:10 ID:fs1IYXrA]
>>128
そうですよね。まあでも括弧を外すなら結局rand(1)としないとしつこく引数にとられてしまいますね。
>>129
英語のページですか・・・
僕の学力の低さを見透かしたような皮肉orz

バカにでもわかる一覧表的なページはないということでFA?

131 名前:nobodyさん mailto:sage [2007/09/27(木) 21:18:44 ID:???]
unless (0 and 1){
print 1;
}

1と表示されます。unlessは条件式が偽を出してくる時にブロックを実行するのですよね?
0 and 1なら片方が真を出すのでブロック実行されないと思ったのですが。
複数の条件式が全て偽を出した時にだけブロック実行をさせたいのです。

回答宜しくお願いいたします。

132 名前:131 mailto:sage [2007/09/27(木) 21:22:38 ID:???]
ちなみにこれをifでやるとさらにおかしなことになります。

if (1 and 0){
print 1;
}

これです。何も表示されません。先ほどのunlessとの整合性がつきません。
ifによる条件式部分ではちゃんと二つ共が真の時だけ実行されるのに、
unlessの場合は片方が偽を出せば実行されます。

もしかして
真 and 偽
は最終的に偽扱いされるのですか?

133 名前:nobodyさん mailto:sage [2007/09/27(木) 21:28:31 ID:???]
>>132
>もしかして
>真 and 偽
>は最終的に偽扱いされるのですか?
そう。当たり前。

134 名前:nobodyさん mailto:sage [2007/09/27(木) 21:28:52 ID:???]
(0 and 1) は(「偽」かつ「真」)だからそんなの成り立たない
(「真」かつ「真」)なら結果「真」と評価できる
つまり、(0 and 1)は常に「偽」と評価される
だから unless (偽) は常にそのブロック内が実行される

135 名前:131 mailto:sage [2007/09/27(木) 21:46:53 ID:???]
なるほどです。
やはりちょっと違いますねunlessは。
ifのfalse版みたいに思うと微妙にやられますね。

全然関係ない話ですが、Perlには資格ってあるのですか?
書道3段とか簿記3級みたいに客観的にPerlにおけるプログラミング力を第3者に示すもの。
頑張って勉強してそのうちバイトでプログラムの仕事取ってみたいですが、
その時にそういう資格的なものがあるなら売り込みやすいなと思いまして。

本当に関係ない話ですいません。

136 名前:nobodyさん mailto:sage [2007/09/27(木) 21:59:00 ID:???]
>>130
perldoc.jp/docs/perl/5.8.8/perlop.pod

137 名前:127 [2007/09/27(木) 22:08:14 ID:fs1IYXrA]
>>136
日本語のページありがとうございます。
見てきますm(__)m

138 名前:nobodyさん mailto:sage [2007/09/27(木) 22:39:59 ID:???]
perlの仕事なんか無いよ

139 名前:nobodyさん mailto:sage [2007/09/27(木) 22:51:34 ID:???]
>>135
記号論理をやれば当然のことで、それを理解していればifの否定版と考えて問題は起きない



140 名前:nobodyさん mailto:非公開 [2007/09/28(金) 00:24:10 ID:???]
スカラー変数と配列変数をいっぺんに作りたいです。
my ($s1,$s2............$s20);
my (@r1,@r2............$r20);

全部書くのが面倒な時は簡単な方法はありますか?

141 名前:nobodyさん mailto:sage [2007/09/28(金) 00:37:13 ID:???]
コードの先頭でまとめて宣言するってこと?
そんなことすんならuse strict使わない、宣言しないほうがよっぽどいい






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef