Perlについての質問箱 32箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/08/13(月) 18:01:530232デフォルトの名無しさん
2007/08/25(土) 20:54:30君んちの近くにはないの?
0233デフォルトの名無しさん
2007/08/25(土) 21:00:45自分が行ってみて良かったから人にも勧めてるんだろ。
0234デフォルトの名無しさん
2007/08/25(土) 21:21:27何一つ無いと言うのに 全く愚かな奴だ
0235デフォルトの名無しさん
2007/08/25(土) 21:31:500236205
2007/08/25(土) 21:32:13それは大変そうだね。
普通は位置情報で処理すると、187の@a_wordへ分割するコードより遅くなるよ?
sortの準備が1秒から0.05秒に減る代わりに、sort自体が0.5秒から10秒に増える感じになる。
ソート済みの位置情報を保存して使いまわす場合には、速度は気にならないだろうけどね。
n番目という情報をソートするだけなら、例えば @a_word = sort @a_word; ならば比較関数を
@order = (0..$#a_word);
@order = sort { $a_word[$a] cmp $a_word[$b]} @order;
のように書けばいい。(@a_word = sort @a_word; より数倍遅い)
同様に
@order = sort { substr($text,$position[$a],...
と、より複雑な比較関数を使って @a_word 自体を作らない手もある。(更に数倍以上遅い)
0237デフォルトの名無しさん
2007/08/26(日) 13:55:19http://digit.que.ne.jp/work/index.cgi?Perl%e3%83%a1%e3%83%a2%2f%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%28CPAN%29
http://blog.ko-c.jp/?eid=661566">Windows
↑これらのページを参考にしてがんばっているのですがどうもうまくいきません。
NMAKE : fatal error U1077: 'C:\PROGRA~1\MID05A~1\VC\bin\cl.EXE' : リターン コー
ド '0xc0000135
このようなエラーがでてnmakeが途中で終わってしまうのですが何が原因なのでしょうか?
cl.exeのあるフォルダにはPATHを通してあります。
0238デフォルトの名無しさん
2007/08/26(日) 14:17:410239デフォルトの名無しさん
2007/08/26(日) 15:53:340240デフォルトの名無しさん
2007/08/27(月) 01:10:00ナニナニを使え、みたいなお返事でも結構ですので
0241デフォルトの名無しさん
2007/08/27(月) 08:17:58今さらだけど、属性使うとそれっぽく書ける
sub f1 :Default(0,'foo') {
my ($x, $y) = @_;
print "$x $y\n";
}
実装例
use Attribute::Handlers;
sub UNIVERSAL::Default :ATTR(CODE) {
my ($pack, $symbol, $referent, $attr, $data) = @_;
no warnings 'redefine';
no strict 'refs';
my $sub = *{$symbol}{NAME};
my $orig_func = *{$pack."::$sub"}{CODE};
*{$pack."::$sub"} = sub{
for my $i (0..$#$data) {
unless (defined($_[$i])) {splice(@_, $i, 1, $data->[$i]) }
}
$orig_func->(@_)
};
}
0242デフォルトの名無しさん
2007/08/27(月) 17:24:590243デフォルトの名無しさん
2007/08/27(月) 17:27:28たまに、戻り値を受け取る変数の型によって、値が変わる関数がありますよね?
(1)
これを自前でサブルーチンとして実装するには、どう記述すればよいのでしょうか。
(2)
この値を呼び出し側で制御することは出来ませんか。
@tmp = function();
$result = \@tmp;
のように。
よろしくお願いします。
0244デフォルトの名無しさん
2007/08/27(月) 17:53:510246デフォルトの名無しさん
2007/08/27(月) 18:10:12(2)の意味するところがわからん
0247デフォルトの名無しさん
2007/08/27(月) 18:16:57どうすりゃいいんだろう
0248デフォルトの名無しさん
2007/08/27(月) 18:17:44ソースを見る
0249デフォルトの名無しさん
2007/08/27(月) 18:19:21$result = [function()];
0250243
2007/08/27(月) 18:24:26戻り値をスカラーで受け取りつつ、関数には、リストコンテキストとして評価できないかなと。
配列のリファレンスが欲しい。
>247
ドキュメントをしっかり作るとか。
あとは、統合環境で何とかならないかな?
0251243
2007/08/27(月) 18:27:20>249
ありがとうです。そんな使い方があったのですね。
0252デフォルトの名無しさん
2007/08/27(月) 18:43:23無理だよ。コンテクストや引数、そのほか計り知れない要因によって変わる可能性があるんだから。
0253デフォルトの名無しさん
2007/08/27(月) 18:50:31なんで分からんねん って話しだが
0254デフォルトの名無しさん
2007/08/27(月) 19:01:24サブルーチンとか所在のわかっている関数はB::Deparseとかで確認できるけど、
どこから継承されているかわからない階層の深いメソッドとかはどうすりゃいいですか?
0255デフォルトの名無しさん
2007/08/27(月) 20:28:520256デフォルトの名無しさん
2007/08/27(月) 20:35:430257デフォルトの名無しさん
2007/08/27(月) 21:47:15callerで深い階層まで拾ってみるとかそんな関数使わないとか
0258254
2007/08/27(月) 21:51:26それをcoderef2textに渡せばソースが出力される。
自己解決しました。お騒がせしました。
0259デフォルトの名無しさん
2007/08/27(月) 21:56:30ファイルサーバーの
¥¥fileserver¥dateの下にあるファイル全てを
ローカルの
C:¥date¥ の下にコピーする
ということは可能でしょうか
0260デフォルトの名無しさん
2007/08/27(月) 22:12:48perlで可能だが、お前には無理
0261デフォルトの名無しさん
2007/08/27(月) 22:16:10Macとか、Linuxとかにすればいいのに〜
パソコンくんには無理かな〜
0262デフォルトの名無しさん
2007/08/27(月) 22:23:06馬鹿だ
0263デフォルトの名無しさん
2007/08/27(月) 22:46:42MacとLinnuxの間はRsyncで同期してるから問題ないのだが
WinとLinuxの間をPerlにしようと思ってるんだ
でもフリーソフトで結構いいのがありそう
0266デフォルトの名無しさん
2007/08/28(火) 00:21:54さすがおこちゃま用Perlだw
0267261
2007/08/28(火) 00:22:06ありがとうApple。これからも釣りに使わせてもらうよ
0268デフォルトの名無しさん
2007/08/28(火) 01:03:350269デフォルトの名無しさん
2007/08/28(火) 01:17:10http://www.omosiro-flash.com/
javascriptとかajaxとか使ってるんでしょうか?
0271デフォルトの名無しさん
2007/08/28(火) 05:34:49●test1.pl
#!C:/Perl/bin/perl.exe -w
$pattern=<STDIN>; chomp $pattern;
$replace=<STDIN>; chomp $replace;
while (! eof STDIN) {
$string =<STDIN>; chomp $string;
$string =~ s/$pattern/$replace/g;
print $string,"\n";
}
●sample.txt
<a href='(.*)/index.php.*>(vi.*)</a>
$1/img/$2
<a href='http://vista.crap.jp/index.php?num=8824236930' target='_new'>vi8824236930.jpg</a>
<a href='http://vista.crap.jp/index.php?num=8824557866' target='_new'>vi8824557866.jpg</a>
<a href='http://vista.crap.jp/index.php?num=8824543592' target='_new'>vi8824543592.jpg</a>
<a href='http://vista.crap.jp/index.php?num=8824536390' target='_new'>vi8824536390.jpg</a>
<a href='http://vista.crap.jp/index.php?num=8802124487' target='_new'>vi8802124487.jpg</a>
<a href='http://vista.crap.jp/index.php?num=8796159298' target='_new'>vi8796159298.jpg</a>
これで、 perl test1.pl < sample.txt と動かすと、
「$1/img/$2」 と出力されるんです。
ほんとは、「http://vista.crap.jp/img/vi8824236930.jpg」 みたいになって欲しいんです。
説明書を読んで、$1 のところを \1 とか \\1 とか \\\1 とか \\\\1 とか \\\\\1 とかやってみたんですが
やっぱダメでした。
$1 とか \1 って perl では使えないんですか?
0272デフォルトの名無しさん
2007/08/28(火) 06:31:21$string =~ s/$pattern/$replace/gx;
0273デフォルトの名無しさん
2007/08/28(火) 06:51:38おまえのできてないだろwww
#!/usr/bin/perl
use strict;
my $pattern=<STDIN>; chomp $pattern;
my $replace=<STDIN>; chomp $replace;
while (! eof STDIN) {
my $string =<STDIN>; chomp $string;
if (my (@matches) = ($string =~ /$pattern/)) {
my $rep = $replace;
$rep =~ s/\$(\d+)/$matches[($1 -1)];/eg;
$string =~ s/$pattern/$rep/eg;
}
print $string,"\n";
}
0274デフォルトの名無しさん
2007/08/28(火) 11:05:30たまに接続先に繋ぎっぱなしになって戻ってこない時があります。
UserAgent->timeoutも機能してないし、SIGALRMも効きません。
対処法お願いします。
ActivePerl5.8.8です。
0275デフォルトの名無しさん
2007/08/28(火) 11:36:34$string =~ /^..$/;
と同じことがやりたいです。
よろしくお願いします。
0276デフォルトの名無しさん
2007/08/28(火) 11:49:56length($string) == 2
0277デフォルトの名無しさん
2007/08/28(火) 13:10:25ありがとう!
0278デフォルトの名無しさん
2007/08/28(火) 15:34:09zipファイル(テキストファイルを圧縮したもの)をメモリ上に展開し、
そのテキストを読み込みたいと考えています。
これは可能でしょうか?
可能な場合、参考になるサイト等あればお教えください。
ActivePerl5.8.1で、モジュールの追加なしで考えています。
(Archive::Zipを使い、ファイルに出力すれば読み込めることはわかりました。)
perlでファイルマッピングできればと思いましたが、見つけられず。
0279デフォルトの名無しさん
2007/08/28(火) 15:42:51zipコマンド群を呼べばいいじゃん。
0280デフォルトの名無しさん
2007/08/28(火) 17:10:19Zip contents in a scalar
Q: I want to read a Zip file from (or write one to) a scalar variable instead of a file. How can I do this?
A: Use IO::String and the readFromFileHandle() and writeToFileHandle() methods. See examples/readScalar.pl and examples/writeScalar.pl.
Reading from streams
Q: How do I read from a stream (like for the Info-Zip funzip program)?
A: This isn't currently supported, though writing to a stream is.
0281デフォルトの名無しさん
2007/08/28(火) 20:08:02POD読め。もしくは、ソース読め。
ZIP.pod (ZIP.pm に埋まっている場合あり) より.
>=item contents( $memberOrMemberName [, $newContents ] )
>Returns the uncompressed data for a particular member, or undef.
> print "xyz.txt contains " . $zip->contents( 'xyz.txt' );
>Also can change the contents of a member:
> $zip->contents( 'xyz.txt', 'This is the new contents' );
0282デフォルトの名無しさん
2007/08/28(火) 22:23:47できました!ありがとうゴザイマス。
0283デフォルトの名無しさん
2007/08/28(火) 22:38:31たぶん単純すぎて誰も答えてくれかったんだろうけど、
明らかにこうでしょ。
>>273が珍回答だってのは初心者の俺でもわかるよ
$string =~ s/$pattern/'"'.$replace.'"'/ee;
0284デフォルトの名無しさん
2007/08/29(水) 00:57:00これが使えると思う
http://search.cpan.org/~dconway/Contextual-Return-v0.2.1/lib/Contextual/Return.pm
0285デフォルトの名無しさん
2007/08/30(木) 00:13:250286デフォルトの名無しさん
2007/08/30(木) 02:34:45というかperlで作ったプログラムをperl2exe.exeのようなものでコンパイルして、中身のコードを
見れないようにして人に売ったりしてる人っています?
なんか、perlつかってるひとって商売っ気ないというか、なんでもフリー精神がありそうで、そういうことは
禁止されてるのかなと思いまして。
0287デフォルトの名無しさん
2007/08/30(木) 03:08:21http://news4u.blog51.fc2.com/blog-entry-1497.html
0288デフォルトの名無しさん
2007/08/30(木) 03:14:29というのをコマンドラインからよくやるんだけど、
この「use LWP::Simple」の部分を省略する方法ってありますか?
0289デフォルトの名無しさん
2007/08/30(木) 03:16:260290デフォルトの名無しさん
2007/08/30(木) 03:23:32-Mを忘れてました。もうひとつ、-Mを省略する方法ってないですかね。
perlのaliasを設定するしかないのかな?
0291デフォルトの名無しさん
2007/08/30(木) 04:17:09爆笑した。この変な会社もやはり、コードの中身をあんまり見られたくないから
PARつかったんだろうね。でも簡単に見られるみたいだけど。
だけど、perlだからこそこの面白話がなりたってるね。
0292デフォルトの名無しさん
2007/08/30(木) 04:30:55やっぱり思い出すよな、それ(笑)
0293デフォルトの名無しさん
2007/08/30(木) 10:44:29もう秀丸には戻れない体になってしまいました。
0294デフォルトの名無しさん
2007/08/30(木) 12:54:02スゴス・・・
perl の正規表現の解説をググりまくって調べてたんですが、
/e についてはどこも”アッサリ”な説明しかなく
ましてや /ee なんてどこにも書いてませんでした。
みんな避けて通ってるみたい。
0295デフォルトの名無しさん
2007/08/30(木) 13:10:01それって、$replaceに"が入ってたらしなね?
0296デフォルトの名無しさん
2007/08/30(木) 13:10:59こういう人ってときどき出現するけど、なにかの精神病なのか?
0297デフォルトの名無しさん
2007/08/30(木) 13:31:370298デフォルトの名無しさん
2007/08/30(木) 13:38:16「e修飾子はevalするもので複数回指定可能」という説明だけで、evalを理解している
人にとって十分だからなぁ。
perlopのサンプルコードのコメントにさらっと書いてあるだけなので見落としやすい
というのはあるが。
# /e's can even nest; this will expand
# any embedded scalar variable (including lexicals) in $_
s/(\$\w+)/$1/eeg;
0299デフォルトの名無しさん
2007/08/30(木) 14:05:04いつもの子でしょ。
0300デフォルトの名無しさん
2007/08/30(木) 15:26:31なんなんだろうね、この流れも。
PAR使う理由はそこじゃないだろうに
0301デフォルトの名無しさん
2007/08/31(金) 00:18:32〜のみを引数として渡す、バッチファイル作れば?
0302デフォルトの名無しさん
2007/08/31(金) 00:19:33どうして perl スレはどこも皆キチガイばっかりなんだ?
0303デフォルトの名無しさん
2007/08/31(金) 00:33:02今日も粘着させて貰うので
宜しくお願いしますね
0304デフォルトの名無しさん
2007/08/31(金) 00:36:42ttp://www.websphinx.net/manken/hyen/photo/numata060814-b6.jpg
0305デフォルトの名無しさん
2007/08/31(金) 01:22:49配列は無いでしょうか? …sort関数で可能だったりしますか?
0306デフォルトの名無しさん
2007/08/31(金) 01:23:390307デフォルトの名無しさん
2007/08/31(金) 01:32:36alpha/boo/imac.jpg
beta/aipod/steve.numbers
cats/mycats.cwk
0308デフォルトの名無しさん
2007/08/31(金) 01:37:100309デフォルトの名無しさん
2007/08/31(金) 01:39:30alpha/fasdg/share.exe
alpha/fasdg/tesadf.txt
beta/aipod/steve.numbers
beta/aipod/winny.exe
cats/mycats.cwk
みたいなのを期待しているんじゃ(ry
0310デフォルトの名無しさん
2007/08/31(金) 01:46:20並びになるようにソートしたかったんです。
my @path = ('/c/bar/hoge', '/a/foo', '/b');
これを
/b
/a/foo
/c/bar/hoge
のように並べ替えたいのですが単純にsort関数使うと
/a/foo
/b
/c/bar/hoge
こうなってしまうので… 超初歩的なこと訊いてそうで恐縮ですorz
0311デフォルトの名無しさん
2007/08/31(金) 01:48:000312デフォルトの名無しさん
2007/08/31(金) 01:48:070313デフォルトの名無しさん
2007/08/31(金) 01:50:51単純に言うなら欠くディレクトリの持ってるファイルを先に、
子になるディレクトリを後にして並べたいという感じです
0314デフォルトの名無しさん
2007/08/31(金) 01:52:08> use File::Sort
ありがとう 調べてみます
> 312
ありがとうございます。もうちょっと工夫してみます
0315デフォルトの名無しさん
2007/08/31(金) 02:20:28環境変数 PERL5OPT に設定しておく。
いらないときが面倒だけど。
0316デフォルトの名無しさん
2007/08/31(金) 02:52:080317デフォルトの名無しさん
2007/08/31(金) 04:11:47なにそのスパゲッテイコード。
0318デフォルトの名無しさん
2007/08/31(金) 07:42:200319デフォルトの名無しさん
2007/08/31(金) 08:08:450320デフォルトの名無しさん
2007/08/31(金) 08:22:160321305
2007/08/31(金) 09:13:26こ、これは! まさに望んでいたソートになりました。ありがとうございました
ワンライナーで書けちゃうんですねぇ… 勉強になりました
0322デフォルトの名無しさん
2007/08/31(金) 12:22:130323デフォルトの名無しさん
2007/08/31(金) 12:34:04きれいなシャチ泳ぎは美しいかもしらんが、>>316のコードは
お世辞にもきれいとは言えん。釣りで仕込んだのかもしれんが、無意味な無名配列作成とか。
同じ事を普通に書くと以下になる。
sort { ( $T{$a} ||= split m{/},$a ) <=> ( $T{$b} ||= split m{/},$b ) || $a cmp $b } @path
ただ「スパゲティ」とは別ものだ。
0324デフォルトの名無しさん
2007/08/31(金) 13:07:39なんていうかコードよりこのスタンスに美を感じるんだよね
やはり専門卒レベルには理解出来ない芸術なんだよ
0325316
2007/08/31(金) 13:12:43最初それで書いたんだけど
Use of implicit split to @_ is deprecated at - line 5.
Use of implicit split to @_ is deprecated at - line 5.
ってワーニングでるし思考停止しかけてたから無名配列作ったんだけど
0326デフォルトの名無しさん
2007/08/31(金) 14:02:31@pathの中に "/" が含まれていたらただのsortと同じになるので、
そんなのも考慮するなら、再帰的に作るしかない気がします。
0327デフォルトの名無しさん
2007/08/31(金) 17:08:25$cache{$a} ||= @_ = split m{/},$a
0328デフォルトの名無しさん
2007/08/31(金) 17:34:230329デフォルトの名無しさん
2007/08/31(金) 17:36:170330デフォルトの名無しさん
2007/08/31(金) 17:46:410331デフォルトの名無しさん
2007/08/31(金) 18:06:46■ このスレッドは過去ログ倉庫に格納されています