探検


新しくperlで標準で欲しい関数は?

1名無しさん@お腹いっぱい。
垢版 |
01/12/15 03:41ID:43dxFG56
結局自分で作ればいいんだが、
標準で「これがあれば便利なのに・・・」
と思う関数は、どんなもの?
便宜的に名前をつけて、仕様を説明してみてくれ。
02/04/21 16:47ID:???
>>78
      チャンチャラチャンチャラ      
  (⌒)  /
 (^ @^) -
  (⊃⊂) ヽ

      オッカシー      
  (⌒)  /
 (・ @^) -
○( ⊂) ヽ
02/04/21 17:38ID:???
#include "perl6.h"
#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;
}
02/04/21 18:15ID:???
>>80
それは何?
C/C++のコードではないようだし。
8281
垢版 |
02/04/21 18:37ID:???
C++だった。ハズカシ
83ぺるにゃん
垢版 |
02/04/28 20:10ID:gfGqCBjT
sort のお話ですにゃ。
今の 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」が用意されているらしいんですねぇ・・・
さすがにゃ)
02/04/28 22:06ID:???
switch欲しい……
サブルーチンで作ってみようと努力したが構造的に不可能だった鬱
02/04/28 22:16ID:???
>>83
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通りもあるのかよ...)
86nobodyさん
垢版 |
02/04/29 11:52ID:5LS+M/ng
うるせーバカ。
初心者は黙ってろ スレのレベルが下がる


02/04/29 12:30ID:???
>>86←典型例
88nobodyさん
垢版 |
02/04/29 12:32ID:5LS+M/ng
>>87
必死だな。誰かさん(大爆笑)
02/04/29 14:52ID:???
>(大爆笑)
ヤフーに帰れ
90nobodyさん
垢版 |
02/04/29 19:01ID:NmdFgil6
>>89
必死だな。誰かさん(大爆笑)


02/04/29 19:09ID:???
>>90
必死だな。誰かさん(大爆笑)
92nobodyさん
垢版 |
02/04/29 19:17ID:NmdFgil6
>>91
必死だな。誰かさん(大爆笑)





02/04/29 20:07ID:???
>>92
乙武必死だな(藁
94乙武
垢版 |
02/04/29 21:16ID:???
必死で生きてますが何か?
95nobodyさん
垢版 |
02/04/29 21:43ID:NmdFgil6
(゚Д゚)ハァ? しねばぁ?
NGNG
あぼーん
97not 83
垢版 |
02/04/30 11:53ID:9z6SUNiy
>>85
> 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
98nobodyさん
垢版 |
02/05/01 04:48ID:HoZj1fyx
標準関数よりも、標準ライブラリを充実させて欲しい
シェルもろくに使えない奴らに「複雑な設定が必要」なんて言われもない
批判を受けるのはもういやだ。
99nobodyさん
垢版 |
02/05/01 23:31ID:ZTriJMsX
女性の股を開く関数。

もしくは、チョンを殺してくれる関数。
100nobodyさん
垢版 |
02/05/01 23:34ID:???
>>98
これ以上ブクブク太らせて楽しい?
101nobodyさん
垢版 |
02/05/02 04:25ID:Opu6NMoF
>>97
しんだらぁ?
02/05/03 05:12ID:???
>>85

そうにゃんだ。残念。
でも明快なお答えをありがとう。

>>100
ぜい肉をとるために、getほにゃららっていう network 関連の関数を
モジュールに追い出すべきという意見はどうでしょう。
103nobodyさん
垢版 |
02/05/03 13:14ID:???
・ネットワーク関連の関数をモジュールに追い出し
・数学関数をモジュールに追い出し
・format writeはイラネーヨ

104nobodyさん
垢版 |
02/05/05 19:28ID:???
いっそのこと関数全部モジュールに追い出してしまえ!
105nobodyさん
垢版 |
02/05/05 20:11ID:???
>>104
C言語ライクで良い感じですな。
106nobodyさん
垢版 |
02/05/06 21:30ID:uN5rTlAV
>>100
痩せすぎているので、少しは太れよってみんなから言われるよ
107nobodyさん
垢版 |
02/05/07 20:48ID:NQEaYM+J
sage
108nobodyさん
垢版 |
02/05/08 13:20ID:???
そういうセリフ吐く奴ってoffで合うと大概口だけいかにももててますアピールの
きもい系のヤシなんだよねw
109nobodyさん
垢版 |
02/05/08 19:53ID:???
/bin/grepを呼ぶのにエスケープの手間がかかるんで
ファイルからgrepする関数が欲しい。
@res = fgrep(/hoge/, /\.log$/,"/var/log/");
みたいな。
110nobodyさん
垢版 |
02/05/08 20:18ID:???
>>109
それこライブラリの仕事だろ。
それ以前にgrepとfgrepという全く別の関数が存在することも大いに問題だし。
どうしてもというならShell.pmでも使っとけ。

#!/bin/perl
use Shell qw(fgrep);
$ENV{PATH} = '/bin';
@res = fgrep 'hoge', '/var/log';
111nobodyさん
垢版 |
02/06/24 20:29ID:???
今は Time::Local があるからまあ許すが
その昔なぜ localtime が標準で実装されてて timelocal がなかったのか不思議だ。
112nobodyさん
垢版 |
02/11/25 09:32ID:ftkefb9E
Thread.pmがActivePerlでまともに使えるようになってほしい。
Perl5.8.0ではちゃんと動くのか?
113nobodyさん
垢版 |
02/11/25 20:58ID:???
mmapを標準関数、もしくはcore moduleでおねがいぃ
114nobodyさん
垢版 |
02/11/27 00:59ID:???
god("jpeg画像を120*120にリサイズする");
god("テキトーなデザインを出力する");
god("このソースが人に読まれない");

っていうのが欲しいです。
115nobodyさん
垢版 |
02/12/11 10:58ID:00jmHk8S
CSVファイルを扱う関数。
任意の項目によるソートとかいろいろ。
116nobodyさん
垢版 |
02/12/11 22:50ID:???
>115
DBD::CSV使えば?
117nobodyさん
垢版 |
02/12/12 07:00ID:???
>>116
DBIモジュールが標準モジュールになったら使うよ。
118nobodyさん
垢版 |
02/12/15 16:09ID:???
>>49
俺様の力作使ってはくれまいか?
sub merge
{
return(@_);
}
119nobodyさん
垢版 |
02/12/16 10:19ID:YT4sQXgY
↑すごいYO!
120nobodyさん
垢版 |
02/12/16 23:14ID:???
>>118
usage:
%c = merge ( %a, %b );

こんな感じ?
確かにシンプルだ……。
>>49は、キーがかぶった場合の仕様を作らなかったから、これでもいいと言える。
勉強になります。
121nobodyさん
垢版 |
03/01/12 02:03ID:qwhpCAH/
marge関数はPerl6で追加を検討しているらしい。
http://allabout.co.jp/computer/cgiperl/closeup/CU20010731A/index_2.htm
122nobodyさん
垢版 |
03/01/12 17:53ID:???
use Benchmark;
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)
遅すぎ、、、
もっと速くしてくれ。
123nobodyさん
垢版 |
03/01/12 19:13ID:bGDRedPP
>>49 >書いても3行なんですけどね。
%c = ( %a, %b );

どこらへんに三行要るんだろう?
124ぺるにゃん
垢版 |
03/01/12 19:22ID:3H9ULczA
>>122
これは、
OSに処理を依頼しているわけですから、
どの言語でやっても遅くなると思いますよ。
125122
垢版 |
03/01/12 19:27ID:???
>>124
そうなのですか、、、
うぅ、残念です。
126ぺるにゃん
垢版 |
03/01/12 21:03ID:3H9ULczA
>>123
元質問のひとは、一時的にメモリにギュバーっと展開しちゃうのは
嫌なのではないでしょうか
127nobodyさん
垢版 |
03/01/13 00:18ID:KvjrngEn
Perlはじめたころ println() が欲しかった。
今でも欲すぃ
128nobodyさん
垢版 |
03/01/13 01:32ID:???
php() PHPが使える関数
129nobodyさん
垢版 |
03/01/13 02:03ID:/r5THG1/
ていうか

ネットワーク関連のいらない関数ステロ!
130nobodyさん
垢版 |
03/01/13 05:39ID:9OqkABMV
Math.max()
Math.min()
03/01/14 10:29ID:???
5.8で標準モジュールに追加されたList::UtilとScalar::Utilは便利なんだけど、
Scalar::Utilは実装のほとんどをList::Utilに頼ってるんだから、
一緒にしてUtilityとでもすればよかったと思う。

>>121
mergeってC++のSTLにあるような関数だと思うけど。

>>129
そうだね、どうせuse Socketしないとまともに使えないんだから、
Socketモジュールに入れても混乱は少ない気がする。
132nobodyさん
垢版 |
03/01/14 21:29ID:???
>>130
Math.mid()はいらんのか?
133山崎渉
垢版 |
03/01/15 13:33ID:???
(^^)
134nobodyさん
垢版 |
03/01/27 21:06ID:???
Math.ave()

135山崎渉
垢版 |
03/03/13 17:49ID:???
(^^)
136山崎渉
垢版 |
03/04/17 12:14ID:???
(^^)
137山崎渉
垢版 |
03/04/20 06:19ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
138山崎渉
垢版 |
03/05/22 02:20ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
139nobodyさん
垢版 |
03/05/22 22:45ID:???
PHPのurlencode
htmlspecialchrs
nl2br
っていうか、自分でこしらえたけど
140nobodyさん
垢版 |
03/05/25 07:07ID:???
use CGI
141山崎渉
垢版 |
03/05/28 17:10ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
142山崎 渉
垢版 |
03/07/15 11:24ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
143山崎 渉
垢版 |
03/08/02 02:29ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
03/09/02 16:50ID:???
けっとばすぞ〜
145nobodyさん
垢版 |
04/01/09 07:38ID:???
塗る歩禁止!
146nobodyさん
垢版 |
04/12/21 18:37:46ID:Ctl+24VT
配列の要素の最大値や最小値を返す関数とか。

あったっけ。
147nobodyさん
垢版 |
04/12/22 05:24:08ID:???
今の関数使えたらなんでもいいけど
PHPの真似だけはしてほしくないね
148nobodyさん
垢版 |
04/12/24 19:51:15ID:???
>>146
List::Util
でいいじゃん。
149nobodyさん
垢版 |
04/12/28 23:22:04ID:???
どんな改行コードでもchompしてくれる関数。
・・・ってか、自作した。
150nobodyさん
垢版 |
05/01/01 22:52:21ID:???
>>149
そんな関数いらね
151nobodyさん
垢版 |
05/01/02 20:00:36ID:???
>>150
漏れの場合、なければ仕事にならん・・・。
152nobodyさん
垢版 |
05/01/02 23:43:57ID:???
>>151
いらないと言ったのは
わざわざPerl側で用意するほどの関数ではないという意味だ
153nobodyさん
垢版 |
05/01/03 13:01:46ID:???
>>152
なるほど
確かに簡単な処理で何とかなるが、速度面が心配でな・・・。
chompのリプレースって事ならあってもイイと思ったんだが、どうよ。
154nobodyさん
垢版 |
05/01/05 09:38:00ID:???
>>153
確かに今使ってるのよりも処理が速くなればそれに越したことはないな
ただPerl側であまり用意すると便利な反面、コードの理解力を落とすから
そのバランスだよね
155nobodyさん
垢版 |
05/01/05 19:07:56ID:???
select関数をどうにかしてほしい
156nobodyさん
垢版 |
2005/07/20(水) 19:33:05ID:JCdrAQ5o
>>118
sub merge {}
157nobodyさん
垢版 |
2005/07/25(月) 15:46:43ID:???
sub make_money {
  my $chobitto = shift;
  my $gossori = $chobitto ** 1000000;
  return $gossori;
}

一番の問題はどうやって関数にお金を渡すかだ。
158nobodyさん
垢版 |
2005/07/25(月) 20:28:47ID:???
おっさん
159nobodyさん
垢版 |
2005/07/25(月) 22:38:22ID:63FLM844
夜のおかずになってくれる関数。
160nobodyさん
垢版 |
2005/07/28(木) 02:53:11ID:???
新しく標準で欲しい関数は無いけど、
新しく標準で欲しいクラス、パッケージは沢山ある。

161nobodyさん
垢版 |
2005/07/28(木) 15:30:00ID:???
標準で欲しい関数は無いけど、モジュールに追い出してほしい関数なら沢山ある。

ソケット・ネットワーク関連(どうせuse Socketしないとまともに使えない)
get* set* 系(getpwentなど。Windowsじゃ意味ねー。こういうものこそモジュールの仕事だろ)
フォーマット関連(おかげでwrite()が無駄に予約語に…)
セマフォ関連(これもモジュールで対応してくれ)

このくらい削ればプロセスサイズも大分小さくなって起動が早くなりそうだ。
162nobodyさん
垢版 |
2005/10/11(火) 04:25:38ID:hXdkdtTb
Shift_JIS で書かれた文字列を

chomp($_ = <<'END');
こちょ♪こちょ♪
END

とせずに済む関数
163nobodyさん
垢版 |
2005/10/12(水) 02:12:56ID:???
>>162
それsjisじゃなくてWindowsの仕様だぞ・・・
164nobodyさん
垢版 |
2005/10/12(水) 02:47:54ID:???
>>162
できましたー。

use encoding qw(shiftjis);

# え、これと違う?
165nobodyさん
垢版 |
2005/10/12(水) 08:19:58ID:???
次期PHPってParrot採用との噂は本当なん?
166nobodyさん
垢版 |
2005/10/12(水) 17:07:16ID:???
その噂ってparrotが2002頃に出るって言われてた頃のだよね。
167nobodyさん
垢版 |
2005/12/19(月) 02:00:37ID:???
暗号化復号化
168nobodyさん
垢版 |
2008/01/23(水) 19:13:31ID:S4Tcgs5g
もはや2年前の記事か・・・
169nobodyさん
垢版 |
2008/10/14(火) 14:31:52ID:???
elsifがelseifに!
・・・なったら泣くな
170nobodyさん
垢版 |
2008/12/29(月) 02:00:29ID:???
わかりやすい変数名をつけてくれる関数が切実に欲しいです><
171nobodyさん
垢版 |
2009/02/19(木) 01:22:45ID:???
組み込み関数をオーバーライドする関数
特にprintとか普通できないやつ

モジュールuseしたら勝手にポッポアップウィンドウが開くように
ヘッダーを書き換えたい
172nobodyさん
垢版 |
2009/02/19(木) 14:25:32ID:???
printは出来なくても
STDOUTは変えれるし
出力先も変えれる
173nobodyさん
垢版 |
2009/06/13(土) 05:00:12ID:???
>>171
> 特に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;
174nobodyさん
垢版 |
2009/12/06(日) 08:37:25ID:ev9aXePe
>>161
つuse POSIX;
つuse Moose;
つCoro;

4年も経つとうわ言も現実になるのね。
175nobodyさん
垢版 |
2009/12/23(水) 23:53:26ID:scWrjl+i
>>162

関数はないけど、Sjis.pm を使う手がある。
176nobodyさん
垢版 |
2009/12/24(木) 05:31:18ID:???
>>175
>>162はどういう意味?
177175
垢版 |
2009/12/27(日) 15:55:53ID:+zTA95HS
分解すると

$_ = <<'END';
こちょ♪こちょ♪ 【\n】
END
chomp($_);

になる。

$_ = <<'END' とすれば、シフトJISの第2バイトに \x5c が使われ
ている場合でも変数に無事代入することができるが、副作用として
余分な改行コードが入ってしまうので chomp で取り除く。

でも今は昔。Sjis.pm がそれをやってくれる。

ありがたい時代だ。


178nobodyさん
垢版 |
2009/12/27(日) 16:36:48ID:???
>>177
なるほど、そういうことか。
�d
レスを投稿する


ニューススポーツなんでも実況