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


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

Perlについての質問箱 29箱目



1 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 22:35:39 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 pc8.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3

前スレ
Perlについての質問箱 28箱目
pc8.2ch.net/test/read.cgi/tech/1162273941/

リンク集は>>2-3
過去スレは>>4

159 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:20:40 ]
4000年で割り切れる年も入れないとね。

160 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:34:26 ]
>>159
どんだけ先の話やねん

161 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:51:30 ]
つ 「このように広く普及するのであれば、もっとちゃんとした設計を施すべきだった」

162 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 22:59:36 ]
そんなに長いこと使われないだろうと思って作ったソフトが2000年問題とかの原因になったんだよな
1993年使われ続けることも考慮しとくべきだな

163 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:02:58 ]
sub is_leap_year {
    $j = shift() + 660;
    unless ($j % 4) {
        unless (($j - 660) % 100) {
            return 0 unless ((($j - 660) / 100) % 4);
        }
        return 1;
    }
    return 0;
}

どぞ。

164 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:04:31 ]
だが、心配のしすぎではないか。

165 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:08:42 ]
もうまもなく4000年になろうとしているのに4000で割り切れる年を閏年にすべきか否かは未だ意見の分かれるところだね。
地球の自転が遅くなるからとか言うが。小賢しい。

166 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:10:06 ]
そういってy2kが問題になってたんじゃないか。
だいたい時間を1970/01/01 00:00からの32bit整数であらわすのも心配だな。やっぱり64bitはほしいところだ。

167 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:20:41 ]
符号付 64ビット整数で紀元からのピコ秒数で数えることにすると紀元の前後300年弱しか表せない。



168 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:26:13 ]
perl -e "print scalar(localtime(0xffffffff/2));"
だと「Tue Jan 19 12:14:07 2038」って出るが

perl -e "print scalar(localtime(0xffffffff/2+1));"
だと何も表示されないな

perlは普通にでかい値扱えるから
localtime関数も符号付32bitの上限超えても平気かと思ってたがだめなのか

169 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 00:32:15 ]
じゃあ紀元から符号付で128bitあれば足りるかな。

170 名前: ◆TWARamEjuA mailto:sage [2007/01/04(木) 00:35:18 BE:5336677-BRZ(6700)]
コンパイル時に指定してあげれば、、、@64bits

171 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 09:43:47 ]
ピコ秒って光が30cmしか飛べないんだぜ。
原子時計の精度が1ピコ秒なんだぜ。
どうやって計るんだぜ?

172 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 13:46:03 ]
>>168
表示はされたけど1901年だったわさ

173 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 19:54:07 ]
>>171
10E-16sオーダの時間の計測に成功したっていうニュースなら見た気がするが。

174 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:23:27 ]
不確定性原理からいくと、最小の時間単位は何だっけ?

175 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:34:09 ]
プランク時間か?

176 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 23:41:55 ]
当方perl初心者です。
全角スペースを半角スペースに置き換えたく、
~s/\xA1\xA1/\x20/g
としています。スペースの置き換え動作自体はするんですが、「ァー」や「ぁ!」などの文字列が文字化けするようになりました。
文字コードはEUCです。

コードを調べてみると「ぁ!」は
A4 A1 A1 AA となっており、全角スペースと誤認してしまうようでした。
どのように解決したら良いのでしょうか、教えてください。

177 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 23:49:59 ]
require 5.8.1;
use encoding 'euc-jp';



178 名前:デフォルトの名無しさん [2007/01/04(木) 23:50:19 ]
www.din.or.jp/~ohzaki/perl.htm

179 名前:176 mailto:sage [2007/01/05(金) 00:12:36 ]
解決しました。ありがとうございます。

180 名前:デフォルトの名無しさん [2007/01/05(金) 13:30:32 ]
さんざんキシュツかもしれませんが、見つからなかったので質問。

Windows XP ActivePerl の環境で、system コマンドで呼び出したプログラムをバック グラウンド で動かしたい。どうすればよい? 例えば、スクリプトはこんな感じ。

---

my $IE = "c:\\Program Files\\Internet Explorer\\IEXPLORE.EXE";
system ($IE, "www.hotmail.com");

---

例えば、上記を test.pl としてセーブし、これを DOS 窓から呼びだすと、こんな感じでとまり、別プロセスとして実行してない。

---
C:\Documents and Settings\takasaks>perl e:/work/0my/scripts/test.pl
_

---

別プロセスで動かしたい、どうれすればよいのでしょうか?

181 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 13:41:21 ]
system(1, ...);

ActivePerl限定だった希ガス

182 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 13:45:21 ]
日本語が得意なフランス人みたいな日本語だな。

183 名前:180 [2007/01/05(金) 14:54:17 ]
すげー。うまくいった。ありがとう。m(_ _)m

>>182
確かに今読み直すと変だね。

184 名前:デフォルトの名無しさん [2007/01/05(金) 21:25:20 ]
以前、(スクリプトが)短い掲示板がどっかに貼ってあったのですが検索しても見つかりません。
突然もう1度見たいのですが、どなたか知っている方居ませんか?

1行に出来るんだから行数関係ないっていわれそうですが6行くらいで、掲示板として機能していたPerlのプログラムでした。
2chのどこで見たんだったかなぁ、、

185 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 21:26:55 ]
七行プログラミング part5
pc10.2ch.net/test/read.cgi/tech/1142467359/

186 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 21:32:38 ]
七行プログラミング
pc10.2ch.net/test/read.cgi/php/1036141603/

187 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 22:38:22 ]
>>185-186
それっぽいです。
ありがとうございました。



188 名前:デフォルトの名無しさん [2007/01/06(土) 02:56:25 ]
ダイス用のモジュールってありませんか?
$s に 3d20+10 のような文字が入ってたら、20面ダイスを3回振って結果に10を足す、ような。

$s に複数入っててもちゃんと計算してくれるのが良いです。更に言うと 1d6+5-4 のように加算減算も複数扱えると尚良いです。
自作しようかと思ったら結構フクザツで・・・。


189 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 03:32:00 ]
search.cpan.org/~rjbs/Games-Dice-0.99_01/lib/Games/Dice.pm
こんなんあったよ。
あとはsplitしたり調整したりするラッピングするだけで実装できるんじゃない?

そんなマニアックなものあるかよ!と思ったらあったw
恐るべしCPAN

190 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 03:37:50 ]
置換 + evalで出来るよと言おうとしたけどCPANに真面目なのがあったか。
CPANスゲー

191 名前:188 mailto:sage [2007/01/06(土) 04:23:08 ]
おおー、CPANにあるんですね!
最近 Perl と離れてたんですが、やっぱり便利だ!

ありがとうございました。

192 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 21:10:42 ]
正規表現で()を後方参照としてではなく、ただの括弧としてマッチさせたい場合どう書けばいいんでしょうか

193 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 21:13:44 ]
(?:re)

194 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 21:14:04 ]
(?:pattern)

つperlre

195 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 21:34:41 ]
おおぅ、それグループ化のみだと思ってました
ありがとうございます

196 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 21:39:55 ]
\( ではないのか

197 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 21:48:35 ]
括弧としてマッチさせるには \( が正しいみたいです
お騒がせしてすみません
>>196 ありがとうございます



198 名前:デフォルトの名無しさん [2007/01/06(土) 22:19:53 ]
すいません、ちょっと質問ですが、
Perl モジュールをCPANに登録して公開するときって、
GPLライセンスでいいんですか?
ja.wikipedia.org/wiki/%E3%82%A2%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9
それとも、この Artistic License ですか?


199 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 22:26:32 ]
Module::License::Reportなんてのがあるくらいだし
Apache Licenseとかも混じってるし
www.google.co.jp/search?num=50&q=site%3Acpan.org+license

なんでもいいんじゃない?

200 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 23:42:21 ]
>>198
GNUプロジェクトによれば、首尾一貫性と均一性のためにperlと同じライセンス
(GPLとArtistic Licenseのデュアルライセンス)を適用することを推奨されている。

<blockquote cite="www.gnu.org/licenses/license-list.ja.html">
Perl のライセンス
このライセンスでは、Artistic ライセンス とGNU GPLのどちらかを選択できるとしています。
言い換えれば、あなたはこれらの2ライセンスのどちらかから選べるということです。
フリーソフトウェアのライセンスに要求される条件は満たしますが、本物のコピーレフトとは言えないかも知れません。
選択肢の一つとして GNU GPLがありますので、GNU GPLとは矛盾しません。

Perl 4 や Perl 5 用のパッケージを書く場合には、Perl プログラミングの世界における首尾一貫性と均一性を促進するために、
このライセンスを適用されることをお勧めします。Perl 以外の分野では、単に GNU GPL を使う方が好ましいので、
このライセンスを使わないよう強くお勧めします。
</blockquote>

が、好きなライセンスにすりゃ良いんじゃない?

ついでにperlmodstyleには
<blockquote>
Licensing
Make sure that your module has a license, and that the full text of it is included in the distribution
(unless it's a common one and the terms of the license don't require you to include it).

If you don't know what license to use, dual licensing under the GPL and Artistic licenses
(the same as Perl itself) is a good idea. See perlgpl and perlartistic.
</blockquote>
とある

201 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 02:04:43 ]
修正BSDとかMITとかもあるけど。やっぱりGPL/Artisticのデュアルライセンスにしとくのがいいかな。

202 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 05:25:31 ]
[1-9.]のみで構成される文字列を表示したいのですが

if ( $text =~ "[1-9.]" ) {
 print "$text \n";
}

だとうまくいきません。
どのように修正すればいいですか?

203 名前:デフォルトの名無しさん [2007/01/07(日) 05:25:42 ]
(?: って変数に入れないようにするやつでしょ?

204 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 05:28:07 ]
print "$&\n" if $text =~/[1-9.]/;

205 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 05:32:00 ]
文字列だった。すまん
一つだけなら
/[1-9.]+/
すべてなら
print(join(',', /[1-9.]+/g));

206 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:01:09 ]
#!c:\usr/bin/perl ←だとアクセスできますが、
#!usr/bin/perl ←だとアクセ500のエラーがでます。
3時間探しましたが答えが見つかりませんでした。
よろしくお願いします。

os:win2000
webserver:apache 2.059
active perl




207 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:04:39 ]
>>206
#!/usr/bin/perl



208 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:05:19 ]
スラッシュ一個たんなくね?

×#!usr/bin/perl
○#!/usr/bin/perl


209 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:09:07 ]
>>207-208
いろいろやっていくうちに"/"が消えてました。
やっとゴールにたどり着きました。ありがとうございました。

210 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:25:02 ]
>>205
説明不足ですみません。

$text = "12:24" なら $textの表示そのものをしない
$text = "3.142" なら表示する

というような不要な文字が1つでもあれば
無視するといった感じのものが作りたかったのです。
よろしくお願いします。

211 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:30:58 ]
$text =~/^[1-9.]+$/ and print "$&\n";

212 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:32:14 ]
printのとこ、$textじゃなくてわざわざ$&で出力する意味あるの?

213 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:35:49 ]
短縮。

214 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 06:40:16 ]
>>211
無事作成できました。ありがとうございました。

215 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 07:26:19 ]
2chのdatファイルを、差分で取得したいのですが、どのようにしたらよいのでしょうか?

216 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 08:09:31 ]
If-Modified-Since と Range をつけて叩いて 206|304|416 のどれかをもらうようにする

217 名前:デフォルトの名無しさん [2007/01/07(日) 14:11:53 ]
package の中で、

sub func(\[$@]) {
 my $class = shift;
 my $arg = shift;
}

として、$arg に配列もしくはスカラのリファレンスを受け取りたいのですが、
$arg にはスカラしか入ってくれません。

どう書くのが正解でしょうか?



218 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 15:06:23 ]
>>202
\. じゃなくてええの?

219 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 15:44:04 ]
>>218
自分でちょっと試せばいいだろ

print "Matchn" if 'ABC' =~ /[.]/;

220 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 17:38:56 ]
>>218
文字クラスの中だから

221 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 20:45:01 ]
>>217
prototypeに頼らないのが正解。
そのprototype、第一引数について書かれてないけど。

222 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 22:45:16 ]
ppmをつかってモジュールを持ってくるときに、zipで圧縮されてると展開方法を知らんとエラーが出てしまうのですが、
どうすればこのエラーが出なくなるんでしょう。

223 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 23:28:08 ]
Archive::Zip入ってる?

224 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 00:48:56 ]
>>223
入ってます。

225 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 01:27:07 ]
手元だとzipアーカイブでもインストールできるなぁ。どこのリポジトリの何で発現してる?

226 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 01:49:50 ]
>>225
ためしに再インストールしようとしたArchive::Zipで出てます。。。
何処のレポジトリかはどうやってわかるんでしょうか。

227 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 08:59:59 ]
csvの一行目を検索して、二行目をprintするだけなんですが
「ー」を含む言葉だと検索結果で出力されません
「。」「・(半角)」「・(全角)」とか色々やったんですが、どうやら「ー」だけのようです
解決方法をよろしくお願いします

open(IN,"$file");
while(1) {
$line = <IN>;
@data = split(/,/ ,$line);
if ( $line eq "" ) { last;}

if ( $data[0] =~ /$in{'test'}/ ) {
print "$data[1]\n";
}

}
close(IN);



228 名前:デフォルトの名無しさん [2007/01/08(月) 11:44:40 ]
>>227
CSVファイルを扱うならば、Text::CSV をお使いください。
(Text::CSV_XS かもしれない、手元にソースがない)

229 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 12:25:03 ]
>>228
返信ありがとうございます
Text::CSVモジュールを使わないと対処できないということでしょうか?
フリーのwebスペースを利用したいので、モジュールはインストール出来ないです

Text::CSV自体は優れものみたいですね

230 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 12:27:20 ]
>226
えっと、ppmシェルで、

search Archive-Zip

って入力して。

Searching in Active Repositories
1. Archive-Zip [1.18] Archive-Zip

こんな感じに出てくると思う。仮に1番なら

desc 1

って入力したときなんて表示されてる?


231 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 13:21:02 ]
>>227
つShift_JISの罠
/\Q$in{'test'}\E/

Text::CSVはマルチバイト文字通ったっけ?
Text::CSV_XSでbinaryオプションを与えない駄目だったような記憶が

232 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 14:02:13 ]
Text::CSVは0x09(Tab)と0x20(Space)から0x7e(Tilde)の範囲しか使えないね。
Text::CSV_XSでbinaryオプションつけないとダメだ。

233 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 14:07:57 ]
>>231
返信ありがとうございます。おかげで解決することができました
ただ、「\Q」が「\Eまでのメタ文字をリテラルとして判断する」のは別ったのですが
「/$in{'test'}/」←これのどこにメタ文字があるのかが分らないです
解決はしたけど理解出来てない…

234 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 14:25:47 ]
>>233
「ー」はShiftJISで0x81 0x5Bと表される。この2バイト目が'[' = 0x5B
他にもソ('\')とか+('{')とか色々。

文字コードの割り当て参考資料
ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/kanjicod.html

ASCIIコード表
ttp://adlib.rsch.tuis.ac.jp/~akira/lect/softa/ascii.html

235 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 14:31:01 ]
>>233
「$in{'test'}」自体がメタ文字を含むってことじゃなくて、
実行時に変数$in{'test'}にメタ文字を含むShiftJIS文字が入る可能性があるってこと。

236 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 14:51:17 ]
>>234-235
かなり見当違いな考えをしてたみたいですね
「ー」以外にも注意しなければいけない文字が結構ありますね
ご丁寧にありがとうございました

237 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 16:52:09 ]
>>230
1: Archive-Zip
Provide an interface to ZIP archive files.
Version: 1.18
Author: Ned Konz <perl@bike-nomad.com>
Provide: Archive::Zip version 1.18
Require: File-Which
Require: PathTools
Repo: trouchelle
CPAN: search.cpan.org/dist/Archive-Zip-1.18/
Installed: 1.18 (perl)
2: Archive-Zip
Provide an interface to ZIP archive files.
Version: 1.18
Author: Adam Kennedy (cpan@ali.as)
Provide: Archive::Zip version 1.18
Provide: Archive::Zip::BufferedFileHandle
Provide: Archive::Zip::MemberRead
Provide: Archive::Zip::MockFileHandle
Require: File-Which
Repo: ActiveState Package Repository
CPAN: search.cpan.org/dist/Archive-Zip-1.18/
Installed: 1.18 (perl)
3: Archive-Zip
Provide an interface to ZIP archive files.
Version: 1.18
Author: Ned Konz (perl@bike-nomad.com)
Require: Compress-Zlib
Repo: bribes
CPAN: search.cpan.org/dist/Archive-Zip-1.18/
Installed: 1.18 (perl)
こんな感じです。



238 名前:デフォルトの名無しさん [2007/01/08(月) 17:32:10 ]
>>227
おもったが、他の文字コードに変換してsplitするのはどうよ。
いちばんお手軽。

open(IN,"$file");
while(1) {
$line = <IN>;
$line=Jcode->new($line)->euc;
@data = split(/,/ ,$line);
if ( $line eq "" ) { last;}

if ( $data[0] =~ /$in{'test'}/ ) {
print Jcode->new("$data[1]\n")->sjis;
}

}
close(IN);


239 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 17:41:21 ]
たまに思うのだが、単なる文字列のスカラを
"$file" とかって、ダブルクォートで括って書くの無駄だよね。
全く同じ内容の、新しい文字列を生成してる訳でしょ?
だったら単に $file って書いた方が効率良いのに。

KENTとか、どっかのサンプルでわざわざ括るようになってるのかな。
こういう書き方してる人が、どこで習ってくるのか知りたい。


240 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 17:51:09 ]
>>238
$in{'test'}が正規表現の場合の話か。

EUCにするくらいなら、変換に多少コストが掛かるがUTF-8にして処理したほうがいいと思う。
今度は>>176こういう問題が発生する。SJISでも率は低いが起こるけれどね。

ってもしかして元質問も正規表現を入力する質問だったんだろか…
indexの代わりにマッチングを行ってるだけかと思って\Q\Eで答えちゃったけれども

>>239
最近は見ないけれど
print "@hoge";
とやっておいてなんか表示が変だと質問してくる人までいるから困る。

ついでにperlfaq
ttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq4.html#What_s_wrong_with_always_quoting

241 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 00:43:01 ]
>>239
あ、それ昔やってた。
なんかprint = ダブルクォート括らないと不安、みたいな気がしてたような。

242 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 00:46:26 ]
#俺にも
print $a, $b; #とすればいいところを
print $a . %b; #としていた時代や
print "$a$b"; #としていた時代があったなあ

243 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 01:05:55 ]
カンマは直接に文字連結の意味じゃないから余り好きじゃないなぁ。。
そっちの方が速いんだけどね。

244 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 01:39:08 ]
強制的に文字列コンテキストに変えたいときとか。
オブジェクトじゃなくてその文字列表現だけ保持したい場合とかあるでしょ。

245 名前:244 mailto:sage [2007/01/09(火) 01:46:32 ]
ちゃんと読んでなかった。スマソ

246 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 12:09:24 ]
>>243
散々既出だが、一応突っ込んどく。カンマの方が遲い

use Benchmark ;
my ( $hoge, $moge ) = ( 'hoge', 'moge' ) ;
sub dot { print STDERR $hoge . $moge . "\n" ; }
sub dq { print STDERR "$hoge$moge\n" ; }
sub comma{ print STDERR $hoge , $moge , "\n" ; }
timethese ( 1000000, { op1 => 'dot', op2 => 'dq', op3 => 'comma' } ) ;

$ perl Bench.pl 2> /dev/null
Benchmark: timing 1000000 iterations of op1, op2, op3...
  op1: 15 wallclock secs ( 7.67 usr + 4.81 sys = 12.48 CPU) @ 80128.21/s (n=1000000)
  op2: 12 wallclock secs ( 7.37 usr + 4.67 sys = 12.04 CPU) @ 83056.48/s (n=1000000)
  op3: 22 wallclock secs ( 9.13 usr + 11.23 sys = 20.36 CPU) @ 49115.91/s (n=1000000)

247 名前:243 mailto:sage [2007/01/09(火) 13:10:54 ]
>>246
初心者でゴメン。Windowsだから、nulに出力して実行してみた。
(Windows XP SP2 ActivePerl5.8)
Benchmark: timing 10000000 iterations of op1, op2, op3...
op1: 12 wallclock secs (11.02 usr + -0.02 sys = 11.00 CPU) @ 909173.56/s
(n=10000000)
op2: 12 wallclock secs (10.87 usr + 0.00 sys = 10.87 CPU) @ 919540.23/s
(n=10000000)
op3: 8 wallclock secs ( 7.02 usr + 0.00 sys = 7.02 CPU) @ 1425516.75/s
(n=10000000)
あれ?最初自分の考えでは関数を二回使ってるカンマの方が遅いと思ってたんだけど、
ベンチしたらドットの方が速いんで>>243を書いた。
なんで結果違くなっちゃうのか誰か教えて〜。



248 名前:243 mailto:sage [2007/01/09(火) 13:29:23 ]
あー、わかった。Perlでの出力処理はcommaの方が速いけど、
systemのIOでのオーバーヘッドで結果的にdotの方が速いという寸法か。>>246
Windowsで実際にファイルに出力して計測してみると大体同じ(わずかにcommaが速い)になった。
ここらへんはLinuxとWindowsで違うんだろうね。

249 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 14:06:58 ]
>>246
うんにゃ。

8Bのメモリ確保なら大してコストかからんからサンプルとして不十分じゃないか?。
$hogeが十キロの単位になってくるとカンマが追い抜くんじゃないだろうか。

250 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 01:42:28 ]
>>248
いや、>>246はSTDERRに出力してるからカンマ区切りが遅くなっているだけ。

STDERRはperl内部でも特別扱いされていて、カンマで区切られた要素毎に fflush される。
なので、STDERRへ出力する場合はカンマ区切りの方が(fflushの増える分だけ)遅くなる。
他のハンドルだと($|=1でも)、普通はカンマ区切りの方が速くなる。

251 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 04:22:12 ]
えっちだから遅いんだね。

252 名前:デフォルトの名無しさん [2007/01/10(水) 15:25:22 ]
フリーウェアのソースを眺めてると、一つのファイルにやたらと機能を詰め込んでるのが
多いように感じるんだけど、これってどうなんだろう。
掲示板だったら、表示.cgi 書込み.cgi とか分けた方が保守しやすいのでは、と。
意見求みまする。

253 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 15:43:02 ]
>>252
インスコするファイルがたくさんあるとお子様が混乱してしょうもない
質問で邪魔してくるので、ソースメンテする手間はかかるけどトータル
では得らしい。


254 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 15:51:55 ]
コーディング外の質問です。
今、plファイルのwindows向けのアイコンを何となく作っていますが、
真珠っぽいのがファイルについたアイコンか、らくだの絵のアイコンかどちらがふさわしいと思いますか?

255 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 16:07:31 ]
当然らくだ

256 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 16:18:38 ]
PARのparl.exe

257 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 16:25:41 ]
>>256



258 名前:デフォルトの名無しさん [2007/01/10(水) 20:00:56 ]
初めて書き込みさせて頂きました。

現在、perl(HPUX)とNet-Telnet-3.03を利用してtelnet接続しているのですが、
telnet中にESCキーを入力させる事は可能なのでしょうか?

perl:v5.8.0 built for PA-RISC1.1-thread-multi
telnet:Net-Telnet-3.03

対話式なプログラムを実行していき、途中で
どうしてもESCキーが必要になりました。

$telnet->print("\x1B");
こんな感じで文字コード入力でもダメでした。。

259 名前:韋駄天はふと考えた [2007/01/10(水) 23:02:23 ]
あなた達も↓のような経験が一度や二度あるでしょう。私はわずか4年の間に
2回もパソコンをウイルスによって不調になり使えなくなりました。
私達はパソコン製造業者及び修理業者とパソコン関連で商売をしている業者を
あまりにも野放にしすぎました。
その結果が自作自演ウイルスバラ撒きの悪徳商法です。

703 :韋駄天はふと考えた :2007/01/10(水) 22:11:17 ID:ZKnpXOph
ノートンがウイルスを検出しました。
あなたのパソコンを60日間に渡り78250個ものウイルスから守ってきました。
もうすぐ無料期間が終わりますので、ウイルス対策有料ソフトを購入してください。

はぁ????なにいってんの?なんで、たった60日間で78250個ものウイルスが進入してくんだよ?
明らかに自作自演目的の業者の仕業じゃねえか?

犯人はおまえらだろが!この犯罪者かぶれの集団が!!

あちこちのサイトを開く度にコンピューターウイルスがパソコンにバンバン進入してくる。

おまえらな!自分で作ったサイトにコンピューターウイルスを混ぜて、他人の
何十万台ものパソコンを不調にさせたり故障させて、ウイルス対策ソフトを
高額で売りつけてまで儲けたいのかよ?

自転車屋が地域の自転車をパンクさせて回ったり、消防士が管轄地域で放火して
回るのと同じ犯罪をおまえらがやっているんだよ!

てめえらで新たなコンピューターウイルスを次々に作ってはバラ撒いては、ウイルス対策ソフトを
高値で売りつける自作自演商売しやがって!

この腐れ外道共が!    恥知らずの犯罪者共めが!






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

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

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