新しくperlで標準で欲しい関数は?
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/12/15 03:41ID:43dxFG56標準で「これがあれば便利なのに・・・」
と思う関数は、どんなもの?
便宜的に名前をつけて、仕様を説明してみてくれ。
0077nobodyさん
02/04/21 10:45ID:mSKVAdKd%a=(%b,%c);
じゃだめか?
0078nobodyさん
02/04/21 16:42ID:???コテハンってウザイね。
0079nobodyさん
02/04/21 16:47ID:???チャンチャラチャンチャラ
(⌒) /
(^ @^) -
(⊃⊂) ヽ
オッカシー
(⌒) /
(・ @^) -
○( ⊂) ヽ
0080nobodyさん
02/04/21 17:38ID:???#include "perl6/dbi.h"
// usage: program perl-expr files
int main(int argc, char** argv){
PERL6_MAIN_BEGIN;
Perl::SV dbh = Perl::DBI::connect("dbi:foo:bar.db");
Perl::SV sth = dbh->prepare("SELECT * FROM hoge");
sth->execute();
Perl::SV row;
while(row = sth->fetchrow_arrayref){
Perl::println(Perl::join(" ", row));
}
sth->finish();
dbh->disconnect();
PERL6_MAIN_END;
return 0;
}
008281
02/04/21 18:37ID:???0083ぺるにゃん
02/04/28 20:10ID:gfGqCBjT今の Perl は、巨大な配列を sort すると、効率が悪くなります;;
@sorted = sort(@array);
@array の要素数が増えるにしたがって、処理時間が爆発します。
これは Perl の sort() 関数が、効率の悪いアルゴリズムを
使っているせいでしょうか?
かんたんな実験により、配列の要素数 を N とすると、perl の sort() 時の
比較回数はおよそ N * log N 回のオーダーという結果がでました。これは、
配列が 100 万要素だったとしても、たかだか N の20倍程度の比較回数にすぎません。
おそらくは最高レベルの効率です。私はこれに文句をつけることはできません。
では、sort() 自体は実用じゅうぶん速いのに、
なぜ上の1行は爆発的に遅くなるのでしょうか?試しにこう書いてみました。
sort(@array);
これは@array が100万要素を超えていても、じゅうぶん高速でした。
(当然、ボイドコンテキストなので、結果は捨てられるので、意味はありません)
ということは、巨大な配列の「複製」のために、ものすごく時間を
取られているということです。それはありうることです。
ソート結果を直接 @array に代入してしまう関数があれば、
これは解決できると思います。そういう sort関数を希望ですにゃ。
( 私は ruby 使いじゃないのですが、
ruby には、「破壊的 sort」が用意されているらしいんですねぇ・・・
さすがにゃ)
0084nobodyさん
02/04/28 22:06ID:???サブルーチンで作ってみようと努力したが構造的に不可能だった鬱
0085_gunzip@訂正歓迎
02/04/28 22:16ID:???Exegesesを見る限り、destructive sortがPerl6に取り込まれる可能性はなさそう。
>>84
Perl5では、外部モジュールで。
http://search.cpan.org/search?dist=Switch
Perl6では、givenという名前で組み込まれる予定です。
(switchと命名されなかったのは、C/C++/Javaのswitchとは違うということを際立たせるためだそうで)
http://www.perl.com/pub/a/2002/01/15/apo4.html?page=2#rfc%20022:%20control%20flow:%20builtin%20switch%20statement
用例 http://www.perl.com/lpt/a/2002/04/01/exegesis4.html
欲張りすぎて、ちょっとわかりににくひ。(組み合わせが23通りもあるのかよ...)
0086nobodyさん
02/04/29 11:52ID:5LS+M/ng初心者は黙ってろ スレのレベルが下がる
0088nobodyさん
02/04/29 12:32ID:5LS+M/ng必死だな。誰かさん(大爆笑)
0089nobodyさん
02/04/29 14:52ID:???ヤフーに帰れ
0090nobodyさん
02/04/29 19:01ID:NmdFgil6必死だな。誰かさん(大爆笑)
0091ロボ鉄 ◆MGTy6iYI
02/04/29 19:09ID:???必死だな。誰かさん(大爆笑)
0092nobodyさん
02/04/29 19:17ID:NmdFgil6必死だな。誰かさん(大爆笑)
0093nobodyさん
02/04/29 20:07ID:???乙武必死だな(藁
0094乙武
02/04/29 21:16ID:???0095nobodyさん
02/04/29 21:43ID:NmdFgil60096あぼーん
NGNG0097not 83
02/04/30 11:53ID:9z6SUNiy> Exegesesを見る限り、destructive sortがPerl6に取り込まれる可能性はなさそう。
そうなんですか。むむー。
せめてsortを多重定義できればいいんですがねぇ。tieのSORTでもいいですが。
それにしても新構文はかなり奇怪ですなあ。
↓かなり驚きましたよ。
if @array =~ $elem {...} # true if @array contains $elem
if $key =~ %hash {...} # true if %hash{$key}
if $value =~ (1..10) {...} # true if $value is in the list
if $value =~ ('a',/\s/,7) {...} # true if $value is eq to 'a'
# or if $value contains whitespace
# or if $value is == to 7
0098nobodyさん
02/05/01 04:48ID:HoZj1fyxシェルもろくに使えない奴らに「複雑な設定が必要」なんて言われもない
批判を受けるのはもういやだ。
0099nobodyさん
02/05/01 23:31ID:ZTriJMsXもしくは、チョンを殺してくれる関数。
0101nobodyさん
02/05/02 04:25ID:Opu6NMoFしんだらぁ?
0102ぺるにゃん
02/05/03 05:12ID:???そうにゃんだ。残念。
でも明快なお答えをありがとう。
>>100
ぜい肉をとるために、getほにゃららっていう network 関連の関数を
モジュールに追い出すべきという意見はどうでしょう。
0103nobodyさん
02/05/03 13:14ID:???・数学関数をモジュールに追い出し
・format writeはイラネーヨ
0104nobodyさん
02/05/05 19:28ID:???0106nobodyさん
02/05/06 21:30ID:uN5rTlAV痩せすぎているので、少しは太れよってみんなから言われるよ
0107nobodyさん
02/05/07 20:48ID:NQEaYM+J0108nobodyさん
02/05/08 13:20ID:???きもい系のヤシなんだよねw
0109nobodyさん
02/05/08 19:53ID:???ファイルからgrepする関数が欲しい。
@res = fgrep(/hoge/, /\.log$/,"/var/log/");
みたいな。
0110nobodyさん
02/05/08 20:18ID:???それこライブラリの仕事だろ。
それ以前にgrepとfgrepという全く別の関数が存在することも大いに問題だし。
どうしてもというならShell.pmでも使っとけ。
#!/bin/perl
use Shell qw(fgrep);
$ENV{PATH} = '/bin';
@res = fgrep 'hoge', '/var/log';
0111nobodyさん
02/06/24 20:29ID:???その昔なぜ localtime が標準で実装されてて timelocal がなかったのか不思議だ。
0112nobodyさん
02/11/25 09:32ID:ftkefb9EPerl5.8.0ではちゃんと動くのか?
0113nobodyさん
02/11/25 20:58ID:???0114nobodyさん
02/11/27 00:59ID:???god("テキトーなデザインを出力する");
god("このソースが人に読まれない");
っていうのが欲しいです。
0115nobodyさん
02/12/11 10:58ID:00jmHk8S任意の項目によるソートとかいろいろ。
0116nobodyさん
02/12/11 22:50ID:???DBD::CSV使えば?
0119nobodyさん
02/12/16 10:19ID:YT4sQXgY0120nobodyさん
02/12/16 23:14ID:???usage:
%c = merge ( %a, %b );
こんな感じ?
確かにシンプルだ……。
>>49は、キーがかぶった場合の仕様を作らなかったから、これでもいいと言える。
勉強になります。
0121nobodyさん
03/01/12 02:03ID:qwhpCAH/http://allabout.co.jp/computer/cgiperl/closeup/CU20010731A/index_2.htm
0122nobodyさん
03/01/12 17:53ID:???timethis(20000, sub{ -f 'index.html'});
exit;
timethis 20000: 10 wallclock secs ( 9.77 usr + 0.00 sys = 9.77 CPU) @ 2047.08/s (n=20000)
遅すぎ、、、
もっと速くしてくれ。
0123nobodyさん
03/01/12 19:13ID:bGDRedPP%c = ( %a, %b );
どこらへんに三行要るんだろう?
0124ぺるにゃん
03/01/12 19:22ID:3H9ULczAこれは、
OSに処理を依頼しているわけですから、
どの言語でやっても遅くなると思いますよ。
0126ぺるにゃん
03/01/12 21:03ID:3H9ULczA元質問のひとは、一時的にメモリにギュバーっと展開しちゃうのは
嫌なのではないでしょうか
0127nobodyさん
03/01/13 00:18ID:KvjrngEn今でも欲すぃ
0128nobodyさん
03/01/13 01:32ID:???0129nobodyさん
03/01/13 02:03ID:/r5THG1/ネットワーク関連のいらない関数ステロ!
0130nobodyさん
03/01/13 05:39ID:9OqkABMVMath.min()
Scalar::Utilは実装のほとんどをList::Utilに頼ってるんだから、
一緒にしてUtilityとでもすればよかったと思う。
>>121
mergeってC++のSTLにあるような関数だと思うけど。
>>129
そうだね、どうせuse Socketしないとまともに使えないんだから、
Socketモジュールに入れても混乱は少ない気がする。
0133山崎渉
03/01/15 13:33ID:???0134nobodyさん
03/01/27 21:06ID:???0135山崎渉
03/03/13 17:49ID:???0136山崎渉
03/04/17 12:14ID:???0137山崎渉
03/04/20 06:19ID:???( ^^ )< ぬるぽ(^^)
0138山崎渉
03/05/22 02:20ID:???0139nobodyさん
03/05/22 22:45ID:???htmlspecialchrs
nl2br
っていうか、自分でこしらえたけど
0140nobodyさん
03/05/25 07:07ID:???0141山崎渉
03/05/28 17:10ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0142山崎 渉
03/07/15 11:24ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0143山崎 渉
03/08/02 02:29ID:???( ^^ )< ぬるぽ(^^)
0145nobodyさん
04/01/09 07:38ID:???0146nobodyさん
04/12/21 18:37:46ID:Ctl+24VTあったっけ。
0147nobodyさん
04/12/22 05:24:08ID:???PHPの真似だけはしてほしくないね
0149nobodyさん
04/12/28 23:22:04ID:???・・・ってか、自作した。
0153nobodyさん
05/01/03 13:01:46ID:???なるほど
確かに簡単な処理で何とかなるが、速度面が心配でな・・・。
chompのリプレースって事ならあってもイイと思ったんだが、どうよ。
0154nobodyさん
05/01/05 09:38:00ID:???確かに今使ってるのよりも処理が速くなればそれに越したことはないな
ただPerl側であまり用意すると便利な反面、コードの理解力を落とすから
そのバランスだよね
0155nobodyさん
05/01/05 19:07:56ID:???0156nobodyさん
2005/07/20(水) 19:33:05ID:JCdrAQ5osub merge {}
0157nobodyさん
2005/07/25(月) 15:46:43ID:???my $chobitto = shift;
my $gossori = $chobitto ** 1000000;
return $gossori;
}
一番の問題はどうやって関数にお金を渡すかだ。
0158nobodyさん
2005/07/25(月) 20:28:47ID:???0159nobodyさん
2005/07/25(月) 22:38:22ID:63FLM8440160nobodyさん
2005/07/28(木) 02:53:11ID:???新しく標準で欲しいクラス、パッケージは沢山ある。
0161nobodyさん
2005/07/28(木) 15:30:00ID:???ソケット・ネットワーク関連(どうせuse Socketしないとまともに使えない)
get* set* 系(getpwentなど。Windowsじゃ意味ねー。こういうものこそモジュールの仕事だろ)
フォーマット関連(おかげでwrite()が無駄に予約語に…)
セマフォ関連(これもモジュールで対応してくれ)
このくらい削ればプロセスサイズも大分小さくなって起動が早くなりそうだ。
0162nobodyさん
2005/10/11(火) 04:25:38ID:hXdkdtTbchomp($_ = <<'END');
こちょ♪こちょ♪
END
とせずに済む関数
0165nobodyさん
2005/10/12(水) 08:19:58ID:???0166nobodyさん
2005/10/12(水) 17:07:16ID:???0167nobodyさん
2005/12/19(月) 02:00:37ID:???0168nobodyさん
2008/01/23(水) 19:13:31ID:S4Tcgs5g0169nobodyさん
2008/10/14(火) 14:31:52ID:???・・・なったら泣くな
0170nobodyさん
2008/12/29(月) 02:00:29ID:???0171nobodyさん
2009/02/19(木) 01:22:45ID:???特にprintとか普通できないやつ
モジュールuseしたら勝手にポッポアップウィンドウが開くように
ヘッダーを書き換えたい
0172nobodyさん
2009/02/19(木) 14:25:32ID:???STDOUTは変えれるし
出力先も変えれる
0173nobodyさん
2009/06/13(土) 05:00:12ID:???> 特にprintとか普通できないやつ
>
> モジュールuseしたら勝手にポッポアップウィンドウが開くように
> ヘッダーを書き換えたい
# perl -MPrintToMsgBox -e "print qq(hello)"
# PrintToMsgBox.pm
package PrintToMsgBox;
use Filter::Simple;
FILTER_ONLY code => sub { s/\b(?<!CORE::)print\b/use Win32; Win32::MsgBox/g };
1;
0174nobodyさん
2009/12/06(日) 08:37:25ID:ev9aXePeつuse POSIX;
つuse Moose;
つCoro;
4年も経つとうわ言も現実になるのね。
0175nobodyさん
2009/12/23(水) 23:53:26ID:scWrjl+i関数はないけど、Sjis.pm を使う手がある。
0177175
2009/12/27(日) 15:55:53ID:+zTA95HS$_ = <<'END';
こちょ♪こちょ♪ 【\n】
END
chomp($_);
になる。
$_ = <<'END' とすれば、シフトJISの第2バイトに \x5c が使われ
ている場合でも変数に無事代入することができるが、副作用として
余分な改行コードが入ってしまうので chomp で取り除く。
でも今は昔。Sjis.pm がそれをやってくれる。
ありがたい時代だ。
■ このスレッドは過去ログ倉庫に格納されています