Perlコーディング初心者質問スレ Part 58at PHP
Perlコーディング初心者質問スレ Part 58 - 暇つぶし2ch116:nobodyさん
08/09/02 17:44:36
>>114
confessも読んでいくと

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

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

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

117:nobodyさん
08/09/02 17:52:27 IiWNBMxF
バイオインフォマティックスについて詳しい方いらっしゃいますか?


118:nobodyさん
08/09/02 17:55:37
>>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さん
08/09/02 17:58:31 IiWNBMxF
perlを使って突然変異前後における終止コドンのカウントをしたいんですが、初心者なのでまったく分かりません・・・(涙)

120:nobodyさん
08/09/02 18:34:27
>>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さん
08/09/02 18:54:50
……(呆れている)

122:nobodyさん
08/09/02 19:06:01
>>121
なんで…?

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

123:nobodyさん
08/09/02 23:30:34
>>119
perlじゃなきゃダメなの?

124:nobodyさん
08/09/02 23:53:47
>>123
> perlじゃなきゃダメなの?

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

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

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

を買え。

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

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

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

127:nobodyさん
08/09/03 02:46:19
電算機言語を*嗜む*人向けのありがたいお話は
習い事板にでも書いて。

128:nobodyさん
08/09/03 02:49:05
Perlの入門書でいちばんいいのは
結城さんのだよ。

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

129:nobodyさん
08/09/03 02:57:19
配布cgiを改造して覚えた。
ここをこう直せばこう行ける、みたいな経験則で。

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

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

131:nobodyさん
08/09/03 09:02:15
>>128
お前の頭が悪すぎるだけ

132:nobodyさん
08/09/03 09:20:14
と変な癖が付いた人が言う

133:nobodyさん
08/09/03 09:29:36
Perl関係はドキュメント類が完備されているから、それでも質問に来るのは
頭の悪すぎる奴というのであってる。

134:nobodyさん
08/09/03 11:33:27
とドキュメントを残さない、不完全なドキュメントを残す人が言う
そして素人に最初から完璧な探し方を要求する

135:nobodyさん
08/09/03 11:37:02
ドキュメント読むひまがあったら人に聞くだろ、常考

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

137:nobodyさん
08/09/03 13:16:42
なあ、もしかして英語読めないやつっているんじゃね? ありえないかな?

138:nobodyさん
08/09/03 13:22:49
俺読めない。

139:nobodyさん
08/09/03 13:40:17
sub hoge ($$\@) {}
の($$\@)って何っていう名前だっけ?

140:nobodyさん
08/09/03 13:48:18
>>139
プロトタイプ

141:nobodyさん
08/09/03 14:20:13
使用目的だけを読んで使い方が判るんだ
凄いな


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

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

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

144:nobodyさん
08/09/05 07:00:40
5.10動くレンタルサーバーの一覧はありますか?

145:nobodyさん
08/09/05 08:42:28
>>143
もっと違う方法を考えた方がいいと思う。

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

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

148:nobodyさん
08/09/05 12:36:06
>>147
最後に、

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

とつけとけ。


149:nobodyさん
08/09/05 12:59:01
>>148
おまえがマニュアルを読んで
日本語で説明しろ!
そして死ね!

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

151:nobodyさん
08/09/05 13:24:36
ホラ、親切な>>149さん。やってあげなよ。


152:nobodyさん
08/09/05 13:37:01
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さん
08/09/05 13:37:22
>>151
お前まだ死んでなかったんだ。

154:nobodyさん
08/09/05 14:58:46
>>152
システムコピーを使った場合どうなります?

155:nobodyさん
08/09/05 15:15:12
質問する奴は>>1読んでからにしろ

156:nobodyさん
08/09/05 20:38:54
>>146 eval
>>147,154 計れ。

157:nobodyさん
08/09/05 20:43:49
>>146
方法を問わずなら、TT使っといて。
URLリンク(www.hakoniwa.net)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch