Perlについての質問箱 11箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGPerlについての質問箱です
"There's more than one way to do it"ということで
ぱぁるの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
WEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
姉妹スレッド
http://pc5.2ch.net/test/read.cgi/php/1089779036/
過去ログは>>2-1001あたり
0153152
NGNG0154デフォルトの名無しさん
NGNGPerl 関係ない。 man sendmail したか?
-t の場合は宛て先をヘッダから抽出するようになる。その $to_add の指定は間違い。
ヘッダに To: とか Cc: とか Bcc: とかで指定する。
0155デフォルトの名無しさん
NGNGhttp://qmail.jp/
文面が痛いが djb と大先生なんだから我慢しる(w
個人的には、qmail-inject 推奨。
>>152
てめぇマァヴだな? > (^_^;)
0156デフォルトの名無しさん
NGNGqmailのは知らんがsendmailは-tするとヘッダからもあて先を
取り出すけど、コマンドラインで指定したあて先も有効だったような。
他に気になるのは、「,」で区切ってることだな。普通は別々の
引数になるように空白で区切る。本家sendmailはそれでも適当に
よろしくやってくれますがqmailのはどうだろうか?
0157デフォルトの名無しさん
NGNG>>147
OK. RSS勉強してくるぜ
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNGちゃんとメール送信できた。
(ちなみに $to_add="test1\@xxxx.co.jp , test2\@xxxx.co.jp" ってやると複数指定できた。)
でも何故か送られてきたメールのTo欄の内容が無い。一切無い。
これは何ゆえ? そういう仕様なのか?
0160デフォルトの名無しさん
NGNGそういう仕様です。自分で To 欄出力してください。
0161デフォルトの名無しさん
NGNG「,」宛にもメール出されてないか?
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG直接起動された場合を区別する方法はありますでしょうか?
ActivePerlの5.8を使っています。
0166デフォルトの名無しさん
NGNGif (-t) {} else {} は無理?
0167デフォルトの名無しさん
NGNGレスありがとうございます。
試してみたところ、どちらの場合も -t が真となってしまいました。
0168デフォルトの名無しさん
NGNGあー、すまん。requireしている方もコマンドラインから起動してたら真になってしまうな。
俺にはわかんねーや。
ところでrequireされる方を起動して何が起きるの?やりたいことがよく分からんが。
普通1返して終わりじゃない?
0169デフォルトの名無しさん
NGNG--- hoge.pl ---
require 'req.pl'
--- req.pl ---
if ($0 eq 'req.pl') {
print "direct"
} else {
print "required";
}
1;
0170デフォルトの名無しさん
NGNGこちらでも動きました。ありがとうございます。
やりたかったのは、単体としてもモジュールとしても使えるスクリプトです。
単体の場合はコマンドライン引数を用いて処理します。
0171デフォルトの名無しさん
NGNG> 単体の場合はコマンドライン引数を用いて処理します。
だったら @ARGV を調べればいいんでないの?
0172デフォルトの名無しさん
NGNGふつー if (__FILE__ eq $0) では?
0173デフォルトの名無しさん
NGNG$a = $list[0];
を1行で書きたいのですが、どうすればイイですか?
@list = grep {/hoge/} @list;$a = $list[0];
以外で・・・
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG>>174
@listの更新も入れたいなら
$a = (@list = grep {/hoge/} @list)[0];
か? 試してないけど。
0176デフォルトの名無しさん
NGNG174,175以外で
@list = grep {/hoge/} @list , $a = $list[0];
($a) = grep {/hoge/} @list;
0178デフォルトの名無しさん
NGNG正規表現でも無理やり一行で書いて、効率を犠牲にしてるのを見るけど。
0179デフォルトの名無しさん
NGNGあとこの場合は一行の方が見やすい気が?(たぶん。
>>173
@listん中には最初のヤツ入らないけど。
($a, @list) = grep {/hoge/} @list;
0180デフォルトの名無しさん
NGNG>>174さんを使わせていただきます。
0181デフォルトの名無しさん
NGNGsub test { foreach (@_) {return $_ if(/hoge/)} }
$a = &test (@list);
0182デフォルトの名無しさん
NGNGgrepよりforeachで回したほうが速いんですか?
0183デフォルトの名無しさん
NGNGベンチ取る癖を付けた方がいいぞ
モジュール使えば面倒でもないから
0184181
NGNGたとえば、@list = ("hoge", "geho", "foo", "bar"); のとき、
・ (grep {/hoge/} @list)[0]; の文字列照合回数は4回
・ &test(@list) の文字列照合回数は1回
と考えました。ベンチ取ってないけど。
0185デフォルトの名無しさん
NGNGuse Benchmark;
@list = qw(hoge geho foo baa);
timethese(undef, {
grep => sub {
$a = (grep {/hoge/} @list)[0];
},
test => sub {
$a = &test(@list);
},
});
sub test { foreach (@_) {return $_ if(/hoge/)} }
で、結果は、
grep: 2 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 125654.98/s (n=390787)
test: 4 wallclock secs ( 3.09 usr + 0.01 sys = 3.10 CPU) @ 297963.87/s (n=923688)
hogeが最初は不公平すぎるので最後にしてみたがそれでも
grep: 2 wallclock secs ( 3.10 usr + 0.00 sys = 3.10 CPU) @ 126060.32/s (n=390787)
test: 4 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 205490.60/s (n=655515)
0186デフォルトの名無しさん
NGNG追試。環境は ActivePerl Build810 (5.8.4)
#!/usr/local/bin/perl
use Benchmark;
our @list = qw(hoge fuga piyo foo bar baz);
sub t_l { /hoge/ && return $_ for @_ }
timethese(-5, {
g_b => sub { my $a = (grep {/hoge/} @list)[0] },
g_e => sub { my $a = (grep /hoge/, @list)[0] },
g_l => sub { my($a) = grep /hoge/, @list },
t_l => sub { my $a = t_l(@list) },
});
__END__
Benchmark: running g_b, g_e, g_l, t_l for at least 5 CPU seconds...
g_b: 6 wallclock secs ( 5.16 usr + 0.00 sys = 5.16 CPU) @ 49723.26/s (n=256572)
g_e: 5 wallclock secs ( 5.32 usr + 0.00 sys = 5.32 CPU) @ 193839.10/s (n=1031224)
g_l: 5 wallclock secs ( 5.11 usr + 0.00 sys = 5.11 CPU) @ 199724.07/s (n=1020590)
t_l: 5 wallclock secs ( 5.33 usr + 0.00 sys = 5.33 CPU) @ 193475.42/s (n=1031224)
0187デフォルトの名無しさん
NGNGということで、こんなのも。
use List::Util qw/first/;
my $a = first {/hoge/} @list;
※要Perl5.8
0188デフォルトの名無しさん
NGNGgrepの条件をblockにしてるから遅くなってたのか。
1つの式ですむならblockにしてはいかんということだな。勉強になった。
0189名無しさん@Vim%Chalice
NGNGnouhinsho.plのプログラムで使っているデータファイル
nouhinsho.datのデータを書き換えて
LANケーブル 0.5m アイボリー 5 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
な感じにすると"aaa..."の部分が折り返されません。
LANケーブル 0.5m アイボリー 5 ああああああああああああああああああああああああああああああ
"あああ..."だったら折り返されます
"aaa..."な方でも折り返しにする設定はどうすればよいのでしょうか?
0190デフォルトの名無しさん
NGNG解説サイトをご存知の方いらっしゃいませんか?
0191デフォルトの名無しさん
NGNGperlcc, perl2exe, parとかがある
0192デフォルトの名無しさん
NGNGPerl "で" コンパイラを作った人じゃないの?
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG自己満足以外なんにもならないね。
0199デフォルトの名無しさん
NGNGすいません
"おまいらには"
が抜けてましたw
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGそんな事は無いと思うけど。
インタプリタ言語でコンパイラを作るって事は、昔のパソコン雑誌では
普通に連載されていたよ。
BASICでコンパイラ言語を、記述。
そのコンパイラのソースを、BASICインタプリタでコンパイル。
出来たコンパイラで、そのコンパイラ(のソース)を、機能拡張する。
そのソースを、コンパイラでコンパイル。
でまた機能拡張、またコンパイルまた機能拡張またコンパイル
きりねー。と。WICSなんかそうだったな。
0202デフォルトの名無しさん
NGNG言語のコンパイルとは限らないからね。
コンパイルは要はファイル変換。小規模なものなら
Perlでも十分できると思う。
>>190
字句解析や逆ポーランド記法等の一般的な知識が
使えると思うので、
その手の勉強をしてみれば?
0203デフォルトの名無しさん
NGNG$script = <STDIN>;
eval($script);
exit(0);
インタプリタができたYO!あとは標準入出力で(ry
0204デフォルトの名無しさん
NGNGそれを作ったやつや使ってるやつを探せばいいんじゃないかな。
0205デフォルトの名無しさん
NGNGバッチファイルでインタープリタが出来ますた。
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG速度だってそんなに遅くないし。
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGpack や unpack あたりでできそう。
でも、たしかに Perl ばかりやってるとバイナリの処理が
苦手になるかも…。
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG「なんでExcelのマクロにPerlが使えないんだyp!」と発狂してみたり。
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGATOK用perl機能追加プラグイン
ttp://www.hirax.net/diaryweb/2004/04/09.html#200404092
なんてのもある
ATOK入ってないんで私は使えませんがね・・・
0223デフォルトの名無しさん
NGNGつか、どんなときにつかうの?
0224デフォルトの名無しさん
NGNGCなら構造体を作るだろうなってときに使う。
0225デフォルトの名無しさん
NGNGCGIでURLエンコード・デコードとかに使う。
%82%CA%82%E9%82%DB
みたいなの
0226デフォルトの名無しさん
NGNGシリアライズ・デシリアライズ
0227デフォルトの名無しさん
NGNGカレーライス・ハヤシライス
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNGインタプリタをカーネルに組み込んで、
モジュールをPerlで書けるようにするとか?
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG昔のえらい人たちは Perl をハックして JPerl を作った
みんな感謝して使っていた
0233デフォルトの名無しさん
NGNG「折り返し」って? foldingのこと? アルファベットは空白文字が来ないと
発生しないよーな希ガス。
0234デフォルトの名無しさん
NGNGじゃあ君のために KusoPerl っていうの作ってあげるから
感謝して使ってくれ。
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGもっとカルシウム取れよ。
0237デフォルトの名無しさん
NGNG今日の宿題は終わったのか?
おやつ食べて大好きなプールにでも行ってきたらどうだ?
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGhttp://japan.linux.com/desktop/04/07/27/1436242.shtml?topic=1
0241デフォルトの名無しさん
NGNGそんなに待てるか!
俺、死んじゃってるかもしれないじゃないか!
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG(JavaとかC++のprivateメソッドっぽいのを作りたい)
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNGえー?
0249黒死犬 ◆EgxBlf8nvc
NGNGreturn $$**$$;
}
しかし、そのうち my sub って書ける様になるらしい
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています