[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 05/09 13:53 / Filesize : 40 KB / Number-of Response : 158
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:nobodyさん mailto:sage [2008/08/06(水) 22:54:32 ID:???]
Perlのコーディングで困ってる人のスレです。

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

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

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

お勧めサイトは >2 以降

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

112 名前:nobodyさん [2008/09/02(火) 17:08:26 ID:62/De0KZ]
以下の場合だと、$hogeにはIPアドレスが入ってます。
$hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)||$ENV{'REMOTE_ADDR'};
以下の場合だと、$hogeは空になります。
$hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)or$ENV{'REMOTE_ADDR'};

後者が空になってしまうのは何故ですか?

113 名前:nobodyさん mailto:sage [2008/09/02(火) 17:20:16 ID:???]
後者は以下と同じこと
($hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)) or$ENV{'REMOTE_ADDR'};

114 名前:nobodyさん mailto:sage [2008/09/02(火) 17:30:48 ID:???]
>>111
confessじゃだめか

115 名前:nobodyさん [2008/09/02(火) 17:37:04 ID:62/De0KZ]
>>113
そういうものなんですね。ありがとうございました。

116 名前:nobodyさん mailto:sage [2008/09/02(火) 17:44:36 ID:???]
>>114
confessも読んでいくと

my $pkg = caller(++$i);
unless(defined($pkg)) {

みたいなことをしてループでネストの深さ調べてるから
インクリメントしていると言える。

見かけ上自分でインクリメントしなけりゃいいならこれで
いいんだろうけどな。

117 名前:nobodyさん [2008/09/02(火) 17:52:27 ID:IiWNBMxF]
バイオインフォマティックスについて詳しい方いらっしゃいますか?


118 名前:nobodyさん mailto:sage [2008/09/02(火) 17:55:37 ID:???]
>>114,116
ありがとうございます

> my $pkg = caller(++$i);
> unless(defined($pkg)) {

こんなこと出来るんですね…
すみません調べが足りず、callerに対して無効な範囲の引数を渡したら
落ちちゃうもんだとおもってました。

目的としては、余計な引数のリレーとかグローバル変数とか使わずに
エラーサブだけでツリー生成することでしたので、下記のような感じでテストしてみます。
うまく行ったら〆報告します。

sub err {
 my ($sadd) = @_;
 my @return;
 my $i = 0;
 while(1) {
  my $s = caller($i);
  if (defined $s) {
   @return .= $s;
  } else {
   last;
  }
  $i++;
 }
 print STDERR $sadd."\n".(join ' / ', reverse @return);
}

119 名前:nobodyさん [2008/09/02(火) 17:58:31 ID:IiWNBMxF]
perlを使って突然変異前後における終止コドンのカウントをしたいんですが、初心者なのでまったく分かりません・・・(涙)

120 名前:nobodyさん mailto:sage [2008/09/02(火) 18:34:27 ID:???]
>>114,116
抜粋ですが、下記でツリーというかパンくずリストというかそれっぽいものが出力できました。
ただ、ファイル名はrequireした元ではなく全て実行ファイル名になるようで、
あんまり意味無かったかも…

>my $i = 0;
>while (($package,
>  $filename,
>  $line,
>  $subroutine,
>  $hasargs,
>  $wantarray,
>  $evaltext,
>  $is_require,
>  $hints,
>  $bitmask) = caller($i++)) {
> push @aTree, "$filename\($line\) $subroutine";
>}
>my $sRev = join ' => ', (reverse @aTree);
>print STDERR $sRev

以上、ありがとうございましたー
>>118は無限ループっぽいのでご注意下さい



121 名前:nobodyさん mailto:sage [2008/09/02(火) 18:54:50 ID:???]
……(呆れている)

122 名前:nobodyさん mailto:sage [2008/09/02(火) 19:06:01 ID:???]
>>121
なんで…?

と思ってよくよく考えたら、confessそのまま使えばよかったのか…orz
すみませんなにか焦りのままにわけのわからない事をしてしまったようで…orz

123 名前:nobodyさん mailto:sage [2008/09/02(火) 23:30:34 ID:???]
>>119
perlじゃなきゃダメなの?

124 名前:nobodyさん mailto:sage [2008/09/02(火) 23:53:47 ID:???]
>>123
> perlじゃなきゃダメなの?

bioinformaticといえばperlってくらい。

125 名前:nobodyさん mailto:sage [2008/09/03(水) 02:01:14 ID:???]
>>119
何の初心者かと言えばまず間違いなく Perl の初心者さんで、
バイオなんとかについては専門 (恐らく受講中) ということであれば、
# (この程度の情報はよこしてもよかろう、ケチんぼめ)

「バイオインフォマティクスのためのPerl入門」(ISBN4-87311-103-X)

を買え。

126 名前:125 mailto:sage [2008/09/03(水) 02:16:22 ID:???]
追伸:
これを機会にPerlをイチから少々嗜んでおこうと考えたなら
(または「バイオ(以下略)」のPerlに歯が立たなかったら)、
次の書籍から入るのが王道よん。

「初めてのPerl 第3版」(ISBN4-87311-126-9)

いずれにせよこの手の応用なら計算のためのモデル化が必須で、
モデル化するためには当該分野の知識が必要、と。
数式にまで落し込んで示せば誰かコード例を書いてくれるかもね。
しかしそこまでできれば自分で書けちゃうよなあ。w

127 名前:nobodyさん mailto:sage [2008/09/03(水) 02:46:19 ID:???]
電算機言語を*嗜む*人向けのありがたいお話は
習い事板にでも書いて。

128 名前:nobodyさん mailto:sage [2008/09/03(水) 02:49:05 ID:???]
Perlの入門書でいちばんいいのは
結城さんのだよ。

ほかのはむずかしすぎて(説明が下手すぎて)わかんないとおもう。

129 名前:nobodyさん mailto:sage [2008/09/03(水) 02:57:19 ID:???]
配布cgiを改造して覚えた。
ここをこう直せばこう行ける、みたいな経験則で。

130 名前:nobodyさん mailto:sage [2008/09/03(水) 05:15:42 ID:???]
経験則だけで行くと、習得に時間が掛かる上に変な癖がつく。
ラクダ本やPerldocなど読んで、基本をしっかりマスターすることが大切。
文法エラーが出なければ、なんでも良い訳じゃない事を知って欲しい。

特にファイルオープンのエラー処理を省く奴。



131 名前:nobodyさん mailto:sage [2008/09/03(水) 09:02:15 ID:???]
>>128
お前の頭が悪すぎるだけ

132 名前:nobodyさん mailto:sage [2008/09/03(水) 09:20:14 ID:???]
と変な癖が付いた人が言う

133 名前:nobodyさん mailto:sage [2008/09/03(水) 09:29:36 ID:???]
Perl関係はドキュメント類が完備されているから、それでも質問に来るのは
頭の悪すぎる奴というのであってる。

134 名前:nobodyさん mailto:sage [2008/09/03(水) 11:33:27 ID:???]
とドキュメントを残さない、不完全なドキュメントを残す人が言う
そして素人に最初から完璧な探し方を要求する

135 名前:nobodyさん mailto:sage [2008/09/03(水) 11:37:02 ID:???]
ドキュメント読むひまがあったら人に聞くだろ、常考

136 名前:nobodyさん mailto:sage [2008/09/03(水) 11:59:41 ID:???]
以前、人のプログラムを見ては「変な癖がついてる」「変な癖がついてる」と
連発する新人が来て、一週間で営業に飛ばしたのを思い出した。

137 名前:nobodyさん mailto:sage [2008/09/03(水) 13:16:42 ID:???]
なあ、もしかして英語読めないやつっているんじゃね? ありえないかな?

138 名前:nobodyさん mailto:sage [2008/09/03(水) 13:22:49 ID:???]
俺読めない。

139 名前:nobodyさん mailto:sage [2008/09/03(水) 13:40:17 ID:???]
sub hoge ($$\@) {}
の($$\@)って何っていう名前だっけ?

140 名前:nobodyさん mailto:sage [2008/09/03(水) 13:48:18 ID:???]
>>139
プロトタイプ



141 名前:nobodyさん mailto:sage [2008/09/03(水) 14:20:13 ID:???]
使用目的だけを読んで使い方が判るんだ
凄いな


142 名前:nobodyさん mailto:sage [2008/09/03(水) 22:23:50 ID:???]
>>139 の「何っていう名前だっけ?」という質問に対して
>>140 はほぼパーフェクトな回答。

そもそもが知りもしないことを、余計な格好をつけるから
そういう間の抜けたことになる。

143 名前:nobodyさん [2008/09/05(金) 06:53:30 ID:SLk/ayWJ]
読み込んだHTMLファイル内に直接書かれてる「@{foo[8..15]}」のような文字列を
配列として扱えるように置換したいんですが、どう書けばいいですか?

144 名前:nobodyさん mailto:sage [2008/09/05(金) 07:00:40 ID:???]
5.10動くレンタルサーバーの一覧はありますか?

145 名前:nobodyさん mailto:sage [2008/09/05(金) 08:42:28 ID:???]
>>143
もっと違う方法を考えた方がいいと思う。

146 名前:nobodyさん [2008/09/05(金) 11:12:25 ID:SLk/ayWJ]
>>145
大したCGIではないのでぶっちゃけどんな方法でもいいのですが、
後学のためにもこの方法でお願いしたいです。

147 名前:nobodyさん [2008/09/05(金) 12:29:59 ID:hg/3f6aE]
use File::Copy;を使って
コピーする場合と、
OSのコピーコマンドを
使ってコピーする場合は
どっちが高速ですか?
また、常に上書きされるのでしょうか?

148 名前:nobodyさん mailto:sage [2008/09/05(金) 12:36:06 ID:???]
>>147
最後に、

> 自分でマニュアルを読むのが面倒なので
> 代わりに読んで説明してください。

とつけとけ。


149 名前:nobodyさん mailto:sage [2008/09/05(金) 12:59:01 ID:???]
>>148
おまえがマニュアルを読んで
日本語で説明しろ!
そして死ね!

150 名前:nobodyさん [2008/09/05(金) 13:12:50 ID:r9aXZuUN]
use File::Copy;を使って
コピーする場合と、
OSのコピーコマンドを
使ってコピーする場合は
どっちが高速ですか?
また、常に上書きされるのでしょうか?
自分でマニュアルを読むのが面倒なので
代わりに読んで説明してください。



151 名前:nobodyさん mailto:sage [2008/09/05(金) 13:24:36 ID:???]
ホラ、親切な>>149さん。やってあげなよ。


152 名前:nobodyさん mailto:sage [2008/09/05(金) 13:37:01 ID:???]
OSの違いやその他の要因で違うからなんともいえないところだが、手元で50MBぐらいの
適当なファイルについて試したところでは

% time cp hoge.log hg
cp hoge.log hg 0.00s user 0.21s system 8% cpu 2.529 total

% time perl -MFile::Copy -e 'copy "hoge.log","hg2"'
perl -MFile::Copy -e 'copy "hoge.log","hg2"' 0.02s user 0.29s system 12% cpu 2.532 total

これだけみるとcpの方がはやいかな?

気になる人は何回も条件変えたりしてやってみると良いよ。

153 名前:nobodyさん mailto:sage [2008/09/05(金) 13:37:22 ID:???]
>>151
お前まだ死んでなかったんだ。

154 名前:nobodyさん mailto:sage [2008/09/05(金) 14:58:46 ID:???]
>>152
システムコピーを使った場合どうなります?

155 名前:nobodyさん mailto:sage [2008/09/05(金) 15:15:12 ID:???]
質問する奴は>>1読んでからにしろ

156 名前:nobodyさん mailto:sage [2008/09/05(金) 20:38:54 ID:???]
>>146 eval
>>147,154 計れ。

157 名前:nobodyさん mailto:sage [2008/09/05(金) 20:43:49 ID:???]
>>146
方法を問わずなら、TT使っといて。
ttp://www.hakoniwa.net/tt/






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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