CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )
回答する際はモダンな方法でお願いします
(例 jcode.plではなくEncodeモジュールを使った方法)
理由はもう2012年です。いい加減2000年以前の方法はやめましょう。
最新のPerlを使うほうがかっこいいです。
いつまで勉強しないつもりですか?
過去にとらわれるのはもうやめです。進歩しませんよ。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。
http://www.perl.org/get.html
● 2011/10/30 現在の最新版: 5.14.2
▼ 前スレ
Perlについての質問箱 49箱目
http://toro.2ch.net/test/read.cgi/tech/1319953460/
リンク集は >>2-3辺り
Perl 日本語処理の基礎の基礎 >>4辺り
探検
【モダン推奨】Perlについての質問箱 50箱目
■ このスレッドは過去ログ倉庫に格納されています
2012/01/21(土) 10:56:39.03
171168
2012/04/03(火) 00:54:00.46 デバッガあててみたら↓が原因だった
our $mech = new WWW::Mechanize(autocheck => 1);
手前は中で何やってるんだよ・・・
これ以上解析するのはめんどいが、
ウィンドウが表示されるのは耐え難いので
暇なときに中をのぞいてやる
>>170
なんかすごそう
暇なときにやってみる
our $mech = new WWW::Mechanize(autocheck => 1);
手前は中で何やってるんだよ・・・
これ以上解析するのはめんどいが、
ウィンドウが表示されるのは耐え難いので
暇なときに中をのぞいてやる
>>170
なんかすごそう
暇なときにやってみる
172営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 01:50:55.99 ハッシュにblessしたオブジェクトのプロパティに対してlvalue属性つきのサブルーチンを用意しようとしています。
単純なアクセサなので呼び出されたときにAUTOLOADで補足してインストールするようにしています。
package Config;
sub new { my ($class) = @_; bless { name => 'foo', }, $class; }
sub AUTOLOAD {
no strict 'refs';
my ($self) = @_;
our $AUTOLOAD;
if ($AUTOLOAD =~ /.*::(.*)\z/) {
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
}
goto &$AUTOLOAD;
}
sub DESTROY {} # 一応・・
package main;
my $obj = Config->new;
print $obj->name,"\n"; #=>'foo'
$obj->name = 'bar';
print $obj->name,"\n"; #=>'bar'
これは正常に動作しますが、mainパッケージの最初のprint文をコメントアウトした場合や
新たなプロパティをセットしようとした場合↓にはAUTOLOADが呼ばれず(AUTOLOADに行く前に?)エラーとなります。
$obj->update = '2012/4/8'; => Can't modify non-lvalue subroutine call at...
回避方法あるでしょうか?
単純なアクセサなので呼び出されたときにAUTOLOADで補足してインストールするようにしています。
package Config;
sub new { my ($class) = @_; bless { name => 'foo', }, $class; }
sub AUTOLOAD {
no strict 'refs';
my ($self) = @_;
our $AUTOLOAD;
if ($AUTOLOAD =~ /.*::(.*)\z/) {
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
}
goto &$AUTOLOAD;
}
sub DESTROY {} # 一応・・
package main;
my $obj = Config->new;
print $obj->name,"\n"; #=>'foo'
$obj->name = 'bar';
print $obj->name,"\n"; #=>'bar'
これは正常に動作しますが、mainパッケージの最初のprint文をコメントアウトした場合や
新たなプロパティをセットしようとした場合↓にはAUTOLOADが呼ばれず(AUTOLOADに行く前に?)エラーとなります。
$obj->update = '2012/4/8'; => Can't modify non-lvalue subroutine call at...
回避方法あるでしょうか?
173172
2012/04/07(土) 02:55:30.64 投稿の際に行数を節約しようと修正した部分で動かないところがありました
×*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
my $name = $1;
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$name}; };
×*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
my $name = $1;
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$name}; };
2012/04/07(土) 17:14:55.67
package _Config;
our $AUTOLOAD;
sub new { bless { name => 'foo' }, shift }
sub AUTOLOAD : lvalue {
my ($self) = @_;
(my $name = $AUTOLOAD) =~ s/.*://;
my $sub = sub : lvalue { shift->{$name} };
{
no strict 'refs';
*{$AUTOLOAD} = $sub;
}
$self->$name();
}
sub DESTROY {}
ここまで来ると普通のハッシュでよくね?
あと、ネタすれなんで、本スレで質問しる。
our $AUTOLOAD;
sub new { bless { name => 'foo' }, shift }
sub AUTOLOAD : lvalue {
my ($self) = @_;
(my $name = $AUTOLOAD) =~ s/.*://;
my $sub = sub : lvalue { shift->{$name} };
{
no strict 'refs';
*{$AUTOLOAD} = $sub;
}
$self->$name();
}
sub DESTROY {}
ここまで来ると普通のハッシュでよくね?
あと、ネタすれなんで、本スレで質問しる。
175営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:05:08.57 在日韓国・朝鮮人や,
働かないで金をせびるクズ人間を取り締まってくれや。
追うも国士館,追われるも国士館頼むぞ。
http://www2.ocn.ne.jp/~hirohito/photo/s6116.jpg
http://www.masuko.co.jp/school/img/otona/4men_2.jpg
http://keiten.net/image/070804kokushi/kekki.htm
規律ある大学生活
http://daiminsya.exblog.jp/2750544/
国士舘OBの回想
http://www.youtube.com/watch?v=LBtSNMhree4&feature=related
国士舘アルバム
http://www.youtube.com/watch?v=5vZmce3qPGg&feature=related
働かないで金をせびるクズ人間を取り締まってくれや。
追うも国士館,追われるも国士館頼むぞ。
http://www2.ocn.ne.jp/~hirohito/photo/s6116.jpg
http://www.masuko.co.jp/school/img/otona/4men_2.jpg
http://keiten.net/image/070804kokushi/kekki.htm
規律ある大学生活
http://daiminsya.exblog.jp/2750544/
国士舘OBの回想
http://www.youtube.com/watch?v=LBtSNMhree4&feature=related
国士舘アルバム
http://www.youtube.com/watch?v=5vZmce3qPGg&feature=related
176172
2012/04/07(土) 23:31:22.35 >>174
おおーありがとうございます。AUTOLOAD自体をlvalueにするというのは気づきませんでした。
実際のプログラムはもう少し複雑ですが、正しく動作しています。
>>普通のハッシュでよくね?
たしかにw
一応オブジェクトであってはほしいのですが、ハッシュ記法であれば何の不都合もなく
$obj->{name} = 'bar';
と書けるわけですしね。
オマケでメソッド呼び出しも、と考えてたらハマってしまった格好です
おおーありがとうございます。AUTOLOAD自体をlvalueにするというのは気づきませんでした。
実際のプログラムはもう少し複雑ですが、正しく動作しています。
>>普通のハッシュでよくね?
たしかにw
一応オブジェクトであってはほしいのですが、ハッシュ記法であれば何の不都合もなく
$obj->{name} = 'bar';
と書けるわけですしね。
オマケでメソッド呼び出しも、と考えてたらハマってしまった格好です
2012/04/08(日) 21:43:29.63
Apple 社の Mac OS X は、 ベースの一部 が FreeBSD です。Apple 社独自の
ユーザインタフェースとともに、豊富なUNIX(R)基盤が取り入れられています。
ユーザインタフェースとともに、豊富なUNIX(R)基盤が取り入れられています。
2012/04/08(日) 23:11:38.92
OpenStepじゃなかったっけ?
179デフォルトの名無しさん
2012/04/14(土) 14:38:18.13180デフォルトの名無しさん
2012/04/17(火) 22:06:08.88181デフォルトの名無しさん
2012/04/18(水) 03:18:24.23 一方、日本は...
瞳をとじた
瞳をとじた
182デフォルトの名無しさん
2012/04/29(日) 00:38:07.87そしてこのスレッドもクローズした
183デフォルトの名無しさん
2012/04/29(日) 06:35:31.99 再開
184デフォルトの名無しさん
2012/04/29(日) 06:52:54.09∧∧
( ゚Д゚ )∩
⊂ ノ
/ 0
し´
えっ…と、
ここかな…、と
∧∧ ∧∧
∩゚Д゚≡゚Д゚ )
`ヽ |)
| __ |〜
∪ ∪
ドスッ
∧∧.ミ. _
( )┌┴┴┐
/ つ.再開│
〜 ./ └┬┬┘
∪∪ ││_ε3
゛゛゛゛
185デフォルトの名無しさん
2012/04/29(日) 14:21:23.37 最近のPerlでOOP用ライブラリってどんなのが主流ですか?
186デフォルトの名無しさん
2012/04/29(日) 14:23:06.27 Mooseだろ?
最近のライブラリでそれ以外使ってるの有るのか?
最近のライブラリでそれ以外使ってるの有るのか?
187デフォルトの名無しさん
2012/04/29(日) 14:25:50.06 ありがとうございますMoose調べてきます
188デフォルトの名無しさん
2012/04/29(日) 18:38:18.38 Mooseが重いと思ったらMouseとAny::Mooseの組合せで代用もよし
189デフォルトの名無しさん
2012/04/29(日) 20:25:09.14 最初から Mouse 使ったほうが
190デフォルトの名無しさん
2012/05/15(火) 18:28:38.45 cpan でモジュールインストールしんたいんだけど
install やら make やら make install やら全部 OK
でたのに
perldoc -l インストールしたモジュール名
やるとそんなのないて怒られる。
なんで?
install やら make やら make install やら全部 OK
でたのに
perldoc -l インストールしたモジュール名
やるとそんなのないて怒られる。
なんで?
191デフォルトの名無しさん
2012/05/15(火) 22:29:19.68192デフォルトの名無しさん
2012/05/16(水) 07:35:09.36 >>191
cpan>install Math::Vector::Real
でいれて
全部 make やら make install やら全部 OK と出たが
ないようだった。
cpanplus でインストールしてみたらいけたのだが原因がわからない。
cpan>install Math::Vector::Real
でいれて
全部 make やら make install やら全部 OK と出たが
ないようだった。
cpanplus でインストールしてみたらいけたのだが原因がわからない。
193デフォルトの名無しさん
2012/05/16(水) 19:04:48.32 Regexp::Assembleでマッチした時って
後方参照使えるの?
後方参照使えるの?
194デフォルトの名無しさん
2012/06/20(水) 00:40:13.88 perl 5.10.1 を使っています。
$str = "ABCD"; の時
@a = $str =~ /AB|CD/g;
を実行すると、@a = ( "AB", "CD" ) と2つの要素が返されますが、
@a = $str =~ /AB|BC/g;
だと、@a = ( "AB" ) しか帰ってきません。
(ABがマッチしたら、その次のCからサーチが始まるため)
@a に ("AB", "BC") と、マッチするものすべてを得たい場合、
どうすればよいでしょうか。
$str = "ABCD"; の時
@a = $str =~ /AB|CD/g;
を実行すると、@a = ( "AB", "CD" ) と2つの要素が返されますが、
@a = $str =~ /AB|BC/g;
だと、@a = ( "AB" ) しか帰ってきません。
(ABがマッチしたら、その次のCからサーチが始まるため)
@a に ("AB", "BC") と、マッチするものすべてを得たい場合、
どうすればよいでしょうか。
195デフォルトの名無しさん
2012/06/20(水) 01:29:26.87 なんか面白そうなお題なのでとりあえず最悪くさいものを作ってみた
素晴らしい人がボロクソにけなしてくれると期待しつつ投げてみる
$str='ABCD';
{
my $tmp=$str;
while($tmp=~/AB|BC/){
push @a,$&;
$tmp = $&.$';
$tmp=~s/^.//;
}
}
print join' ',@a;
素晴らしい人がボロクソにけなしてくれると期待しつつ投げてみる
$str='ABCD';
{
my $tmp=$str;
while($tmp=~/AB|BC/){
push @a,$&;
$tmp = $&.$';
$tmp=~s/^.//;
}
}
print join' ',@a;
196194
2012/06/20(水) 02:51:53.45 >>194
場当たり的に色々試していたら
@a = $str =~ /(?=(AB|BC))/g;
で、(AB,BC) が取得できました。
(?= で、次の走査開始点を移動させないようにしたから、でしょうか?
場当たり的に色々試していたら
@a = $str =~ /(?=(AB|BC))/g;
で、(AB,BC) が取得できました。
(?= で、次の走査開始点を移動させないようにしたから、でしょうか?
197デフォルトの名無しさん
2012/07/15(日) 14:22:38.65 一過性のモダンPerlはもう終わり。
らくだ本の発行によって本来のPerlへの回帰が始まっている。
らくだ本の発行によって本来のPerlへの回帰が始まっている。
198デフォルトの名無しさん
2012/07/15(日) 14:36:07.64 本来のPerl=5.0でも動く範囲でしかコード書かない
199デフォルトの名無しさん
2012/07/15(日) 16:03:33.45 そういえばPerl5のスレってないね?やっぱりまだPerlの方が使われてるのかな?
200デフォルトの名無しさん
2012/07/20(金) 00:44:57.65 モダンPerl書いたひとはどうしてるの?最近見ないけど、やっぱりだめなの?
201デフォルトの名無しさん
2012/07/20(金) 06:04:14.97 まあソースをみて改良したりとか前向きな動機はほぼゼロで99.99%はこのメーカー
困らせてやれって開示請求なんだろうな。
困らせてやれって開示請求なんだろうな。
202デフォルトの名無しさん
2012/07/20(金) 23:17:21.71 モダンな奴はそもそもPerl使わないからな
203デフォルトの名無しさん
2012/07/25(水) 02:06:14.30 USP(Universal Shell Programming)研究所は、UNIX/Linuxの基本思想である、
「小さな道具」(コマンド)を組み合わせて「問題を解決する」(シェルス
クリプト)手法の研究・普及を行っています。この開発手法(ユニケージ
開発手法)は、従来のウォーターフォール型開発や、オブジェクト指向言
語・データベースソフトを用いた開発手法と一線を画し、圧倒的な開発生産
性 圧倒的な柔軟性を特徴としています。
ttp://www.usp-lab.com/
「小さな道具」(コマンド)を組み合わせて「問題を解決する」(シェルス
クリプト)手法の研究・普及を行っています。この開発手法(ユニケージ
開発手法)は、従来のウォーターフォール型開発や、オブジェクト指向言
語・データベースソフトを用いた開発手法と一線を画し、圧倒的な開発生産
性 圧倒的な柔軟性を特徴としています。
ttp://www.usp-lab.com/
204デフォルトの名無しさん
2012/07/30(月) 19:45:03.06 本スレも、荒しに常駐されてぐだぐだだし、
WebProgの方も同じみたいに、スレ違いの会話が
ぐだぐだ続いて終了したし、終りかなあ。
ここのスレの方がまだ真面にperlの話をしてた気がするよ。
WebProgの方も同じみたいに、スレ違いの会話が
ぐだぐだ続いて終了したし、終りかなあ。
ここのスレの方がまだ真面にperlの話をしてた気がするよ。
205デフォルトの名無しさん
2012/07/30(月) 20:56:12.50 まあモダンには2つあって、ひとつはすぐに古くなるモダン。
もうひとつはいつまでも古くならないモダン。
おれは断然古くならないモダンのほうがいいな。
もうひとつはいつまでも古くならないモダン。
おれは断然古くならないモダンのほうがいいな。
206デフォルトの名無しさん
2012/07/30(月) 23:46:15.85 XSを使うと1年後に古くなるほうのモダンですか?
207デフォルトの名無しさん
2012/07/30(月) 23:47:25.65 軟便スキー独りか知らんが、
韓国ネタのコピペしたり
hoge煽りしたり
ググれ煽りしたり
馬鹿じゃねーの?
韓国ネタのコピペしたり
hoge煽りしたり
ググれ煽りしたり
馬鹿じゃねーの?
208デフォルトの名無しさん
2012/07/31(火) 00:19:41.40 そしてゆっくりモダンになっていく...
それが理想です
それが理想です
209デフォルトの名無しさん
2012/07/31(火) 00:27:00.96 進歩というものは過去を捨てることではない。
過去に加えて積み上げるものなのだ。
過去に加えて積み上げるものなのだ。
210デフォルトの名無しさん
2012/07/31(火) 01:28:15.89 荒しが950踏んで嬉々としてhoge禁止をテンプレに入れる姿が目に見える様だ
211デフォルトの名無しさん
2012/08/04(土) 17:51:38.53 過去のソフトウェアと作法やインタフェースが異なる言い訳としてモダンと
いう用語を使うのはまずい。今までより苦労が増えるなら移行は進むはず
がない。
いう用語を使うのはまずい。今までより苦労が増えるなら移行は進むはず
がない。
212デフォルトの名無しさん
2012/08/05(日) 20:55:07.11 ところでこのスレが53箱目の続きってことでいいの?
213デフォルトの名無しさん
2012/08/05(日) 20:56:46.40 すまん、53箱目の続きあった。“54目”になってたんで検索に引っかからなかったわ。
214デフォルトの名無しさん
2012/08/06(月) 18:23:11.89 以下のように時刻と曜日が書かれたlogファイルがあります。
Jun 6 00:07:41 xxxxx
Aug 8 00:14:34 yyyyy
Aug 8 00:16:26 zzzzz
〜
(以下略
現時刻から一時間前のログのみ抽出して、抽出したログの行数だけ出したいのですがこの処理って一行(ワンライナー)で書けますか?※重複とかは無視して単純に一時間分のログが引っこ抜ければ良いです。
詳しい人教えてください。
Jun 6 00:07:41 xxxxx
Aug 8 00:14:34 yyyyy
Aug 8 00:16:26 zzzzz
〜
(以下略
現時刻から一時間前のログのみ抽出して、抽出したログの行数だけ出したいのですがこの処理って一行(ワンライナー)で書けますか?※重複とかは無視して単純に一時間分のログが引っこ抜ければ良いです。
詳しい人教えてください。
215デフォルトの名無しさん
2012/08/06(月) 18:26:08.19216デフォルトの名無しさん
2012/08/06(月) 18:57:53.32217デフォルトの名無しさん
2012/08/07(火) 18:06:48.10218デフォルトの名無しさん
2012/08/07(火) 18:12:29.44 横レス(別人)
$ perl -F'/[\s:]+/' -MTime::Local -lane 'BEGIN{ %m = map{uc $_, $i ++} qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);} next if ( time - timelocal @F[4,3,2,1], $m{uc $F[0]}, 2012 - 1900 ) > 3600 ; print ;' *txt
年は 2012 年を期待、 2013 年になったら知らん。
年跨ぎを念頭に入れるとなると log file の形式から作成しなおし。
win の人なら、シングルクォーテーションをダブルに
変えなきゃ動かんかも。
勉強したいのであれば、エポック秒、時間比較 perl あたりでググる。
$ perl -F'/[\s:]+/' -MTime::Local -lane 'BEGIN{ %m = map{uc $_, $i ++} qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);} next if ( time - timelocal @F[4,3,2,1], $m{uc $F[0]}, 2012 - 1900 ) > 3600 ; print ;' *txt
年は 2012 年を期待、 2013 年になったら知らん。
年跨ぎを念頭に入れるとなると log file の形式から作成しなおし。
win の人なら、シングルクォーテーションをダブルに
変えなきゃ動かんかも。
勉強したいのであれば、エポック秒、時間比較 perl あたりでググる。
219デフォルトの名無しさん
2012/08/07(火) 18:20:05.07 >>218
あんた2012年の住人じゃないだろw
あんた2012年の住人じゃないだろw
220デフォルトの名無しさん
2012/08/07(火) 18:30:46.11221デフォルトの名無しさん
2012/08/07(火) 18:34:05.93 年跨ぎのケースを考え無くて良いなら、コードの2012を2013にすりゃいいだけ。
222デフォルトの名無しさん
2012/08/08(水) 18:20:12.98 というより、「年」は全部今年として扱えばいい。
年が明けてから1時間はまともにログを拾えなくなるけど。
そもそもログデータに「年」の情報が入っていないんだから、
厳密に処理するのは無理だべ。
年が明けてから1時間はまともにログを拾えなくなるけど。
そもそもログデータに「年」の情報が入っていないんだから、
厳密に処理するのは無理だべ。
223デフォルトの名無しさん
2012/08/08(水) 18:36:12.52 >>218に対して言ってるのなら、
最初からそれを念頭に書いてないか?
コードは既にそうなってるし、
説明文の方は質問者に向けたもんだし、
改造しやすいように除算は態々、2012 -1900 にして残してあるし。
それともtime関数に、年を除外するオプションでもあんの?
最初からそれを念頭に書いてないか?
コードは既にそうなってるし、
説明文の方は質問者に向けたもんだし、
改造しやすいように除算は態々、2012 -1900 にして残してあるし。
それともtime関数に、年を除外するオプションでもあんの?
224デフォルトの名無しさん
2012/08/08(水) 19:02:57.22 >>223
年が変わるごとに 2012 を 2013 だの 2014 だのに書き換えるの面倒だろうから
「年」のところはログの日付も現在の時間も全部localtimeの「今年」という前提で
扱えば毎年コード書き直さなくてもよくなるだろっていってるんだよボケ。
年が変わるごとに 2012 を 2013 だの 2014 だのに書き換えるの面倒だろうから
「年」のところはログの日付も現在の時間も全部localtimeの「今年」という前提で
扱えば毎年コード書き直さなくてもよくなるだろっていってるんだよボケ。
225デフォルトの名無しさん
2012/08/08(水) 19:09:28.99 perl -F'/[\s:]+/' -MTime::Local -lane 'BEGIN{ %m = map{uc $_, $i ++} qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);} next if ( time - timelocal @F[4,3,2,1], $m{uc $F[0]}, ( localtime(time))[5] ) > 3600 ; print ;' *txt
こういう意味ねw、了解した。
こういう意味ねw、了解した。
226デフォルトの名無しさん
2012/08/08(水) 19:17:05.60 で、試しに自分でも書いてみた。
LC_ALL=C perl -MTime::Piece -e '$lt=localtime;$ty=$lt->year;while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;$t=Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S");$c++ if $lt-$t<3600}print "$c\n"' logfile
218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
(Day 'Jun' out of range 1..31 at -e line 1 て言われた)
LC_ALL=Cは環境によってはつけとかないとTime::Piece->strptime()がエラー吐くんで。
行数が知りたい、だったので行数出力にしたけど、該当行を全部出したいんだったら
$c++以降を print if $lt-$t<3600}' に置き換えれば218と同じ出力になる。
行数はwc使えばあとからでもわかるしね。
LC_ALL=C perl -MTime::Piece -e '$lt=localtime;$ty=$lt->year;while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;$t=Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S");$c++ if $lt-$t<3600}print "$c\n"' logfile
218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
(Day 'Jun' out of range 1..31 at -e line 1 て言われた)
LC_ALL=Cは環境によってはつけとかないとTime::Piece->strptime()がエラー吐くんで。
行数が知りたい、だったので行数出力にしたけど、該当行を全部出したいんだったら
$c++以降を print if $lt-$t<3600}' に置き換えれば218と同じ出力になる。
行数はwc使えばあとからでもわかるしね。
227デフォルトの名無しさん
2012/08/08(水) 19:19:19.26228デフォルトの名無しさん
2012/08/08(水) 19:28:58.56 >>226
> 218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
> (Day 'Jun' out of range 1..31 at -e line 1 て言われた)
なぜエラーが出たかわかった。自分でテスト用に切り出して作ったログファイルの
各行頭にスペースが入っていたからだった。(ありがち)
> 218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
> (Day 'Jun' out of range 1..31 at -e line 1 て言われた)
なぜエラーが出たかわかった。自分でテスト用に切り出して作ったログファイルの
各行頭にスペースが入っていたからだった。(ありがち)
229デフォルトの名無しさん
2012/08/08(水) 21:24:39.24230デフォルトの名無しさん
2012/08/09(木) 03:59:05.87 perl -MTime::Piece -lE 'my $lt=localtime; my $ty=$lt->year ; while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;\
my $t=Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S"); print q{#####} ; print ; print $lt ; print $t ; print $lt-$t }' log file
#####
Jun 6 00:07:41 xxxxx
Thu Aug 9 03:45:48 2012
Wed Jun 6 00:07:41 2012
5510287
#####
Aug 8 00:14:34 yyyyy
Thu Aug 9 03:45:48 2012
Wed Aug 8 00:14:34 2012
66674
#####
Aug 8 00:16:26 zzzzz
Thu Aug 9 03:45:48 2012
Wed Aug 8 00:16:26 2012
66562
#####
Aug 8 22:15:14 zzzzz
Thu Aug 9 03:45:48 2012
Wed Aug 8 22:15:14 2012
-12566
うちの環境だとTime::Pieceオブジェクトの除算が変だ。なんで?
my $t=Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S"); print q{#####} ; print ; print $lt ; print $t ; print $lt-$t }' log file
#####
Jun 6 00:07:41 xxxxx
Thu Aug 9 03:45:48 2012
Wed Jun 6 00:07:41 2012
5510287
#####
Aug 8 00:14:34 yyyyy
Thu Aug 9 03:45:48 2012
Wed Aug 8 00:14:34 2012
66674
#####
Aug 8 00:16:26 zzzzz
Thu Aug 9 03:45:48 2012
Wed Aug 8 00:16:26 2012
66562
#####
Aug 8 22:15:14 zzzzz
Thu Aug 9 03:45:48 2012
Wed Aug 8 22:15:14 2012
-12566
うちの環境だとTime::Pieceオブジェクトの除算が変だ。なんで?
231デフォルトの名無しさん
2012/08/09(木) 05:09:37.92 >>230
あう〜。ホントだ。ウチでも同じだ。
Time::Piece->strptime()でTime::Pieceオブジェクトを作るとgmtimeベースになるっぽい。
ttp://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A1%E3%83%A2%2FTime%3A%3APiece%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB
だから引き算の結果がTZのoffset分ずれるのか…。strptime()でlocaltimeベースにするには…
$ LC_ALL=C perl -MTime::Piece -lE '$lt=localtime;$ty=$lt->year;while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;\
$t=localtime Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S")->epoch;$t-=$lt->tzoffset;\
say q{#####};say $lt," = ",$lt->[Time::Piece::c_islocal];say $t," = ",$t->[Time::Piece::c_islocal];say $lt-$t}' logfile
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Jun 6 00:07:41 2012 = 1
5546979
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 00:14:34 2012 = 1
103366
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 00:16:26 2012 = 1
103254
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 19:20:14 2012 = 1
34626
(こんな時間に何をやっているんだか)
もしくはstrptime()の方をいじらずに、
$lt=localtime; → $lt=gmtime;$lt+=localtime->tzoffset;
か…。gmtimeベースになっちゃうけど引き算の結果は正しくなる。
という訳で、けっこういろいろとメンドくさいもんですね。
あう〜。ホントだ。ウチでも同じだ。
Time::Piece->strptime()でTime::Pieceオブジェクトを作るとgmtimeベースになるっぽい。
ttp://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A1%E3%83%A2%2FTime%3A%3APiece%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB
だから引き算の結果がTZのoffset分ずれるのか…。strptime()でlocaltimeベースにするには…
$ LC_ALL=C perl -MTime::Piece -lE '$lt=localtime;$ty=$lt->year;while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;\
$t=localtime Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S")->epoch;$t-=$lt->tzoffset;\
say q{#####};say $lt," = ",$lt->[Time::Piece::c_islocal];say $t," = ",$t->[Time::Piece::c_islocal];say $lt-$t}' logfile
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Jun 6 00:07:41 2012 = 1
5546979
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 00:14:34 2012 = 1
103366
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 00:16:26 2012 = 1
103254
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 19:20:14 2012 = 1
34626
(こんな時間に何をやっているんだか)
もしくはstrptime()の方をいじらずに、
$lt=localtime; → $lt=gmtime;$lt+=localtime->tzoffset;
か…。gmtimeベースになっちゃうけど引き算の結果は正しくなる。
という訳で、けっこういろいろとメンドくさいもんですね。
232デフォルトの名無しさん
2012/08/09(木) 08:02:26.85233デフォルトの名無しさん
2012/08/09(木) 08:03:44.22 レスくれた人ありがとうございます>>214です。
まだperlは入門書読み終わった程度なので右も左も分かりませんが、教えて頂いたコードを参考に色々書き方を研究したいと思います。
まだperlは入門書読み終わった程度なので右も左も分かりませんが、教えて頂いたコードを参考に色々書き方を研究したいと思います。
234デフォルトの名無しさん
2012/08/12(日) 12:31:10.61 入門書読み終えたばかりの初心者には組込みのlocaltime関数を教えてあげないよ
235デフォルトの名無しさん
2012/08/13(月) 16:57:18.75 >>234
なにが言いたいのかわからん
なにが言いたいのかわからん
236デフォルトの名無しさん
2012/08/14(火) 00:43:26.35 ほら、俺ってサ
意外にすいすいしいヤツ
だからサ
意外にすいすいしいヤツ
だからサ
237デフォルトの名無しさん
2012/08/14(火) 23:54:42.42 初心者には localtime の方が便利な件
238デフォルトの名無しさん
2012/08/15(水) 05:40:02.45 >>234,>>237
既に>>225が提示してるだろ?
学習するかは質問者さんの勝手。
>>232
目医者行け。
266氏を晒す訳じゃないが、ワンライナにwhile(<>){}直接埋め込んでる時点で
スタイリッシュじゃない。
225に相当するコードをTime::Pieceで書いた場合、
perl -F'\s+' -MTime::Piece -lanE 'state $lt = localtime; next if $lt - localtime( Time::Piece->strptime((join " ", $lt->year,@F[0..2]),"%Y %b %d %H:%M:%S")) > 3600; say'
226に略
perl -F'\s+' -MTime::Piece -lanE 'state $lt = localtime; $c++ if $lt - localtime( Time::Piece->strptime((join " ", $lt->year,@F[0..2]),"%Y %b %d %H:%M:%S")) < 3600;}{ say $c'
既に>>225が提示してるだろ?
学習するかは質問者さんの勝手。
>>232
目医者行け。
266氏を晒す訳じゃないが、ワンライナにwhile(<>){}直接埋め込んでる時点で
スタイリッシュじゃない。
225に相当するコードをTime::Pieceで書いた場合、
perl -F'\s+' -MTime::Piece -lanE 'state $lt = localtime; next if $lt - localtime( Time::Piece->strptime((join " ", $lt->year,@F[0..2]),"%Y %b %d %H:%M:%S")) > 3600; say'
226に略
perl -F'\s+' -MTime::Piece -lanE 'state $lt = localtime; $c++ if $lt - localtime( Time::Piece->strptime((join " ", $lt->year,@F[0..2]),"%Y %b %d %H:%M:%S")) < 3600;}{ say $c'
239266 (未来より参上)
2012/08/15(水) 16:15:51.26 >>238
おおうスタイリッシュ。
state とか使ったことなかったけど便利そうだな。参考にさせていただきます。
ワンライナーはあんまし書かないのもあってオプションも -i -n -p -e くらいしか
普段使ってなかったりしますんで。-E すら滅多に使わないな…。nもpもなしに
while(<>)埋め込むのもループの前後で処理が必要な時とかは普通にやってるし。
その程度のスキルでもとりあえず動くものは書けるってのがPerlのメリットでもあり
欠点でもあると…まあこの場合メリットということで。TMTOWTDI。(覚えづらいよなこれ)
おおうスタイリッシュ。
state とか使ったことなかったけど便利そうだな。参考にさせていただきます。
ワンライナーはあんまし書かないのもあってオプションも -i -n -p -e くらいしか
普段使ってなかったりしますんで。-E すら滅多に使わないな…。nもpもなしに
while(<>)埋め込むのもループの前後で処理が必要な時とかは普通にやってるし。
その程度のスキルでもとりあえず動くものは書けるってのがPerlのメリットでもあり
欠点でもあると…まあこの場合メリットということで。TMTOWTDI。(覚えづらいよなこれ)
240デフォルトの名無しさん
2012/08/16(木) 22:01:16.60 なんで隔離スレで真面目に質問箱してんのよw
>>233
コード研究するんだったら、B::Deparseは必須。
% perl -MO=Deparse -lane '}{ print $.'
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
our(@F) = split(' ', $_, 0);
}
{
print $.;
}
-e syntax OK
調べたいコードのオプションの先頭に、-MO=Deparseくっつけるだけ。
それにしても、バルサン炊いたみたいに、人がいなくなったな本スレと初心者スレ。
実際の所は、ハイエナが肉に夢中になってるだけだろうけど。
>>233
コード研究するんだったら、B::Deparseは必須。
% perl -MO=Deparse -lane '}{ print $.'
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
our(@F) = split(' ', $_, 0);
}
{
print $.;
}
-e syntax OK
調べたいコードのオプションの先頭に、-MO=Deparseくっつけるだけ。
それにしても、バルサン炊いたみたいに、人がいなくなったな本スレと初心者スレ。
実際の所は、ハイエナが肉に夢中になってるだけだろうけど。
241デフォルトの名無しさん
2012/08/19(日) 22:14:32.47 初めてのPerl第6版とPerl5.16.1のことだね。
Unicodeサポートの問題に今頃気づいたって読める。
第5版のときはまだ気づいていなかったのかな?
まあ、そんときは使ってなかったんだろうけどな。
Unicodeサポートの問題に今頃気づいたって読める。
第5版のときはまだ気づいていなかったのかな?
まあ、そんときは使ってなかったんだろうけどな。
242デフォルトの名無しさん
2012/08/20(月) 05:51:33.20 今上天皇侮辱発言の祭りが落ち着いたから、戻って来たぞゴキブリ。
でも、まあ、5割くらい減ったんじゃねーかな?
でも、まあ、5割くらい減ったんじゃねーかな?
243デフォルトの名無しさん
2012/08/20(月) 22:17:22.42 バルサン耐性を備えて5割以上パワーあっぷぷぷw
244デフォルトの名無しさん
2012/08/26(日) 15:07:51.22 ゆっくりモダンになっていく・・・
・・・モダンRuby。
・・・モダンRuby。
245デフォルトの名無しさん
2012/08/29(水) 00:35:50.14 モダンPERL追いかけてたら時代に取り残されましたとほほ
246デフォルトの名無しさん
2012/08/30(木) 21:05:34.35 >>245
その最後の「とほほ」だけで、もう10年以上は時代に取り残されてるよな
その最後の「とほほ」だけで、もう10年以上は時代に取り残されてるよな
247デフォルトの名無しさん
2012/08/30(木) 21:12:12.26 とほほだってよw
もうお前5.6こそ最高とかいって周りに強要してろよ
もうお前5.6こそ最高とかいって周りに強要してろよ
248デフォルトの名無しさん
2012/08/31(金) 00:07:22.19 5.6だと日本語がちゃんと使えません。仕事で使うなら5.005一択です。
249デフォルトの名無しさん
2012/09/01(土) 09:59:22.19 どうやらモダンパールは時代遅れみたいですね
本家のパールはすでにその先に進んでます
テキスト処理90%のPerlが文字列を楽に扱えないなんてたちの悪い冗談でしか
ありません
本家のパールはすでにその先に進んでます
テキスト処理90%のPerlが文字列を楽に扱えないなんてたちの悪い冗談でしか
ありません
250デフォルトの名無しさん
2012/09/02(日) 02:19:31.92 C++へのアンチテーゼの側面もあったPerlなのにモダンPerlはどうしちゃったのかな
251デフォルトの名無しさん
2012/09/03(月) 01:19:39.59 テクノロジーはスクラップアンドビルドなものと考える連中はとほほの内容が
古いと考えるようだ
古いと考えるようだ
252デフォルトの名無しさん
2012/09/08(土) 14:37:07.80 かってに「モダン」とか名乗るなや
253デフォルトの名無しさん
2012/09/09(日) 00:59:31.20 モダンでもないのにモダン名乗られてもなあ
254デフォルトの名無しさん
2012/09/09(日) 08:13:34.65 リャマ本第6版までモダンに毒されてるよ
おまいらリャマ本は第1版こそ至高・正義だ
定価より高くても中古で第1版を買え!
おまいらリャマ本は第1版こそ至高・正義だ
定価より高くても中古で第1版を買え!
255デフォルトの名無しさん
2012/09/09(日) 17:51:10.11 第1版ってのはバージョン4のピンク本のことか?あれは本当にいい本
256デフォルトの名無しさん
2012/09/09(日) 18:42:20.14 ダヨモンPerl
アリャマ本
アリャマ本
257デフォルトの名無しさん
2012/09/10(月) 00:59:47.94 赤らくだ本だとか赤リャマ本の序文、それにポケットリファレンスの序文でLarryはふざけ過ぎてしばらくの間O'reillyから干されていた。今回「まじめに書く」と誓ったためようやく第4版の執筆許可が下りたらしい。
258デフォルトの名無しさん
2012/09/12(水) 00:04:41.71 結局らくだ本的にはモダンPerl(=perl5.8)はスルーってことか
最近は重いモジュールも避けられる傾向にあるしな
最近は重いモジュールも避けられる傾向にあるしな
259デフォルトの名無しさん
2012/09/12(水) 00:11:25.67 重いモジュールも避けられる傾向にあるしな(キリッ
とか言う奴は十中八九List::Utilとかを使わない
とか言う奴は十中八九List::Utilとかを使わない
260デフォルトの名無しさん
2012/09/12(水) 00:30:32.64 実際に書かせてみればろくなコード書かないんだろうな
261デフォルトの名無しさん
2012/09/12(水) 00:31:53.70 モダンperlと言われているもののうち一部の重たいモジュールを持ち出して
重たいモジュールは避ける傾向にあるからモダンperlも避ける傾向だよねー
なんてどんな詭弁だよ
重たいモジュールは避ける傾向にあるからモダンperlも避ける傾向だよねー
なんてどんな詭弁だよ
262デフォルトの名無しさん
2012/09/12(水) 00:33:07.74 確かにLarryはモダンPerlについて多くを語ろうとしないな
きっと軽いスクリプトが好きなんだろうなList::Utilとか使わない
きっと軽いスクリプトが好きなんだろうなList::Utilとか使わない
263デフォルトの名無しさん
2012/09/12(水) 00:55:43.31 List::UtilはXSで書かれてるから自分でPerlで書くよりよっぽど高速なわけだが
てかとってつけたようにLarry様の名前出すなよw
てかとってつけたようにLarry様の名前出すなよw
264デフォルトの名無しさん
2012/09/12(水) 01:36:14.68 GUIやバイナリファイル扱うときにXSを使って効率を上げるのは分かるが
そうでないときにXS使ってスクリプトの利便性を下げるのは簡便だな。
そうでないときにXS使ってスクリプトの利便性を下げるのは簡便だな。
265デフォルトの名無しさん
2012/09/12(水) 01:47:29.25 勘弁
266デフォルトの名無しさん
2012/09/12(水) 02:38:31.59 >>264
なぜ利便性が下がる?
なぜ利便性が下がる?
267デフォルトの名無しさん
2012/09/13(木) 23:01:41.84 第1ヒント:テキスト萌えたんのポータビリティ強化月間
268デフォルトの名無しさん
2012/09/13(木) 23:29:47.30 「スクリプトが何かよく分かっていない」と書いたはらたいらに3,000点。
269デフォルトの名無しさん
2012/09/14(金) 23:30:28.34 バイナリではないところがスクリプトの利便性って分かるかな?無理かな?
270デフォルトの名無しさん
2012/09/15(土) 17:45:47.86 利便性の優先度
作る人の利便性 <<< 使う人の利便性
作る人の利便性 <<< 使う人の利便性
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否★4 [夜のけいちゃん★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★4 [蚤の市★]
- 中国側が首相答弁の撤回要求、日本側拒否★5 [夜のけいちゃん★]
- 「厚かましい挑発的発言だ」中国国連大使が高市首相発言に強く反発 日本の常任理事国入りに明確に反対 [ぐれ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★6 [ぐれ★]
- 解体ごみ約2.3トンを山に不法投棄か トルコ国籍解体工を逮捕 埼玉 [どどん★]
- 【ネトウヨの理想国家】政府が国民の旅行先を統制する国 [419054184]
- 【悲報】高市早苗さん、たった一人で日本を崩壊へ導く [714769305]
- でも高市早苗がセックス外交したら逆転ホームランあるよな [695089791]
- 【悲報】「やったー!こだわりまくった洋館仕立ての家を建てたぞ!」➡「「離婚したんで住まずに売ります……」 [158478931]
- 精神する時の🏡
- 【画像】日本のリン肥料、7割が中国だった!レアじゃないアースを禁輸されただけて餓死へ [347751896]
