Perlについての質問箱 22箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/01/29(日) 16:22:07"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
http://www.perl.org/get.html
● 2006/01/29現在の最新版: 5.8.7, 5.8.8 RC1
● 2006/01/29現在の開発版: 5.9.2
リンク集は>>2-3
過去スレは>>4-5
0002デフォルトの名無しさん
2006/01/29(日) 16:22:43Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.7/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0003デフォルトの名無しさん
2006/01/29(日) 16:23:14CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2006/01/29(日) 16:23:521 http://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 http://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 http://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 http://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 http://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 http://pc2.2ch.net/test/read.cgi/tech/1068051036/
8 http://pc2.2ch.net/test/read.cgi/tech/1074151549/
9 http://pc5.2ch.net/test/read.cgi/tech/1079114157/
0005デフォルトの名無しさん
2006/01/29(日) 16:24:3711 http://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 http://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 http://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 http://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 http://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 http://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 http://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 http://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 http://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 http://pc8.2ch.net/test/read.cgi/tech/1131286411/
21 http://pc8.2ch.net/test/read.cgi/tech/1134327348/
0006デフォルトの名無しさん
2006/01/29(日) 17:02:54もうスレ立てなくていいのに
0007デフォルトの名無しさん
2006/01/29(日) 17:11:260008デフォルトの名無しさん
2006/01/29(日) 17:22:17荒らし乙w
0009デフォルトの名無しさん
2006/01/29(日) 18:01:06http://search.cpan.org/~rgarcia/perl-5.9.3/
殆どの人には関係ないけど。
0010デフォルトの名無しさん
2006/01/29(日) 18:51:55やっぱり5.9.3出てたか
出たと聞いたような気がして一度5.9.3と書いたんだけど、
ソースを探しても見つからなくて結局戻したんだ。スマソ
0011デフォルトの名無しさん
2006/01/29(日) 18:58:010012デフォルトの名無しさん
2006/01/29(日) 20:42:12$hoge->{hage1} = {
'date' => '1234';
'value' => 'nanika1';
};
$hoge->{hage2} = {
'date' => '5678';
'value' => 'nanika2';
};
$hoge->{hage3} = {
'date' => '9012';
'value' => 'nanika3';
};
というハッシュを、{date}のvalueを基準にソートしたいのですが
どうすれば良いでしょうか?
多次元ハッシュで検索したんですがうまくいかず困ってます
001312
2006/01/29(日) 20:43:43$hoge->{hage1} = {
'date' => '1234',
'value' => 'nanika1',
};
$hoge->{hage2} = {
'date' => '5678',
'value' => 'nanika2',
};
$hoge->{hage3} = {
'date' => '9012',
'value' => 'nanika3',
};
0014デフォルトの名無しさん
2006/01/29(日) 20:52:59001512
2006/01/29(日) 21:02:490016デフォルトの名無しさん
2006/01/29(日) 21:11:140018デフォルトの名無しさん
2006/01/29(日) 21:19:210019デフォルトの名無しさん
2006/01/29(日) 21:23:16'(\d'が'(d'になってしまうのはなぜか教えてもらえませんか。
0020デフォルトの名無しさん
2006/01/29(日) 21:30:09002112
2006/01/29(日) 21:31:030022デフォルトの名無しさん
2006/01/29(日) 21:36:31002319
2006/01/29(日) 22:00:26cmdでは問題なく出力できましたのでzshが原因だと思うのですが、
echo '(\d'と打ってもちゃんと'(\d'と出力されるのです。
環境はMsys版Perlです。
0024デフォルトの名無しさん
2006/01/30(月) 00:21:590025デフォルトの名無しさん
2006/01/30(月) 01:44:25> zshが原因だと思うのですが、
わかってるんじゃん。 Perl の問題じゃないよ。
0026デフォルトの名無しさん
2006/01/30(月) 05:44:33my @nextlist;
my $rec = {
exist => 1,
path => 'XXX',
};
push(@nextlist, $rec);
my $rec = {
exist => 0,
path => 'AAA',
};
push(@nextlist, $rec);
# ここで exist が 0 以外のものだけのリストが欲しいです
@nextlist = grep($_->{'exists'}, @nextlist);
foreach my $a (@nextlist) {
print ">>$a->{'path'}\n";
}
これだと空のリストしか受け取れません。
grep の判定が悪いのだと思いますが、他に書きかたが浮かびません。
よろしくお願いします。
0027デフォルトの名無しさん
2006/01/30(月) 05:45:370028デフォルトの名無しさん
2006/01/30(月) 08:59:385.8と5.6それぞれでお願いします。一応、これまで調べたことを書いておきます。
・5.8
Encode::from_toで変換しようとしたが、EUC-JP-msのようなENCNAMEが見あたらない。
euc-jp⇒cp932⇒utf8ならできそうですが、それはちょっと……。
・5.6
Jcodeで変換しようとしたが、マッピングが単一っぽい。utf8化後に置換するしかない?
0029デフォルトの名無しさん
2006/01/30(月) 09:12:16自分では使ったことないがこれを試してみては?
ttp://search.cpan.org/~naruse/Encode-EUCJPMS-0.05/EUCJPMS.pm
0030デフォルトの名無しさん
2006/01/30(月) 11:05:50pipeって↓のように使うのではないのでしょうか?
pipe READFH, WRITEFH;
print WRITEFH "aho";
print "douyo =>", <READFH>, "\n";
<READFH>の部分で止まってしまいます。
やりたいことは上記のようにストリーム(WRITEFH)に、
出力した結果をスカラー変数で受け取りたいのです。
003128
2006/01/30(月) 11:07:11thx!! イケますた。
perl -MEncode::EUCJPMS -Mencoding=euc-jp-ms,STDOUT,utf8 -e 'print "〜"' | od -tx1
0000000 ef bd 9e
003228
2006/01/30(月) 11:11:320033デフォルトの名無しさん
2006/01/30(月) 11:14:38よさそうじゃん。自前のへんてこモジュールがいらなくなりそう。
0034デフォルトの名無しさん
2006/01/30(月) 11:42:11マルチスレッドにするとか、selectを使うとかして、
さらにバッファのフラッシュだなんだを注意深く
行わないとまともには動かないだろうね。
IO::Scalarでも使っとけ。
0035デフォルトの名無しさん
2006/01/30(月) 13:07:19borderの値を1にしても線の太さが見た感じ2になってしまいます
どうすればをちゃんと表示できるんでしょうか?
0036デフォルトの名無しさん
2006/01/30(月) 13:15:23CGI? そうならWEBプログラミング板で聞いた方が
0037デフォルトの名無しさん
2006/01/30(月) 13:16:05Webサイト制作初心者用質問スレ Part 152
http://pc8.2ch.net/test/read.cgi/hp/1137488105/
0038デフォルトの名無しさん
2006/01/30(月) 13:55:42>IO::Scalarでも使っとけ。
そ、そんなものが。ありがとうございます。調べてみます。
0039デフォルトの名無しさん
2006/01/30(月) 18:23:30-----------------
my $tmp;
sub hoge {
my ($filename) = @_;
local *FILE;
open FILE, "+>> $filename";
�@*TMP = *FILE;
�A$tmp = *FILE;
}
-----------------
この例での�@と�Aの違いとはなんなのでしょうか。
ttp://www.site-cooler.com/kwl/perl/2.htm#2-7
↑によると、�@はアクセス名を変えるだけ?のリファレンス?になっているように読めます。
localとはグローバル変数の内容をサブルーチン(下層含む)の中限定で変更する物と
このスレのリンクにあるperl5.8.xのドキュメントに書いてあったのですが、
その定義ならば仮に�@のリファレンスに代入したとしても、このサブルーチンが終わった時点で
ここで作ったファイルハンドルにアクセスできなくなるような気がします。
localで設定したハンドルにサブルーチンを抜けてからもアクセスしたいのですが。。
0040デフォルトの名無しさん
2006/01/30(月) 18:44:29個人的な目標としては、
サブルーチンを用いてfileAを開き、続けてfileBを開いた状態で、
fileAにアクセスするような状態に対応できるようにしようと思ってます。
現状ですと、fileBを開いた段階でハンドルはBになってしまうと思われる為、
Aにはアクセスできなくなってしまうような気がしてます。
0041デフォルトの名無しさん
2006/01/30(月) 19:04:18ファイルハンドルのリファレンスがあるので、
sub hoge {
my ($filename) = @_;
open my $fh, "+>> $filename";
$tmp = $fh;
}
でいいとおもうが。$tmpがundefであることが確実なら
open $tmp, "+>> $filename";
でも可。
0042デフォルトの名無しさん
2006/01/30(月) 19:24:44カウントダウンを表示しながら、キー入力を待ち、入力ある無しで分岐してまた戻ってくるものを書いています。
その部分は省いています。
FORK:
print "fork開始\n";
if ($pid = fork) {
print "親開始\n";
my $count = 0;
while (1) {
sleep (1);
print + $count ++;
last if $count > 5;
}
print "親終了\n";
} elsif (defined $pid) {
print "子開始\n";
while (<STDIN>) {
print "入力確認\n";
last if $_;
}
print "子終了\n";
}
print "fork終了\n";
goto FORK;
forkを抜けて頭に戻ると「fork開始」で止まってしまいます。
子プロセスを途中で止める方法とか、killも調べたけどよくわからなくて。
よければヒントお願いします。
0043デフォルトの名無しさん
2006/01/30(月) 22:29:41レス遅れてすみません。
perl5.6以前でも動くモジュールにしたいため、型グロブなんぞ使ってます。
プロバイダによっては古いパール使ってるところもあるような気がするので…
0044デフォルトの名無しさん
2006/01/30(月) 22:47:24あれ、5.005あたりから使えなかったっけ?
open my $fh, $filename
構文って。
FileHandie モジュール必須だっけ?
0045デフォルトの名無しさん
2006/01/30(月) 22:56:445.8のドキュメントには、5.6以前の場合は〜の記述がありました。
微妙なんですよね。。使ってるとこありそうで。
004642
2006/01/30(月) 23:07:040047デフォルトの名無しさん
2006/01/30(月) 23:19:235.005 では使えない。3 引数の open() と共に 5.6.0 から。
http://search.cpan.org/~nwclark/perl-5.8.7/pod/perl56delta.pod#File_and_directory_handles_can_be_autovivified
単に「取り回し易いファイルハンドル」が欲しいだけなら、
個人的には IO::* や FileHandle より Symbol::gensym() の方が好きかな。
http://search.cpan.org/~nwclark/perl-5.8.7/lib/Symbol.pm
0048デフォルトの名無しさん
2006/01/30(月) 23:21:10@test[a][b]という多次元配列に値を追加代入したいのですが
どのように行えばよいか悩んでおります。
以下のソースは動きませんが、このような動作をするにはどうしたら
良いでしょうか?
while(10 > $count){
push(@DATA_A1[$count][A1], $count);
$count++;
}
0049デフォルトの名無しさん
2006/01/30(月) 23:23:51うん。
何を実現したいかをもうちょっと具体的に。
0050デフォルトの名無しさん
2006/01/30(月) 23:29:18これはどうよ
0051デフォルトの名無しさん
2006/01/30(月) 23:32:56perlでは、多次元配列は、「配列リファレンスの配列」で実現できる。
my @marray = ();
my $count = 0;
while($count < 10){
push @{$marray[$count]}, $count; # $marray[$count] を配列リファレンスとみなして、新規データをプッシュ
$marray[$count][0] = 0xffff; # 要素へ直接アクセスするならこう。
$count++;
}
0052デフォルトの名無しさん
2006/01/30(月) 23:58:52sub hoge { local *x; @x = @_; return *x;}
*c = hoge(1);
$d = hoge(2);
$e = hoge(3);
*f = hoge(4);
print "\\\*c = ",\*c," , \*c = ",*c," [",@c,"]\n";
print "\\\$d = ",\$d," , \$d = ",$d," [",@$d,"]\n";
print "\\\$e = ",\$e," , \$e = ",$e," [",@$e,"]\n";
print "\\\*f = ",\*f," , \*f = ",*f," [",@f,"]\n";
0053デフォルトの名無しさん
2006/01/31(火) 00:09:28↓なんかでどう?同じファイルを同時オープンしたとき駄目だけど。これならperl4.0でも動くよ
sub myopen{
open($_[0], ">".$_[0]);
return $_[0];
}
my $fileA = myopen("a.txt");
my $fileB = myopen("b.txt");
print $fileA "aaaaaaaaa";
print $fileB "bbbbbbbbb";
close($fileA);
close($fileB);
それか、randとかで常に一意なファイルハンドル名を作り続けるか
0054デフォルトの名無しさん
2006/01/31(火) 00:55:39@test[a][b]が間違い。
$test[a][b]は、
多次元配列@testのa番目の要素である$test[a]という配列のb番目の要素
であるってこと分かってる?
配列のキーは数字であって文字でないことも分かってる?
キーが文字の場合は、ハッシュにしなきゃだめだって事も。
005530
2006/01/31(火) 01:08:29>30の質問でjavaのFilterWriter的なものを作りたかったのですが、
ファイルハンドルをtieという関数に掛けることでできました。
ご存知かもしれませんが一応報告。>>34氏に感謝!
http://www.kt.rim.or.jp/~kbk/perl5.005/perltie.html#Tying_FileHandles
0056デフォルトの名無しさん
2006/01/31(火) 01:19:47Perlには向いてないと思う
0057デフォルトの名無しさん
2006/01/31(火) 03:25:58通信で使っていた。シェルで | 記号使った時はシェルが
pipe() で繋げてくれる。
今ではマルチスレッドでも使えるが、とにかく pipe は
子プロセスとか別スレッドとかとやりとりをしたい場合に
使うものだ。同一プロセスでやりたいなら pipe は使うな。
普通に変数使ってメモリに保持するか、あるいはそれで
どうしてもやり辛いというのであればファイルを使っておけ。
File::Temp モジュールのやつで作業用ファイル作るとかな。
005839
2006/01/31(火) 12:51:29ありがとうございます。遅レスすみません。
今お客さんのところで朝早くから夜遅くまで納品検証で動けないため(始めの質問はトイレに逃亡中に書きました)、
週末辺りに参考にさせて頂きますです。
005942
2006/01/31(火) 13:09:15ありがとうございます。
いろいろ調べてみたけど、作業用ファイルに行き着きました。
でも、別のプロンプトから書き込まないとだめってことですよね。
あまりスマートじゃないので、悩んでいます・・・
子プロセスの終了を待つ関数はあるのに、
強制で中断させる関数はないのでしょうか。
killもいまいち使い道がわからないorz
0060デフォルトの名無しさん
2006/01/31(火) 15:26:56子プロセス側でexitしてないけど・・・?
というか、alarmではだめなの?forkするほどのことじゃないような気が。
ちなみにkillの書式は
kill シグナル番号, プロセスID
なので、親プロセス側で kill 9, $pid とすればok。
0061デフォルトの名無しさん
2006/01/31(火) 15:32:42OSによっては全然意味違うかも知れないけど。
0062デフォルトの名無しさん
2006/01/31(火) 16:05:38006342
2006/01/31(火) 16:29:31ちょっとこんがらがってます。
>>60
のやりかたでも、gotoで戻るとやはり止まってしまいます。
まず、シグナルを送る、とは実際何をするのか?
alarm、selectでどうやるのか?
もうちょっと脳みそコネコネしてきます。
0064デフォルトの名無しさん
2006/01/31(火) 17:06:06use encoding 'euc-jp', STDIN => 'Shift_JIS'; がうまく行かない。
以下のようになる。なんで?
$ echo $LANG
ja_JP.eucJP
$ echo 'シフトJIS' | nkf -s >sj.txt
$ perl p sj.txt
"\x{0083}" does not map to euc-jp at p line 7, <> line 1.
"\x{0083}" does not map to euc-jp at p line 7, <> line 1.
"\x{0083}" does not map to euc-jp at p line 7, <> line 1.
\x{0083}V\x{0083}t\x{0083}gJIS
$ od -Ax -tx1 sj.txt
000000 83 56 83 74 83 67 4a 49 53 0a
00000a
$ cat p
#!/usr/bin/perl -w
use strict;
use encoding 'euc-jp', STDIN => 'Shift_JIS';
while (<>) {
print;
}
$
0065デフォルトの名無しさん
2006/01/31(火) 17:29:06その <> は <STDIN> ではなく <ARGV> だ。
006642
2006/01/31(火) 17:52:39if ($pid = fork) {
print "親開始\n";
while (<STDIN>) {
last if $_;
}
kill 9, $pid;
&post;
print "親終了\n";
} elsif (defined $pid) {
print "子開始\n";
&reload;
print "子終了\n";
}
色々ありがとうございました。
もうちょっと精進しますです。
0067デフォルトの名無しさん
2006/01/31(火) 18:34:400068デフォルトの名無しさん
2006/01/31(火) 18:42:07独り言か?
007042
2006/01/31(火) 18:56:11elsif (defined $pid) { }が子プロセスになるんじゃないんですか?
動いてるとはいえ、理解してないのは気持ち悪いですが・・・。
0071デフォルトの名無しさん
2006/01/31(火) 18:59:21else で十分だと思う。
007242
2006/01/31(火) 19:28:28ありがとうございます。
上のだと、fork失敗の次のelse { print 'fork失敗'; }がいりますね。
すっかり忘れてました。
0073デフォルトの名無しさん
2006/01/31(火) 19:33:18fork は子には 0、親には PID を返すが、fork 失敗の時は undef を返す。
なので defined による判別は必要だ。
0074デフォルトの名無しさん
2006/01/31(火) 19:47:55すまん、俺が勘違いしてた。その通り。
0075デフォルトの名無しさん
2006/02/01(水) 00:41:09use encoding 'ENCNAME';した上でExcelファイルをparseさせると、
CPU食いっぱなしで帰ってこないです。
とりあえず、encoding指定なしでEncode::from_toで逃げましたが……。
0076デフォルトの名無しさん
2006/02/01(水) 01:13:460077デフォルトの名無しさん
2006/02/01(水) 03:51:37per mailing listにその話題を投げてみたら?
0078デフォルトの名無しさん
2006/02/01(水) 09:39:02この配列で重複している要素だけを取り出すにはどうしたらいいんでしょうか?
aaaが3個、bbbが3個、cccが1個だから
答えはaaaとbbbになればいいわけです
0079デフォルトの名無しさん
2006/02/01(水) 09:56:57my @array=("aaa","bbb","ccc","bbb","aaa","bbb","aaa");
my %hash;
my @answer;
$hash{$_}++ for( @array );
for (sort keys %hash){push @answer,$_ if $hash{$_} > 1}
print join "\n", @answer;
たぶんこれで。。
0080デフォルトの名無しさん
2006/02/01(水) 09:59:37ハッシュで個数数えて2個以上あるのを抽出。
$count{$_}++ for @array;
@dup = grep { $count{$_} >= 2 } keys %count;
0081デフォルトの名無しさん
2006/02/01(水) 09:59:39ttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq4.html#How_can_I_extract_just_the_uniqu
の応用
my @array=("aaa","bbb","ccc","bbb","aaa","bbb","aaa");
my %e;
$e{$_}++ foreach @array;
my @result = grep { $e{$_} > 1 } keys %e;
0082デフォルトの名無しさん
2006/02/01(水) 10:11:55my @array=("aaa","bbb","ccc","bbb","aaa","bbb","aaa");
my $result, %tmp;
for(@array) { push @result,$_ if $tmp{$_}++ > 1 };
0083デフォルトの名無しさん
2006/02/01(水) 12:07:45my @array = qw(aaa bbb ccc bbb aaa bbb aaa);
my %saw;
my @result = sort grep ++$saw{$_} == 2, @array;
0084デフォルトの名無しさん
2006/02/01(水) 12:22:420085デフォルトの名無しさん
2006/02/01(水) 12:47:08それぞれ『やり方は何通りもある』が信条のPerlらしい解答たちだ。
0086デフォルトの名無しさん
2006/02/01(水) 15:42:09print foreach $a
を実行したら
1234
と結果が出たら嬉しいんですけど
そのようにすることはできないのでしょうか?
0087デフォルトの名無しさん
2006/02/01(水) 15:57:56> コンパクトだが良い命題だったなw
こんな低レベルの命題でスレを埋めるのは勘弁な。
0088デフォルトの名無しさん
2006/02/01(水) 15:59:47foreachを再定義したいってこと?
なぜそんな事したいの?
008986
2006/02/01(水) 16:11:30$a = "10..60,100..500"
というデータがあって
例えば32がその中にあるかどうか?
を調べるたいんです。
まあ、できないなら普通にやりますが
できたらかっこいいかなと^^;
0090デフォルトの名無しさん
2006/02/01(水) 16:11:53もしかすると、こうゆうことがしたいの?
foreachはいらんけど。
my $test = join '', 1..4;
print foreach $test;
それから、sortする場合以外で$a, $bを使うのは感心せんな。
0091デフォルトの名無しさん
2006/02/01(水) 16:12:250092ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/01(水) 16:12:480093デフォルトの名無しさん
2006/02/01(水) 16:13:06こうでいいのか
009486
2006/02/01(水) 16:25:01>>92
>>93
3人さんのを参考にして
print foreach eval $a;
が一番好みの書き方なんでこうしました。
ありがとうございます!
>>90
実際は$aではありません。
前も質問用に簡略化したらつっこまれましたーー;
0095デフォルトの名無しさん
2006/02/01(水) 16:54:53で、本当に知りたいのは eval で "1..4" をリストとして
展開できるという事じゃなくて、こっちじゃないのか。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq4.html#how_can_i_tell_whether_a_certain_element_is_contained_in_a_list_or_array
> 前も質問用に簡略化したらつっこまれました
そりゃ >>90 が言ってるように、print for @array なんて
見せられたら print @array でいいじゃんと思うわな。
func($_) for @array ならともかく。
0096デフォルトの名無しさん
2006/02/01(水) 17:02:50> $a = "10..60,100..500"
> というデータがあって
> 例えば32がその中にあるかどうか?
> を調べるたいんです。
> まあ、できないなら普通にやりますが
> できたらかっこいいかなと^^;
Set::IntSpan
Array::IntSpan
あたり。
0097デフォルトの名無しさん
2006/02/01(水) 18:15:38そうだなあ。無駄が多そうだけどこれでもできるだろうな。
%hash = map {$_=>1} (eval $a);
if ($hash{32}) {
print "32 はある。\n";
}
0098デフォルトの名無しさん
2006/02/02(木) 00:36:38このコードがなぜ機能するのか分かりません。
my $F = "xxx.dat";
open($F, $F) or die;
my @data = <$F>;
print @data;
print $F,"\n";
明らかにスカラー値は文字列とファイルハンドルの2値を同時に持つことが
可能らしいのですが、perlのデータ型について色々な解説を読んだのですが
「そういうことが出来ますよ」と明言した解説が見つかりません。
0099デフォルトの名無しさん
2006/02/02(木) 00:40:420100デフォルトの名無しさん
2006/02/02(木) 01:14:04$fh = "hoge";
open $fh, $fh;
$str = "hoge";
print <$str>;
# 又は print <hoge>;
とやってみるとどういうことかわかると思う。
0101デフォルトの名無しさん
2006/02/02(木) 01:14:370102ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/02(木) 01:15:21>>99 が言う通り、その解釈はおかしいんだけど…。
>>100 だけじゃなくて、%{main::} を Data::Dumper で見ると良いかも。
0103デフォルトの名無しさん
2006/02/02(木) 01:17:00> 「そういうことが出来ますよ」と明言した解説が見つかりません。
open関数のマニュアルエントリに書いてあるやん。
0104デフォルトの名無しさん
2006/02/02(木) 01:41:06俺もあんまりファイルハンドルはよく知らんのだけど、
経験的に「一意なハンドル名」をPerlに登録する感じなんじゃね?
その「一意なハンドル名」を元にPerlがどのハンドルなのかを特定して、
入出力の処理をすると。
0105デフォルトの名無しさん
2006/02/02(木) 01:48:31つ らくだ本 (Perl4について書かれた初版にも載っている)
つーか、use strict 使えよ。
間接ファイルハンドルはPerl4時代からの機能で、以下 >>53
openでは(シンボリックリファレンス扱いなので) use strict 下だとエラーになる。
念の為、open my $fh,$filename; とした場合の $fh は無名グロブへのリファレンスな。
0106デフォルトの名無しさん
2006/02/02(木) 04:42:20haehae, kakaka;
}
サブルーチン書くときに用もないのに()付けちゃってるのはDQNですか?
プロトタイプをちゃんとしようとしてるうちに変な癖が付いちゃったみたいで… orz
0107デフォルトの名無しさん
2006/02/02(木) 06:19:43変でも何でもない。
全く問題ない。
0108デフォルトの名無しさん
2006/02/02(木) 08:14:260109デフォルトの名無しさん
2006/02/02(木) 09:43:10プロトタイプを必要としていないサブルーチンでプロトタイプの
宣言をするのは、読み手を混乱させかねないのでお勧めしない。
特に引数無し () やスカラー1つ ($) 、サブルーチンを含めた場合
(&@) は perl が最適化の為に特別扱いしようとするので、無駄な
処理をする事になる。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html#Prototypes
0110デフォルトの名無しさん
2006/02/02(木) 10:21:03> 無駄な処理をする事になる。
今時、処理系のほんの僅かのオーバーヘッドと
人間にとっての理解性と、どっちが大事なんだ?w
0111デフォルトの名無しさん
2006/02/02(木) 10:55:07そういう選択肢もあるって程度?
そこより先に根本的なロジックの見直し。
011298
2006/02/02(木) 11:30:51なるほど、分かりやすい例をありがとうございます。妄想を解いていただいて感謝。
0113デフォルトの名無しさん
2006/02/02(木) 12:17:10本当に引数を取らないのでなければ、サブルーチン宣言に空の括弧を付けないでください。
O・NE・GA・I♪
0114デフォルトの名無しさん
2006/02/02(木) 12:27:150115デフォルトの名無しさん
2006/02/02(木) 13:31:32use encoding 'Shift_JIS';
$str1 = "鼻毛";
$str2 = "三日";
print "俺の$str1は$str2以内に伸びてくる。\n".
"したがって二日以内に切ることが望ましい\n";
のようにすると一行目が「俺の。」と表示されてしまいます。これを
print "俺の$str1\は$str2\以内に伸びてくる。\n".
のようにして、変数名の後に \ を入れると正しく表示されるのですが、
こういう処理方法は正しいのでしょうか?
それとも最初のやり方でうまくいかないのはPerl側の不具合とみるべきでしょうか
0116デフォルトの名無しさん
2006/02/02(木) 13:31:49思うのだが... &つければ別だが。
0117デフォルトの名無しさん
2006/02/02(木) 13:34:460118デフォルトの名無しさん
2006/02/02(木) 13:47:57バグだろうな。
取りあえず、「俺の${str1}は${str2}以内に」のように { } を付ければ回避できる。
\ を付けるよりはスマートだろ?
0119デフォルトの名無しさん
2006/02/02(木) 13:54:39バグというより、そもそも>>115のようなコードがおかしい。
もし $str1 の後に続く文字が英数字だったらどうするの?
0120119
2006/02/02(木) 13:55:130121デフォルトの名無しさん
NGNGリテラルなのに「もし」って…
0122デフォルトの名無しさん
2006/02/02(木) 14:11:31% perl -MLWP::Simple -e "getprint 'http://cpan.org/RECENT'" | grep "/by-
module/Acme" | mail -s "New Acme modules! Joy!" $USER
ていう例文が出るのですが、これをDosプロンプトで入力するとエラーがでます。
$USERのところにメールアドレスを入れるのかと思ってやってみたのですが
同様の結果でした。
何が間違ってるのでしょうか?
0123デフォルトの名無しさん
2006/02/02(木) 14:13:57cpanのアドレスはそのままでは404なので、適宜修正して入力してます。
0124デフォルトの名無しさん
2006/02/02(木) 14:14:38操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とか
'mail' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とかいうエラーだったら潰すぞ?
0125デフォルトの名無しさん
2006/02/02(木) 14:19:54> ていう例文が出るのですが、これをDosプロンプトで入力するとエラーがでます。
で、そのエラーを隠蔽するのは嫌がらせか?
0126デフォルトの名無しさん
2006/02/02(木) 14:25:560127デフォルトの名無しさん
2006/02/02(木) 14:29:49webprog池
0128122
2006/02/02(木) 14:39:35module/Acme"
までのコマンドなら正常に実行できるので
| mail -s "New Acme modules! Joy!" $USER
でこけてるんだと思うのですが。
そもそも $USERって何でしょうか?検索してもuserばっかりヒットして良く分からない。
| mail -s "New Acme modules! Joy!" $USER
って"New Acme modules! Joy!"の題名で$USERのアドレスにメールを送るって命令なんですよね?
メールアドレスの指定もしてないのに自分宛に送れたらスゴイ便利だけど、
$USERには自動的に自分宛のアドレスが格納されてるわけないから、
ここにアドレス自分で入れる必要があると思うんですがやり方がよくわかりません。
0129デフォルトの名無しさん
2006/02/02(木) 14:42:21なので、 UNIX なら自分宛にメールが届くが、 Windows なんだから諦めれ。
0131デフォルトの名無しさん
2006/02/02(木) 14:46:51$USER → %USERNAME%
だな
0132デフォルトの名無しさん
2006/02/02(木) 14:49:58UNIX じゃないので %USERNAME% がメールアドレスに対応したものとは限らないし、
あまり変なこと教えるのはどうかと。
0133デフォルトの名無しさん
2006/02/02(木) 14:54:220134デフォルトの名無しさん
2006/02/02(木) 15:00:25実装次第。
0135デフォルトの名無しさん
2006/02/02(木) 15:09:30すまん、心配性なもので、他所に変なメール出しちゃったらとかいろいろ気になってしまって。
0136デフォルトの名無しさん
2006/02/02(木) 15:57:31お前、微笑ましいな。
言いたい事はわかるが、完全に勘違いしてるぞ。
0137デフォルトの名無しさん
2006/02/02(木) 16:50:58おかしいという理解でいいでしょうか。でもqq()とqr()の中はdecode
されるとあるので、ちょっと微妙ですね。どっちにしろわかりにくい
からドキュメントに問題あると言ってもいいとは思う。
0138デフォルトの名無しさん
2006/02/02(木) 18:02:39こんな所でゴチャゴチャ聞いてないで関係者に直接聞いたほうがいいんでない?
下のところからJcode mailinglistに参加すればEncode maintainerに質問が
ぶつけられる。
ttp://openlab.jp/Jcode/index-j.html
0139デフォルトの名無しさん
2006/02/02(木) 18:08:210140デフォルトの名無しさん
2006/02/02(木) 18:53:30イヤイヤ、ドキュメントは彼が書くんだから向こうに投げるのは価値ありだよ。
まあ、彼はスルーの名人だから反応無しかもしれんがw
0141デフォルトの名無しさん
2006/02/02(木) 23:45:300142デフォルトの名無しさん
2006/02/03(金) 00:23:32blog見てるとそんな気がする。
0143デフォルトの名無しさん
2006/02/03(金) 01:27:08忙しくて放置食らったら、その後考えればよい。
0144デフォルトの名無しさん
2006/02/03(金) 01:41:14ひとつの単語だよ!
0145デフォルトの名無しさん
2006/02/03(金) 07:22:02スレ違い気味だけど調べたのでレスしてみる
en-
「…(の状態)にする」
ttp://dictionary.goo.ne.jp/search.php?MT=en-&kind=ej&row=2
code
情報を表すのに使用される記号システムで、根源的に別のものを表す可能性がある。
ttp://www.ipa.go.jp/security/rfc/RFC2828-03CJA.html#code
encode
(I) もともと、いくつかの他の表現形をもつ可能性がある情報を表現するための記号のシステムを利用すること。
ttp://www.ipa.go.jp/security/rfc/RFC2828-03EJA.html#encode
というわけで、codeにするのがencode。
Encodeモジュールで言えばcodeは…UTF-8フラグが付いてない文字列?
0146デフォルトの名無しさん
2006/02/03(金) 12:59:43>>144のツッコミワロスw
0147デフォルトの名無しさん
2006/02/03(金) 14:53:060149デフォルトの名無しさん
2006/02/03(金) 16:25:09コマンドプロントでtest.plが置いてあるディレクトリまで移動して、
perl test.plと打つと問題なく動くのですが、
perl test.pl
pause
と、同一ディレクトリにバッチファイルを作り、起動させると、
'perl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出てしまいます。
他のディレクトリでも試してみたところ、C:\Documents and Settings\Administrator\デスクトップ
でのみ正常に動きました。
バッチファイルでperlのパスを絶対パスでC:\usr\local\bin\perlと指定すれば
エラーは出なくなったのですが、何故ディレクトリの位置によって
コマンドを認識したりしなかったりするのでしょうか?
0150デフォルトの名無しさん
2006/02/03(金) 16:26:30use IO::File;
となっているプログラムで、
my $fh = new IO::File('test.txt', 'w');
$fh->print(...);
という感じで utf8 フラグの立った文字列を書こうとすると
Wide character を書いたという警告が出て、結果として
utf8 が書かれるのですが、IO::File に対しては use open
は効かないということでしょうか? (しょうがないから
binmode $fh, ':encoding(euc-jp)'; でやることにしま
したが)。
0151デフォルトの名無しさん
2006/02/03(金) 17:04:14Encode.pm 書いた人間がお勧めしないって言ってんだから、
何も知らん馬鹿が使うな。
0152デフォルトの名無しさん
2006/02/03(金) 17:29:04http://www.kt.rim.or.jp/~kbk/perl-5.8/open.html#description
> 二つの引数を取る open()、readpipe() (または qx//) と同様の
> 演算子はその レ キ シ カ ル ス コ ー プ で 本プラグマを
> 見つけると宣言されたデフォルトを使用します。
0153150
2006/02/03(金) 17:57:090154デフォルトの名無しさん
2006/02/03(金) 18:36:30open(F, '<&DATA') or die;
while (<F>){print}
__DATA__
abc
def
これはできません。どうやったら DATA をリダイレクトできるんでしょうか?
use IO::File;
my $fh = new IO::File('<&DATA');
die "$!\n" unless ($fh);
while (<$fh>){print}
__DATA__
abc
def
0155デフォルトの名無しさん
2006/02/03(金) 19:20:24何故そんなに IO::* を使いたがるんだ?
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldata.html#Scalar_value_constructors
> __END__ および __DATA__ というトークンは、実際のファイルの終端より
> 前にある論理的なスクリプトの終端を示すために使うことができます。
> これらの後にあるテキストは無視されますが、ファイルハンドル DATA を
> 通して読み出すことができます。__END__ に対しては main::DATA 、
> __DATA__ に対しては PACKNAME::DATA (ここで PACKNAME はカレント
> のパッケージ名です) を使います。
IO::File::new() の中で IO::File::open() が呼ばれ、その中で
open($fh, '<&DATA') されるから、君の渡した '<&DATA' は
*IO::File::DATA をコピーしている。
#!/usr/local/bin/perl -w
use strict;
my $fh = \*DATA;
print <$fh>;
__DATA__
blah, blah, blah...
0156デフォルトの名無しさん
2006/02/03(金) 19:32:36これを同じ日にもう一つ記事を書く時に2/3 -1 2/3 -2って感じにしたいんですがどうすれば・・・。
0157154
2006/02/03(金) 20:51:23これでできました。ありがとうございます。
使いたい理由は open する個所だけ条件分岐してファイルまたは DATA を
読みたかったからです。(まあ IO::File じゃなくてもいいんですが…)
#!/usr/bin/perl -w
use strict;
use IO::File;
my $fh = new IO::File('<&main::DATA');
die "$!\n" unless ($fh);
while (<$fh>) {
print;
}
$fh->close();
__DATA__
abc
def
0158デフォルトの名無しさん
2006/02/03(金) 21:37:46知るかボケ
0159デフォルトの名無しさん
2006/02/03(金) 21:51:13意味不明、いやむしろWebProg
http://pc8.2ch.net/php/
0160デフォルトの名無しさん
2006/02/03(金) 22:19:14それはPerlではなくてDOSやUNIXの基礎知識だから
↓の単語で調べてみな
path
(ちなみに「パス」と読む。「パスを通す」も合わせてググってみて)
0161デフォルトの名無しさん
2006/02/03(金) 22:34:01use strict;
use Encode qw(from_to);
my $str = "\e\$B-5\e(B";
from_to($str,'iso-2022-jis','cp932');
print $str,"\n";
0162デフォルトの名無しさん
2006/02/04(土) 00:27:28俺は 'iso-2022-jis' なんて指定を通しちゃうザル加減の方が
弾の人らしく思うけどな。Encode::Aias::init_aliases() のこれ。
define_alias( qr/\bjis$/i => '"7bit-jis"' );
define_alias( qr/\beuc.*jp$/i => '"euc-jp"' );
define_alias( qr/\bjp.*euc$/i => '"euc-jp"' );
define_alias( qr/\bujis$/i => '"euc-jp"' );
define_alias( qr/\bshift.*jis$/i => '"shiftjis"' );
define_alias( qr/\bsjis$/i => '"shiftjis"' );
'not jis' でも通るし 's-jis' なんて書いた日には bug fix に悩みそうだ。
0163デフォルトの名無しさん
2006/02/04(土) 00:52:49通常のやり方ですと同プロセス間でしか共有出来ないのでMaxSpareServersを1等に
して常に1個のプロセスを使いまわさないと実現できません。
fastCGIの場合、出来ると聞いたことがあります。
2chはCで静的メモリを確保しperl/CGIで静的メモリをreadして記事を表示している
と聞いたことがあるのでperlでも静的メモリread(writeも?)をサポートしているのかと
思った次第です。
0164163
2006/02/04(土) 01:02:29shmop関数関連ですね。
もうちょっとググって情報集めしてみます。
0165デフォルトの名無しさん
2006/02/04(土) 01:16:00Premature end of script headers
と表示され、実行できません。
以下のサイトに書いてある事も試しましたがいずれもだめぽですた。
http://sagittarius.dip.jp/~toshi/premature.html
http://www.tomilab.net/manual/howto/cgi.html#troubleshoot
で、同じプログラムを別のサーバや自分のPCで実行するとうまく動作します。
これは一体何が原因なんでしょうか?
0166デフォルトの名無しさん
2006/02/04(土) 01:19:32>>1
0167デフォルトの名無しさん
2006/02/04(土) 01:21:11mod_perlを使おう!
http://pc8.2ch.net/test/read.cgi/php/1005122528/
モジュール一個書いて startup.pl に入れれば済む気がしなくもない。
>>165
△▲ WebProg 初心者の質問 Part12 ▼▽
http://pc8.2ch.net/test/read.cgi/php/1125215604/
0168141
2006/02/04(土) 02:48:56すんません。早とちりレスしました。en=Englishの事かーと思ってアホな感動してた自分にテラワロス
ところで、関数宣言(?)について質問したいです。
クロージャなどを受け取って処理したい関数をつくりたいとして、
sub try{
〜処理〜;
&{$_[0]};
}
などと宣言して、使うほうでは、sub{}を使って、
try sub{
print "aho";
}
などとなりますが、関数宣言の部分で、sub try(&;$){ } のように書くと
呼び出しで、subを省略して↓のように関数呼び出しできるようなのですが、
try {
print "aho";
}
これはなんなのでしょう?今まで関数宣言の括弧は無意味なのかと思ってましたが、
なにやら意味があるみたいで興味津々です。
なにか文献があると助かるのですが、そういったものとかないでしょうか。
0170デフォルトの名無しさん
2006/02/04(土) 03:30:270171デフォルトの名無しさん
2006/02/04(土) 05:14:05できないんでしょうか?
Perl v5.8.7
0172デフォルトの名無しさん
2006/02/04(土) 09:09:16以前、別のフォルダにインスコした時のパスが残っていたようで、重複登録されてました。
重複部分を削ったら無事、動くようになりましたthx。
0173デフォルトの名無しさん
2006/02/04(土) 09:17:30するかは実行時まで決まらないので、クラスのメソッドに
対するプロトタイプ宣言は効果がありません。
型保証が欲しいならC++やJavaなどの静的型付けの言語を
使いましょう。
0174デフォルトの名無しさん
2006/02/04(土) 10:47:14何かでできたような気がするんだが。
まあ、変数関係は use strict; だ。
あと使ってない変数があると警告を出すとか、何かあったよね?
忘れたけど。
0175デフォルトの名無しさん
2006/02/04(土) 11:37:34ご指摘に冷や汗三斗(^^;;;;;
0176デフォルトの名無しさん
2006/02/04(土) 12:08:200177デフォルトの名無しさん
2006/02/04(土) 12:14:56手元にインストールされてるのと違うバージョンの
マニュアル見ても意味無いよ
017839
2006/02/04(土) 16:17:21基本のつくりを↓のような感じにして、意図どおりの動きをさせることができました。
ありがとうございました。
--------------------
use strict;
package p_test;
sub open {
my ($id, $file) = @_;
local *FILE = $id;
open(FILE, "+>>$file");
}
sub close {
my ($id) = @_;
local *FILE = $id;
close(FILE);
}
sub write {
my ($id, $tmp) = @_;
local *FILE = $id;
print FILE $tmp;
}
sub read {
my ($id) = @_;
local *FILE = $id;
seek(FILE, 0, 0);
@tmp = <FILE>;
}
--------------------
&p_test::open("LOGINIDLIST", $globalpath."loginlist.dat");
0179デフォルトの名無しさん
2006/02/04(土) 16:56:370180デフォルトの名無しさん
2006/02/04(土) 18:04:22ライブラリありますでしょうか?
du -sの結果みたいなやつです。`du -s`するしかないでしょうか?
何卒宜しくお願い申し上げます。
0181デフォルトの名無しさん
2006/02/04(土) 18:14:35ならとりあえず「du」でCPANで検索してみようぜ
ttp://search.cpan.org/search?query=du&mode=all
Filesys::DiskUsage
Estimate file space usage (similar to `du`)
ttp://search.cpan.org/~cog/Filesys-DiskUsage-0.04/lib/Filesys/DiskUsage.pm
0182デフォルトの名無しさん
2006/02/04(土) 21:20:26まあねぇ。Error.pmとか。
0183デフォルトの名無しさん
2006/02/05(日) 00:14:38PerlでSCSIデバイスの情報を知りたくてDLL呼び出しを書いたのですが、
my $SendCmd = new Win32::API('wnaspi32.dll', 'SendASPI32Command', 'P', 'N');
my $sBuff = "\x00" x 58;
my $nHA = $SendCmd->Call($sBuff);
としたら異常終了のダイアログが出てきます。
my $SendCmd = new Win32::API('wnaspi32.dll', 'SendASPI32Command', 'V', 'N');
としたら上記ダイアログは出てこずに終了するのですが、どうも引数が渡されていないっぽいです。
こういう場合DLL呼び出しができないと諦めるしかないんでしょうか?
0184デフォルトの名無しさん
2006/02/05(日) 01:18:28まず、Cから呼び出して正常に動作するかどうかが問題。
Perl の話はその後でしょう。
0185デフォルトの名無しさん
2006/02/05(日) 01:55:23ありがとうございます。
Cからの呼び出しはできます。
EXEをコールし、ファイルに結果を吐かせ、
それをPerlで読み込むということはできています。
回避策というか、これで一応はやろうと思ってることは達成できてるんですが。
でもあまりスマートでは無いのでPerlで直接DLLをコールしたいんですね。
0186デフォルトの名無しさん
2006/02/05(日) 03:54:47プログラミングは手段であって、目的じゃないぞ。
0187デフォルトの名無しさん
2006/02/05(日) 05:12:29諦めるのが手軽だけど、原因を特定できれば他の方法もとれるよ。
この場合は、WINAPI , PASCAL , C形式(STDCALL) の違いが原因なので、
・ラッパーDLLを使う
・Win32::APIのメンテナに頼み込む
あたりも選択肢に入る。
0188デフォルトの名無しさん
2006/02/05(日) 07:24:20おもしろそうな話なんで、もうちょっといろいろやってみてほしい。
0189デフォルトの名無しさん
2006/02/05(日) 08:09:46XSで書くってのは?
0190デフォルトの名無しさん
2006/02/05(日) 10:24:24ありがとうございます。
やっぱり呼び出し規約の違いですかね。
もう少し粘ってみます。
0192デフォルトの名無しさん
2006/02/05(日) 11:49:32或いは、bin2hex.exeを使用するとバイナリから以下のように変換できますので、このファイルを読んでPerlで0xとカンマを付加する方法をお教え下さい。
52 49 46 46 F8 FD 00 00 57 41 56 45 66 6D 74 20
10 00 00 00 01 00 01 00 A0 8C 00 00 40 19 01 00
これを最終的に
0x52,0x49,0x46,0x46,0xF8,0xFD,0x00,0x00,0x57,0x41,0x56,0x45,0x66,0x6D,0x74,0x20,
0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0xA0,0x8C,0x00,0x00,0x40,0x19,0x01,0x00
のように0xを付けて,で区切ったヘッダファイルにしたいのです。
ファイルサイズは1Mbyte程度です。
Perl v5.8.7 build 815 WinXP です。宜しくお願い致します。
0193デフォルトの名無しさん
2006/02/05(日) 11:52:531) 1行読み込む
2) スペースでsplitして配列に格納
3) 各要素を、頭に"0x"、お尻に"," を付けて出力
4) 次の行を読み込む
0194デフォルトの名無しさん
2006/02/05(日) 12:11:01sub hex2hextext($) {
my $result; my @line = split("\n", $_[0]);
for (0 .. $#line) { $result .= '0x' . join(',0x', split(" ", $line[$_])) . ($#line==$_?'':",\n"); }
return $result;
}
0195デフォルトの名無しさん
2006/02/05(日) 12:50:56bin2hex.exeなんかわざわざ使わなくてもふつうに16文字ずつ読みこんで
unpackすりゃよくね?
use strict;
open R,"test.dat";
open W,">hex.dat";
binmode(R); #winだからな
while(not eof(R)){
read(R,my $tmp,16);
my @line = ();
for (split //,$tmp){
push @line,'0x'.unpack("H2",$_);
}
print W join(',',@line),"\n";
}
0196192
2006/02/05(日) 13:42:13早速の回答ありがとうございます。m(__)m
bin2hex使わなくても出来るのですね!すばらしい!!感謝です。
0197デフォルトの名無しさん
2006/02/06(月) 01:35:14WindowsXP に ActivePerl 5.8.7 をインストールしたのち
GD をインストールできません。
準備は以下の通り
Cコンパイラとして、VisualC Toolkit をインストール
NMAKE.EXE を Microsoft からダウンロードしてパスの通ったファイルに入れる。
CYGWIN をインストール。
その他、tar.exe, gzip.exe を入れておき、Perlに事前に設定。
手順は以下の通り
1) Perl -MCPAN -e shell をコマンドプロンプトから入力
2) install GD を入力すると、2.30 のモジュールをダウンロードしてくる(これは正常)
ただし、途中で
' gdlib-config' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。
(なんだか怪しい雰囲気)
3) Where is libgd installed? に gdwin32 を展開後のパスを入力。
→ コンパイルエラーでnmake が停止。
gd-2.0.33 の展開後のパスを入力しても同様に
コンパイルエラーで nmake が停止。
他のモジュール IO, DBI, HTML はインストールできたのに、
GD はなかなか曲者です。
0198デフォルトの名無しさん
2006/02/06(月) 01:37:310199デフォルトの名無しさん
2006/02/06(月) 01:41:50そうですか。
で、ご質問は?
0200デフォルトの名無しさん
2006/02/06(月) 01:44:160201197
2006/02/06(月) 01:50:01質問を質問で返すなあーっ!!
疑問文には疑問文で答えろと学校で教えているのか!?
わたしが聞いているんだッ!
0202デフォルトの名無しさん
2006/02/06(月) 02:08:380203デフォルトの名無しさん
2006/02/06(月) 02:20:58> 質問を質問で返すなあーっ!!
嘘つけ。質問なんかしてないくせに。
0204デフォルトの名無しさん
2006/02/06(月) 02:47:240205デフォルトの名無しさん
2006/02/06(月) 04:42:150206デフォルトの名無しさん
2006/02/06(月) 06:34:210207デフォルトの名無しさん
2006/02/06(月) 07:40:38ttp://www.medianetjapan.com/2/town/internet_computer/anich/2chserver/999417085.html
0208Real197
2006/02/06(月) 09:34:01具体的には、GDのインストール方法が知りたいということです。
>>204
板違いの質問でしたか?
0209デフォルトの名無しさん
2006/02/06(月) 10:12:26>>208
ActivePerlなら自前でコンパイルするまでもなく
ppmを使ってコンパイル済みのものを貰ってきた方が楽
ppm install GD
0210デフォルトの名無しさん
2006/02/06(月) 11:34:20それじゃ回答者をいじめてやろう
1.33を入れてどうすんじゃ。質問者は2.3が欲しいんだけど
0211デフォルトの名無しさん
2006/02/06(月) 11:42:34rep add theoryx5 http://uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58
GD2.3あったよ
0212209
2006/02/06(月) 12:05:55スマソ先日Catalystを入れるのにTheoryx5を追加してあったから
ActiveStateに無いの気づかなかった。
次からはどこのリポジトリに入ってるのかちゃんと調べるよ('A` ;)
>>211 フォローthx
0213デフォルトの名無しさん
2006/02/06(月) 12:08:12それだけじゃ駄目だよん、インストールの前に rep up theory5 としなきゃ。
ppmは最新のモジュールを探してインストールしてくれない、まだ阿呆。
http://ppm.activestate.com/BuildStatus/5.8-G.html を見ると
ActiveStateにはGDはないみたいだからそれでOKかもね。
下のようなinstall.txtを用意して ppm --file install.txtとすると
perlをver upしたとき便利だ四。
--- install.txt
## repository
rep add theoryx5 http://theoryx5.uwinnipeg.ca/ppms/
rep add BdP http://www.bribes.org/perl/ppm/
##install
install GD
## UPGRADE in theorx5
rep off ActiveState Package Repository
rep off BdP
upgrade -install -precious *
rep del theoryx5
## UPGRADE in BdP
rep on BdP
upgrade -install -precious *
rep del BdP
rep on ActiveState Package Repository
---$
0214デフォルトの名無しさん
2006/02/06(月) 12:35:180215デフォルトの名無しさん
2006/02/06(月) 13:59:230216Real197 ◆xJZzeRrr.U
2006/02/06(月) 22:05:58ありがとうございます、
無事にGD と GD::Graph, GD::Text がインストールできました。
cgi-bin にパイチャートのスクリプトを措いて
<image src="hogehoge.cgi"> すると、もう・・・(´Д`;)ハアハア
で、/x11 のフォントを参照しているスクリプトが動かなかったけど、
これは Windows 上では諦めた方がいいのでしょうか?
それとも、まだ何かいい手があるのでしょうか?
GD::Text->font_path( "/usr/lib/X11/fonts/truetype/" );
$graph->set_title_font( "luximr", 16 );
$graph->set_legend_font( "luximr", 10 );
$graph->set_x_axis_font( "luximr", 9 );
$graph->set_x_label_font( "luximr", 11 );
$graph->set_y_axis_font( "luximr", 9 );
$graph->set_y_label_font( "luximr", 11 );
0217デフォルトの名無しさん
2006/02/06(月) 23:16:14Windows の場合もフォントパスを指定してやればいいんじゃないか?
手元に環境がないから試せないが、\Windows\Fonts とかなかったっけ。
0218Real197 ◆xJZzeRrr.U
2006/02/07(火) 21:53:21その通りですた。
GD::Text->font_path( "C:\\WINNT\\Fonts" );
$graph->set_title_font( "Courier New", 16 );
$graph->set_legend_font( "Courier New", 10 );
$graph->set_x_axis_font( "Courier New", 9 );
$graph->set_x_label_font( "Courier New", 11 );
$graph->set_y_axis_font( "Courier New", 9 );
$graph->set_y_label_font( "Courier New", 11 );
とかで、無事フォントが表示されますた。
日本語は utf8 に変換して
$graph->set_title_font( "msgothic.ttc", 16 );
でOKですた。
0219デフォルトの名無しさん
2006/02/07(火) 22:54:54思いの外いいできだったので他の人にも使ってもらおうと思い、配布用に
Windows 用のexeファイルに出来ないかと思いました。
会社の人にActiveParlをインストールさせる、というのだと多分めんどくさがって使ってくれません。
調べたところPARというのがある事がわかり、ppmを使ったインストールの解説ページも見つけ
自宅のマシンで試したところ無事exeファイルが作成出来ました。
で、会社のマシンにもインストールしようとしたのですが、どうやら会社では
ファイアーウォールか何かでppmが弾かれるようでインストールできません。
ppmを使わない場合は、どうやらnmakeとかgzipを用意しないといけないらしいとはわかったのですが
そこからどうすればいいのかが分かりません。
ネットで説明してるページも見つけたんですが、すでに分かってる人向けみたいな感じで
結局よく理解できませんでした。
ppmを使わずPARをインストールする方法を教えて頂けないでしょうか。
0220デフォルトの名無しさん
2006/02/07(火) 23:23:01漏れの経験上、せっかくそういうツールを作っても、たとえexeでもみんなメンドくさがって
使ってくれないよ。入れるのすらメンドいんだよ。
(しかもそのexeって、コマンドラインアプリでしょ? そりゃみんな使わないよ……)
CGIにしてボタン押すだけのとこまで用意して、社内メールでURLを送りつけたら使ってくれた。
っつーわけで社内鯖でCGIにすることをオススメする(それなら自動的にGUIになるしね)
0221デフォルトの名無しさん
2006/02/07(火) 23:42:48>>219
ppmのリポジトリからアーカイブを拾ってきて、ローカルでインストールできる。
ttp://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/
ここからPAR-0.90.zipと、依存している以下のパッケージもダウンロード。
PAR-Dist-0.07
Module-ScanDeps-0.54
Archive-Zip-1_11
で、これらのzipファイルの中身を展開して、
中に入っているppdファイルを依存関係の子からppmでinstall。
(又はリポジトリをローカルディレクトリになるよう設定してPARをinstallでもOK)
ppm install Module-ScanDeps.ppd
ppm install PAR-Dist.ppd
ppm install Archive-Zip.ppd
ppm install PAR.ppd
0222デフォルトの名無しさん
2006/02/07(火) 23:44:020223デフォルトの名無しさん
2006/02/08(水) 00:25:460224デフォルトの名無しさん
2006/02/08(水) 00:34:42そんなもんなテキストのまま配れ。
で、使いたいやつだけ Perl インストールして使えと書いておけ。
0225デフォルトの名無しさん
2006/02/08(水) 00:42:31sub aaa {
my ($list) = @_;
if (@$#list < 3) {
・・・↑ここどうやって書けばいいのでしょうか?
}
}
my @list;
push(@list, 'xxx');
&aaa(@list);
0226デフォルトの名無しさん
2006/02/08(水) 00:52:03imgフォルダーに送り、その画像を自動的に自分のHP上に
貼り付けるにはどうしたらよいか、知っている人教えてください。
0227デフォルトの名無しさん
2006/02/08(水) 00:58:03CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
0228デフォルトの名無しさん
2006/02/08(水) 01:06:22$#$list
後、それ参照になってないから
&aaa(\@list);
にするなり
sub aaa(\@) {...}
aaa(@list);
にするなり
>>226
ケータイメールと言うのが解らんが普通のE-MailならNet::POP3でも使ってメールを受け取って、
そのウェブサイトがリモートサーバにあるならNet::FTPあたりでアップロードするなり、
ローカルにあるなら直接書き換えるなりすれば良いんじゃね?
直接CGIと言うわけではないがWebProg板行った方が良いと思われ
0231デフォルトの名無しさん
2006/02/08(水) 10:18:33perl2exeでググれ
0232デフォルトの名無しさん
2006/02/08(水) 15:29:16CGIで使えそうだったらCGI化して自分のマシンにapache入れて公開してみれ。
ブラウザからならなんとか使ってくれるだろ。CGI化が無理だったら>>231
0233デフォルトの名無しさん
2006/02/08(水) 18:00:04>で、会社のマシンにもインストールしようとしたのですが、どうやら会社では
>ファイアーウォールか何かでppmが弾かれるようでインストールできません。
なら、ファイアーウォールか何かを管理しているシステム管理者がいるんだろ?
システム管理者に相談して物事を進めてゆくのが、組織の基本というものだろう。
0234デフォルトの名無しさん
2006/02/08(水) 18:05:57本当に Perl って使えないプログラムですね。
0235デフォルトの名無しさん
2006/02/08(水) 19:49:51そうだな。
かまけているの時間ももったいないから、
Perlのことは忘れてほか行こうぜ。
0237デフォルトの名無しさん
2006/02/08(水) 22:21:25それをいったらjavaなんてどうするんだおい。100Mくらいするインストーラ実行だぞ。
RubyなんてLinux標準インストールじゃないかもしれな(略
やっぱVBScript最強
0238デフォルトの名無しさん
2006/02/08(水) 23:01:110239デフォルトの名無しさん
2006/02/08(水) 23:09:520240デフォルトの名無しさん
2006/02/08(水) 23:09:580241デフォルトの名無しさん
2006/02/09(木) 02:09:59そんなウンコ構文使うくらいならJScriptにするよ。
0242デフォルトの名無しさん
2006/02/09(木) 10:21:45substr($strin, length($strin) - 3, 3)
という風にlength関数を使わない方法ってありまする?
0243デフォルトの名無しさん
2006/02/09(木) 10:39:410244デフォルトの名無しさん
2006/02/09(木) 10:41:590245デフォルトの名無しさん
2006/02/09(木) 11:08:18これできなかったっけ?
0246デフォルトの名無しさん
2006/02/09(木) 11:08:55ね
0247デフォルトの名無しさん
2006/02/09(木) 11:28:26A.pl、B.pm、C.pm、D.plとあって、全て同じディレクトリにおいています。
@INCには、Aの先頭で、use libで絶対パスを入れています。
AはBを「use B」しています。BはCを継承(use C かつ @ISA)しています。
BとCは、Dを「require 'D.pl'」しています。
この状態で、Aを./A.plで起動し、Bの関数をコールします。
Bはそのコールされた関数から、D内部の関数をコールしますが、見つからないと怒られます
しかし、Bが継承したCの関数をAからコール、または、B内部でCの関数をコールした場合
そのコールされたCの関数からは、D内部の関数がちゃんと見つかるようです
これはなぜなのでしょうか?
また、Bでの「require 'D.pl'」を「require './D.pl'」または
「require '/xxx/xxx/D.pl'」のように変更すると
BからもDの関数がみえるようです。
これも疑問です。
そもそも問題は関数が見えないことだったので
DをD.pmに変更し、BとCのrequireをuseに変えて
D内部でExpoterすることで対処しています。
問題は解決していますが?、出来れば上記の疑問を
解消するためのヒントなりをいただければと思います。
0248デフォルトの名無しさん
2006/02/09(木) 11:37:19その書き方でいいし、スクリプトレベルで陽に length() を呼ぶよりずっと速い。
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_substr_EXPR_OFFSET
>>247
関係ないが B.pm は標準モジュールに存在する。
0249デフォルトの名無しさん
2006/02/09(木) 11:47:20すみません。説明が足りませんでした。
正確には、A・B・C・Dはちゃんとした名前が
ついています。
関係あるかどうかはわかりませんが
Cから継承しているメソッドの中に
Bを生成するためのnewも定義しています
内容は単純にblessをするのみです。
0250デフォルトの名無しさん
2006/02/09(木) 12:39:08説明で書いたこととプログラムに書いてあることは食い違って
いることも多いので、現象が確認できる出来るだけコンパクトな
コードを書いて晒した方がいいと思われ。
よくわからんがnewを定義してるってことはpackageも使って
いるんだろうしその辺がどうなってるかわからないとなんとも
言えん。
0251デフォルトの名無しさん
2006/02/09(木) 12:46:24それ素晴らしいです><
ところでその二つは意味的にどうちがうんでしょうか??
0252デフォルトの名無しさん
2006/02/09(木) 13:01:31後から3バイト目から3バイト取り出す
0253デフォルトの名無しさん
2006/02/09(木) 13:06:36同じファイルを2回requireすると、2回目は無視される。理由はらくだ本参照。
0254デフォルトの名無しさん
2006/02/09(木) 13:10:29文字化けというかバイトごとにきられます
ご教授お願いします
0255デフォルトの名無しさん
2006/02/09(木) 13:56:561: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
0256デフォルトの名無しさん
2006/02/09(木) 14:00:49>>2-3
#!/usr/local/bin/perl -w
require 5.008001;
use strict;
my $str = "UTF-8の文字列";
utf8::decode($str); # UTF-8フラグを付ける
my @chr = split //, $str; # 文字単位で処理される
utf8::encode($_) for @chr; # UTF-8フラグを外す
print join '/', @chr;
__END__
0257デフォルトの名無しさん
2006/02/09(木) 15:02:07あ/い/う
$
0258257
2006/02/09(木) 15:04:57他の環境では同じ 5.8 でもエンコーディングとかクォートのしかたとか変えないと駄目かも。
0259デフォルトの名無しさん
2006/02/09(木) 16:24:20日本語の取り扱い全般について基礎を学ぶべきだろうな。
0260デフォルトの名無しさん
2006/02/09(木) 20:05:20foo, bar, zoo以外の半角英数という正規表現って
実現可能ですか?
0261デフォルトの名無しさん
2006/02/09(木) 20:09:30君が何を言っているのか、サッパリ分からない。
0262デフォルトの名無しさん
2006/02/09(木) 20:13:39こんな感じ?
/\A(?!foo|bar|zoo)[\w]+\z/
0263262
2006/02/09(木) 20:15:210264デフォルトの名無しさん
2006/02/09(木) 20:35:55これは?↓
/(?=^(?:(?!foo).)*$)(?=^(?:(?!bar).)*$)(?=^(?:(?!zoo).)*$)/s
0265デフォルトの名無しさん
2006/02/09(木) 21:34:350266デフォルトの名無しさん
2006/02/09(木) 21:42:080267デフォルトの名無しさん
2006/02/09(木) 23:06:22スレッドで共有しないCopy on Writeなデータという認識であってる?
0268デフォルトの名無しさん
2006/02/09(木) 23:34:10>>253
レスありがとうございます。
253さんのヒント(答え)でわかりました。
「同じファイルを2回requireすると、2回目は無視される」というのは
読んでいたのですが、私の理解が足らなかったようです。
私が247で書いた例でいくと
Cが最初にコンパイルされて、Dを取り込む
Bはその後にコンパイルされるが、Dは既に取り込んであるので
取り込まれない。その結果、CからはDがみえるが
Bからはみえないと。
Bでrequire './D.pl'に変えた場合にDがみえたのは
Cのrequire 'D.pl'の「D.pl」とBのrequire './D.pl'の「./D.pl」は
perl的には名前が違うから、同じファイルとは扱われず
Bのrequireでも、「D.pl」が取り込まれるからなんですね。
すっきりしました。
どうもありがとうございました。
0269デフォルトの名無しさん
2006/02/09(木) 23:54:11ローカル内の作業で画面に表示された内容(ログ)に従って
自動的にコマンドを実行してくれる方法、ライブラリがありましたら、
お教え頂けないでしょうか
宜しくお願いします
0270デフォルトの名無しさん
2006/02/09(木) 23:56:39例えば、gdb を動かしていて
最初の
(gdb)
という画面が表示されたら、
r a.txt
というようにコマンドを入力してくれる、といったものです
ご教授のほどよろしくお願いいたします
0271デフォルトの名無しさん
2006/02/10(金) 00:04:02>Cが最初にコンパイルされて、Dを取り込む
>Bはその後にコンパイルされるが、Dは既に取り込んであるので
>取り込まれない。その結果、CからはDがみえるが
>Bからはみえないと。
ちょっと違うな。Dに独立した名前空間を与えていないから、
最初にrequire したときに、Cと同じ名前空間が
与えられる。だから、別の名前空間を持つBからは、
そのままでは読み出せない、つーこと。
0272デフォルトの名無しさん
2006/02/10(金) 00:08:06なるほど。
そういうことなんですね。
ありがとうございます。
0273デフォルトの名無しさん
2006/02/10(金) 00:55:43つ Expect
0274デフォルトの名無しさん
2006/02/10(金) 11:56:19ソースをすべてUTF-8で保存して、use utf8 プラグマを付けているのですが、
use utf8;
my $dir = 2バイト文字入りのディレクトリ名を代入;
while (glob($dir\\*)) {
これだとマルチバイトのディレクトリ名を見つけてくれないのですが、
どうしたらよいのでしょうか?
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html#encode
ここを読むとEncodeとは一緒に使うべきではないような気がしますし
いまだにJCodeしかないのでしょうか?
ディレクトリ名に2バイトを使うなってのは無しの方向でよろしくお願いします・・・
0275274
2006/02/10(金) 12:01:15解決しました。
0276デフォルトの名無しさん
2006/02/10(金) 13:38:54どうしたら [ 付きでも成功できるでしょうか?(Win2000 Perl5.8.7)
$dir = "c:\[test]";
if (-d $s) {
print "exists \n"; # ここには来る
while (glob("$s\\*")) {
print "$_\n"; # ここにはこない
}
}
0277276
2006/02/10(金) 13:41:030278276
2006/02/10(金) 13:43:05$s = "c:\\[test]";
です。
0279デフォルトの名無しさん
2006/02/10(金) 14:19:150280ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/10(金) 14:44:24$dir =~ s/\[/\\[/;
$dir =~ s/\]/\\]/;
print join(', ', glob("$dir/*")) . "\n";
みたいにエスケープしてやれば大丈夫なんだけど、スマートな方法は
思い付かないな。glob_escape() とかあればいいんだが…。
0281デフォルトの名無しさん
2006/02/10(金) 15:05:18でもダメなの?
0282デフォルトの名無しさん
2006/02/10(金) 15:09:170283デフォルトの名無しさん
2006/02/10(金) 15:12:030284デフォルトの名無しさん
2006/02/10(金) 15:14:180285デフォルトの名無しさん
2006/02/10(金) 15:19:29これは?
0286276
2006/02/10(金) 15:22:38今回の処理ではディレクトリ名に必ず [ が入っているので
先にchdirするかopendirを使う事で回避する事にしようと思います。
0287276
2006/02/10(金) 15:29:32while ($_ = bsd_glob($s, GLOB_QUOTE)) {
print "$_\n"
}
なぜか延々と同じファイルが表示されます
bsd_glob は DOS形式のパスだとうまくいかない?
0288デフォルトの名無しさん
2006/02/10(金) 16:02:55それなら"e:/[test]/*"でいけそうだけど。
0289デフォルトの名無しさん
2006/02/10(金) 16:06:09lib/File/Glob.pm の191行目以降に目を通せ。
0290ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/10(金) 16:12:21$ wc -l `locate /Glob.pm`
190 /usr/lib/perl/5.8.4/File/Glob.pm
…(゚Д゚;)?
>>276
ガラッと話は変わるが、File::Find じゃ駄目かね。
opendir() で構わないなら別にいいが。
0291デフォルトの名無しさん
2006/02/10(金) 16:21:060292デフォルトの名無しさん
2006/02/10(金) 16:56:570293デフォルトの名無しさん
2006/02/10(金) 20:01:46@files = read_dir('/foo/bar')
だぜ!!
0294デフォルトの名無しさん
2006/02/10(金) 20:22:470295デフォルトの名無しさん
2006/02/10(金) 20:34:51志村ー改行、改行
@f = map { chomp; $_ } `ls`;
0296デフォルトの名無しさん
2006/02/10(金) 20:44:320297デフォルトの名無しさん
2006/02/10(金) 21:57:53@f = `ls`;
chomp(@f);
0298デフォルトの名無しさん
2006/02/10(金) 21:58:29@f=`ls.exe`;
chomp(@f);
0299デフォルトの名無しさん
2006/02/10(金) 23:33:04find(\&boobar, '.');
↑のように開始パスを相対パスで渡すと、サブディレクトリに入ったときに強制終了するんだよなぁ。
そんなわけで、use Cwd 'abs_path';のabs_path()で絶対パスに変換するなどしてから渡す必要がある。
0300デフォルトの名無しさん
2006/02/10(金) 23:39:09>273さん、ありがとうございます
ローカルPC内の作業を想定しておりますので
expectでは処理できないと考えております
expectはリモートホストの処理に使用するもので、
telnet, tip等で接続する必要があるという認識でおりますが、
expectはローカルPC内の作業でも使用できるのでしょうか
質問攻めで申し訳ありませんが、
ご教授願いたく思います
0301デフォルトの名無しさん
2006/02/10(金) 23:55:50対話的なプログラムなら何でも使えるよ。
0302デフォルトの名無しさん
2006/02/11(土) 00:01:01> expectはリモートホストの処理に使用するもので、
> telnet, tip等で接続する必要があるという認識でおりますが、
おまえ、馬鹿だろ。
> expectはローカルPC内の作業でも使用できるのでしょうか
はい。
0303デフォルトの名無しさん
2006/02/11(土) 00:30:32どうもありがとうございます
早速、webで調べつつ作成しますー
0304デフォルトの名無しさん
2006/02/11(土) 06:38:06モジュールでもないのだろうか? 需要はありそうな気がするのだが。
0305デフォルトの名無しさん
2006/02/11(土) 07:39:320306デフォルトの名無しさん
2006/02/11(土) 08:12:36所詮は匿名掲示板だから字引きがわりには使えないってことか。
>>304-305みたいな浦島太郎みたいな書き込み見るとつい思ってしまう。
0307浦島太郎
2006/02/11(土) 08:15:590308デフォルトの名無しさん
2006/02/11(土) 11:06:46直リンクされたことによって消滅するアップローダは多いからな
perl で書かれたものキボン
0309デフォルトの名無しさん
2006/02/11(土) 11:20:060310デフォルトの名無しさん
2006/02/11(土) 11:31:580311デフォルトの名無しさん
2006/02/11(土) 11:33:160312デフォルトの名無しさん
2006/02/11(土) 12:46:11痛い奴だなwwww
0313デフォルトの名無しさん
2006/02/11(土) 12:47:270314ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/11(土) 13:38:58再現しない。abs_path() も必要ないな。環境依存のバグかも。
>>313
Referer でもいいけど、セッションを発行するのはどうだろう。
どっちにしろ、WebProg 行きのネタな気がするが。
0315デフォルトの名無しさん
2006/02/11(土) 15:21:250316デフォルトの名無しさん
2006/02/11(土) 15:34:48cygwinにてexpectを使った自動入力処理を作成しております
下記のように gdb を使って a.exe を動かす処理を作り、
r を入力するところまでは出来たのですが、動作してくれません
単にコンソールに r を表示しているだけのような感じがします
(出力先の設定、もしくはIO Tty,Pty以外のIO関連のライブラリが必要なのでしょうか)
#!/usr/bin/perl
use Expect;
$exefile = "gdb ./a.exe";
$command=Expect->spawn($exefile);
$command->expect(5,'(gdb) ');
sleep(1);
print "r\n";
< 識者の皆様 >
再三の初歩的な質問かもしれませんが、
ご教授のほど宜しくお願いいたします
もちろん私自身でも調べます
0317デフォルトの名無しさん
2006/02/11(土) 15:37:38再発明してるゆとりなんて無いだろうなw
0318デフォルトの名無しさん
2006/02/11(土) 15:51:16> 単にコンソールに r を表示しているだけのような感じがします
どう見ても単に端末にrを表示しているだけです。
本当にありがとうございました。
0319デフォルトの名無しさん
2006/02/11(土) 16:06:210320デフォルトの名無しさん
2006/02/11(土) 16:09:56>319さん
ご確認ありがとうございます
>318
確かに単に表示しているだけのようです
試しにですると実行してくれました
#!/usr/bin/expect --
set timeout -1
spawn gdb ./a.exe
expect "(gdb) "
send "b main\n"
expect "(gdb) "
send "r\n"
>319
はい
0321デフォルトの名無しさん
2006/02/11(土) 16:45:330322デフォルトの名無しさん
2006/02/11(土) 17:19:36print は $command に対してしなきゃ。
$command->print("r\n");
0323デフォルトの名無しさん
2006/02/11(土) 17:25:450324デフォルトの名無しさん
2006/02/11(土) 17:41:28もうこの質問への回答は十分だろ。スレを私物化しないでくれ。
0326デフォルトの名無しさん
2006/02/11(土) 19:31:43Cygwin の Perl なら Expect がそのまま使えるよ。
0327デフォルトの名無しさん
2006/02/11(土) 21:22:51どう説明したらいいのかわからないので申し訳ないです。。
0328デフォルトの名無しさん
2006/02/11(土) 21:26:050329デフォルトの名無しさん
2006/02/11(土) 21:29:45ほんとありがとうございます!
0330デフォルトの名無しさん
2006/02/11(土) 21:55:44>321さん、ありがとうございます
皆様のおかげで、一応動作するようになりました
#!/usr/bin/perl
use Expect;
$exefile = "gdb ./a.exe";
$command=Expect->spawn($exefile);
#$command->log_stdout(0);
$command->expect(5,'(gdb) ');
print $command "b main\n";
$command->expect(5,'(gdb) ');
print $command "r\n";
$command->expect(5,'(gdb) ');
print $command "q\n";
$command->expect(5,'The program is running. Exit anyway? (y or n)');
print $command "y\n";
それでは失礼します
0331デフォルトの名無しさん
2006/02/11(土) 23:02:46……これはテストなんだよな?
本当はバッチモードで対応できない処理をやるんだよな?
0332デフォルトの名無しさん
2006/02/12(日) 00:44:48今、「バッチモード」という語句を初めて耳にしましたので
少し調べてみましたが、gdbの場合.gdbinit, gdb.iniへ記述といったように、
ファイルに処理を書き込んでおくというものでしょうか?
バッチモードの意味がわかっておらず申し訳ないです
今回のgdbはテスト用です
しかし、.gdbinit、gdb.iniでは"時間待ち”が出来ないと思っておりました
0333デフォルトの名無しさん
2006/02/12(日) 00:45:54perlから話が逸れますので、無視してください
失礼しました
0334デフォルトの名無しさん
2006/02/12(日) 06:06:40htacessを使用しなくっても、リファラでチェックすることで、直リンクを防止できないか?
0335デフォルトの名無しさん
2006/02/12(日) 07:50:220336デフォルトの名無しさん
2006/02/12(日) 10:20:090337デフォルトの名無しさん
2006/02/12(日) 11:12:450338デフォルトの名無しさん
2006/02/12(日) 11:18:42セッションを独自実装しちまうコーディングについて話せばおk。
リファラは環境変数読むだけだからダメポ。
0339デフォルトの名無しさん
2006/02/12(日) 12:20:290340デフォルトの名無しさん
2006/02/12(日) 13:57:51大半の人はふつーにアクセスするからほとんど防げるんじゃないか?
それとも何か問題あるのか? IE だとリファラちゃんと返さないとか?
0341デフォルトの名無しさん
2006/02/12(日) 14:14:11>>338 は >>337 に答える形で、「CGI::Session を置き換えるような実装についての話題ならテーマとして可」という話をしている。
今回の問題に対する解としてのリファラチェックという手法を直接に否定しているわけじゃない。
どちらにしろ今回のような件でリファラを使う気にはならんけれど、そーゆー話は WebProg 池、と。
0342勝手にリファラゲロら無い様にするソフトも結構あるよ><NISとか。
2006/02/12(日) 19:00:160343だからどうした
2006/02/12(日) 19:38:350344デフォルトの名無しさん
2006/02/12(日) 20:53:19普通に辿ってきているにも関わらず
思うように入ってないことがあるんだよね。
これで何回か苦情が来た。
なので、うちは必ずセッション使うようにしてる。
0345デフォルトの名無しさん
2006/02/12(日) 20:54:25文章の基本を勉強してこい
0346デフォルトの名無しさん
2006/02/12(日) 21:50:23文末には句点を打つことだな。
0347デフォルトの名無しさん
2006/02/12(日) 22:24:48Windows XPにてActive perl 5.8.7.815を使っています。
PerlにText::CSV_XSというモジュールをインストールしたくて
さっきはじめてモジュールのインストールを行いました。
perl -MCPAN -e shellとやって適当にEnterを叩いて設定したのち
install Text::CSV_XSを実行しました。初期設定がおかしかったのか
Test実行で失敗していたようですが、インストールはうまくいったような
感じでした。しかし、Perlプログラムでuse Text::CSV_XSを実行すると
Can't locate Text/CSV_XS.pm in @INC
というエラーが出てしまいます。
@INCにパスを追加しなければならないのでしょうか?
それともインストール失敗しているのでしょうか?
c:\.cpanというフォルダができていて、そこにText::CSV_XS関連の
ファイルは作成されたようですが・・・
0349デフォルトの名無しさん
2006/02/12(日) 22:32:11スタートメニューのプログラムから、
「ActiveState ActivePerl 5.8」→「Perl Package Manager」を実行。
開いたppmのコンソールで
install Text-CSV_XS
0350デフォルトの名無しさん
2006/02/12(日) 22:49:24Mixiではそれが対策されている王ですが、どのようにすればよいでしょうか。
長文になる場合はサイトUROでもいいのでよろしくお願いします。
0352デフォルトの名無しさん
2006/02/12(日) 23:11:27KENTの掲示板ならKENTのサポートに頼めばいいがな。
0353デフォルトの名無しさん
2006/02/12(日) 23:17:34いまKENT以外でも試してみましたが、どれも文字が#9999のように表示されてしまいす。
よろしければお願いいたします。
0354デフォルトの名無しさん
2006/02/12(日) 23:23:53仕事で必要ならコンサルタントを雇いなさい。
0355デフォルトの名無しさん
2006/02/12(日) 23:27:26ニートですから、コンサルタントを雇う金がありません。
よろしければお願いいたします。
0356デフォルトの名無しさん
2006/02/12(日) 23:31:080357デフォルトの名無しさん
2006/02/12(日) 23:54:320358デフォルトの名無しさん
2006/02/13(月) 00:14:27まあ、PerlでもRubyでもJavaサーブレットでできた掲示板でもそうなるだろうから、
WebProg池
0359デフォルトの名無しさん
2006/02/13(月) 00:30:26いや、記号を組み合わせた顔文字
&を&に置き換えていることが原因だったから置き換えた。
=~ s/&#//g;
0360デフォルトの名無しさん
2006/02/13(月) 00:31:000361デフォルトの名無しさん
2006/02/13(月) 00:33:19=~ s/&amp;井/&井/g;
0362デフォルトの名無しさん
2006/02/13(月) 01:22:42356と357は氏ね
0363デフォルトの名無しさん
2006/02/13(月) 05:30:31tieは問題ないようなのですが。
panic: sv_setpvn called with negative strlen
というメッセージを吐きます
データベースを作った環境が5.005_03 + mod_perlで
読もうとしている環境が5.8.2なのですが
データに互換性がないのでしょうか?
0364デフォルトの名無しさん
2006/02/13(月) 10:01:57ご愁傷様
0365デフォルトの名無しさん
2006/02/13(月) 11:35:55こういう質問の時は関係ないと思っても一応OS書いた方がいいよ。
な、わけで直接の回答になるかどうかは知らんが一応コメント5.005_03当時のSDBM_FileのコードはUnixの
> notes of lseek(2)
> Seeking far beyond the end of a file, then writing, may
> create a gap or "hole", which occupies no physical space and
> reads as zeros.
動作を前提に書かれていました。これが保障されていないOSでのSDBM_Fileにはバグがあったのです。
また、ソースをみると昔、5.005_03当時にはなかった関数が新たに書き加えられたりしてます。
今回の現象がバグかどうかは分らないが、データに互換性がない可能性もあります。
5.005_03なSDBM_Fileの適当に名前を変えてソースをコンパイルして、過去のデーラベースを読み込める
ようにして変換するのが現実的だと思います。
0366デフォルトの名無しさん
2006/02/13(月) 13:37:50ありがとうございます
何らかの方法で変換することを考えます
0367デフォルトの名無しさん
2006/02/13(月) 17:56:31質問なのですが、
特定の関数の中の変数の一覧を取得することってできないでしょうか?
sub hoge {
my $a;
my $b;
my $c;
fuga();
}
sub fuga {
# ここで、呼び出し元のhoge()内に変数 $a $b $cを参照したい
}
普通に引数で渡したり、グローバル、オブジェクト等使え と思うかもしれませんが、
fuga();
だけの呼び出しで実現したいのです。
%{パッケージ名::}で関数一覧は取得できるので、似たような方法でできる気がするのですが・・・
0368デフォルトの名無しさん
2006/02/13(月) 18:09:430369デフォルトの名無しさん
2006/02/13(月) 18:29:100370デフォルトの名無しさん
2006/02/13(月) 18:52:41何でまたそんな変態的なことがしたいのですか?:-)
http://search.cpan.org/~robin/PadWalker-1.0/PadWalker.pm
どうしても、絶対にこれしか方法が無いというのでないなら
構造を考え直すことをお勧めする。
0371デフォルトの名無しさん
2006/02/13(月) 18:55:22思いません。
0372デフォルトの名無しさん
2006/02/13(月) 19:00:080373デフォルトの名無しさん
2006/02/13(月) 19:00:10こういうことかな
0374デフォルトの名無しさん
2006/02/13(月) 19:07:59まさにそんな感じです。
常駐型のアプリケーションを作っているのですが、
毎回再起動するのが非常に面倒なので、
sub fileeval {
open(FILE, $_[0]);
my $data = <FILE>;
eval($data);
print "error : $@" if($@);
}
といった変数を作り、
sub hoge {
my $a;
.... #コード
fileeval('hogehoge.pl');
.... #コード
}
というふうに使いたいのですが
当然fileevalの中からは関数hogeのスコープじゃないので、
$aが見えないのです。
0375デフォルトの名無しさん
2006/02/13(月) 19:14:27例えば、キーワードを "定食","弁当"...と仮定して、入力ファイル内の
[うなぎ]定食 [焼肉]ランチ [さば]弁当
をリストアップしたいのです。素人考えでしょうが、以下のように書きました。
#! usr/locsl/bin/per
@keyword = ("定食","弁当","ランチ","セット"); #キーワードのリストを配列に。
while (<>) {
$sentence = $_; #入力の各行を、変数$sentenceに。
if ($sentence =~ /\[[^\[]*?\]/ ) { #ブラケットがある行を、正規表現で探す(一行に複数あるかもしれない)。
foreach (@keyword) { #キーワードをひとつずつ当てはめ。
if ($sentence =~ /(\[[^\[]*?\]$keyword)/g) { #ブラケット+キーワード
ptint "&$\n"; # &$で、前の行で取り出した行を印刷。
}}}
どうしても ]定食 ]ランチ と、後部ブラケット以下しか、表示されません。print $1にしても同じです。
自分でも考えてみたつもりです。どなたか、教えてください。
0376デフォルトの名無しさん
NGNG自分でそれを引っかけてるからだろ。
0377デフォルトの名無しさん
2006/02/13(月) 19:26:12ptintとか&$とか...コピペ汁
my @keyword = qw(定食 弁当 ランチ セット);
my $keywords_regex = '(?:' . join('|', map { "\Q$_\E" } @keyword) . ')';
while (my $sentence = <>) {
while ($sentence =~ /\[.*?\]$keywords_regex/g) { print "$&\n" }
}
0378デフォルトの名無しさん
2006/02/13(月) 19:32:01sub fileeval {
my ($file, $a, $b, $c) = @_;
open(FILE, $file);
my $data = <FILE>;
eval($data);
print "error : $@" if($@);
}
sub hoge {
my $a;
.... #コード
fileeval('hogehoge.pl', $a, $b, $c);
.... #コード
}
じゃだめなん?
0379デフォルトの名無しさん
2006/02/13(月) 19:32:06それしたから2行目の正規表現を
/(\[[^\[\]]*?\]$keyword)/g
にすればうまく行くんじゃね?
0380デフォルトの名無しさん
2006/02/13(月) 19:35:17その場合は、もともと sub hogeにある変数を全てfileevalに渡さないとダメですよね?
fileeval関数自体はいろんなところではさむので、どんな変数があるかわからないのです。
sub fileeval {
my $data = <FILE>;
return $data;
}
sub hoge {
eval(fileeval('hogehoge.pl'));
print "error : $@" if($@);
}
って感じにすれば実現できるんですが、fileevalの呼び出しだけで済ませたいなぁ と・・・・
0381デフォルトの名無しさん
2006/02/13(月) 19:38:59レス有難うございました!! 早速試してみます。
0382デフォルトの名無しさん
2006/02/13(月) 19:40:310383デフォルトの名無しさん
2006/02/13(月) 21:11:46設計からおかしい気もするけど、
ハッシュで、>>373じゃだめなん?
0384デフォルトの名無しさん
2006/02/13(月) 21:13:010385デフォルトの名無しさん
2006/02/13(月) 21:48:02そういう構造にするならstrict varsは捨ててダイナミックスコープ変数にするのも手。
というかスコープ外のレキシカル変数に無理やりアクセスするくらいならこっちの方がよっぽどマシだと思う。
sub hoge {
no strict 'vars'
local $a;
fileeval('hogehoge.pl');
}
myとlocalの違いは適当にググっとくれ
本当にデバッガのように呼び出し元に手を加えられないというケースなら
>>370のPadWalkerのようなものもあるけどさ…
0386デフォルトの名無しさん
2006/02/13(月) 22:40:100387デフォルトの名無しさん
2006/02/13(月) 22:50:23>>377 さんの2行目、
my $keywords_regex = '(?:' . join('|', map { "\Q$_\E" } @keyword) . ')';
変数my $keywords_regexには、具体的に何を入れてるのでしょうか?
どうして私のチョンボ.perl >>375 の if ($sentence =~ /(\[[^\[\]]*?\]$keyword)/g) で
grepして、$&で引っこ抜けないのでしょうか?根本的な誤解があるように思えてなりません。
お願いします。お時間あれば、初心者の私に教えてください。
0388デフォルトの名無しさん
2006/02/13(月) 22:57:08勉強する気があるのかないのか、困った子ですね。
0389デフォルトの名無しさん
2006/02/13(月) 23:08:43「初めてのPerl」は、スミからスミまでもう一度読み返しました。
とりあえず、どこかで膨大な勘違いがあると思うのです。
foreachで、$keywordに@keywordをひとつずつ入れる、それに正規表現の
ブラケット \[[^\[\]]*?\] (←でいいのですよね?)をjoinし、カッコ内を$&で
$sentenceに挿入....どこが、間違っているのか...ヒントだけでも教えてください。
0390デフォルトの名無しさん
2006/02/13(月) 23:22:550391デフォルトの名無しさん
2006/02/13(月) 23:39:23もう、何度も書き直してるのにこのザマです。閉じブラケット以降しか拾ってくれません。
...確かに、他人に聞くようなレヴェルじゃないですよね。
貴重なお時間、ありがとうございました。もう一度、自分で調べてみます。
0392デフォルトの名無しさん
2006/02/13(月) 23:39:43Perlで作ったおみくじCGIをサイトに置いたんですが
わたしのサイトに来てくださる人の携帯(DoCoMo)では動作しないって言われました
それでわたしも携帯で動作を確認するとやっぱり動きませんでした
PCでは問題なく動作するのですが携帯向けには何かしなければならないのでしょうか?
>>2-3で紹介されているサイト様も見てみたんですが書いてありません
詰まってしまいました
どなたか原因が分かりますでしょうか?
0393デフォルトの名無しさん
2006/02/13(月) 23:42:33そのURL教えて。
0394デフォルトの名無しさん
2006/02/14(火) 00:07:45ところが$keywords_regexはエスケープしてるからマルチバイト部分が
ぐちゃぐちゃでとても一目でわかるとは思えないものなんだよねこれが。
>>391
そもそも君の提示したソースだとこっちじゃ、ぜんぜん違うバグが出るか、
それらを修正しても>>375の問題は再現しないんだが...。
とりあえずgオプションを使いながら中の正規表現を動的に変えるのは間違ってる。
$keywords_regexには列挙されたキーワードのすべてにマッチする正規表現が入る。
map { "\Q$_\E" } @keywordでキーワードをエスケープ([や\みたいなメタキャラクタは入っていると困るため)
join '|',で正規表現の「選択」つまり複数にマッチするように並べる。
で、それらを(?:)で括ってグルーピングしている。
つまりエスケープを除くとこういうこと(?:定食|弁当|ランチ|セット)
>>392
>>1 CGIはWebProg板行き
0395デフォルトの名無しさん
2006/02/14(火) 00:09:03ttp://www.nttdocomo.co.jp/p_s/imode/make/tag/index.html
ここらもチェック
0397デフォルトの名無しさん
2006/02/14(火) 00:14:43本当に、ありがとうございます!!!!!
勉強させていただきました。
0398デフォルトの名無しさん
2006/02/14(火) 00:31:55ホントデバッグというか、開発中専用の機能なので、できるだけ本体のコードは触りたくないんですよね。
開発中は鯖立てっぱなしにして、hogehoge.plに実装していく。
↓
出来上がったらfileeval('hogehoge.pl')の部分にhogehoge.plを貼り付ける。
って感じで使いたいのです。
PodWalkerは・・・ fileevalを呼び出したスコープにどんな変数があるかわからないとダメっぽいですね・・
0399デフォルトの名無しさん
2006/02/14(火) 00:49:46そういう目的・・・なら許せるかもしれない。
> PodWalkerは・・・ fileevalを呼び出したスコープにどんな変数があるかわからないとダメっぽいですね・・
Lexical::Utilとかの中から一覧を得られるやつを選んで探してきたつもりですが(´・ω・`)
use PadWalker qw(peek_my);
use Data::Dumper;
sub hoge {
my $foo = "HOGE";
print Dumper peek_my(1);
}
sub fuga {
my $foo = "FUGA";
my %bar = (a => 1);
hoge();
}
my $foo = "MAIN";
fuga();
0400デフォルトの名無しさん
2006/02/14(火) 01:29:58う、うおおおお そういうことか!!!
ありがとうございます!!!
やってみます!!!
0401デフォルトの名無しさん
2006/02/14(火) 02:24:42キーを変数名としてeval使って現在のスコープにとりこもうと思ったんですが・・・
evalの中ってスコープかかってるんですね_no
0402デフォルトの名無しさん
2006/02/14(火) 03:38:35my $valiable_code;
foreach my $key (keys(%{$h})) {
$valiable_code .= "my $key = \$h->{'$key'};\n";
}
eval($valiable_code . $from_file_code);
といった感じで実現できました!
皆々様ありがとうございました!!!
0403デフォルトの名無しさん
2006/02/14(火) 04:22:41orzがひっくり返っただけだと思ったw
0404デフォルトの名無しさん
2006/02/14(火) 07:25:19重箱の隅で大変恐縮なのだけれども。
variable …。
0405デフォルトの名無しさん
2006/02/14(火) 08:11:13∧||∧
0406デフォルトの名無しさん
2006/02/14(火) 09:34:570407デフォルトの名無しさん
2006/02/14(火) 09:47:540408デフォルトの名無しさん
2006/02/14(火) 12:03:260409デフォルトの名無しさん
2006/02/14(火) 12:52:37が偽になって
"舞同" =~ "蒼"
が真になってしまうんですけど
こんな不具合を回避する方法って、ありますでしょか?
0410デフォルトの名無しさん
2006/02/14(火) 13:07:210411デフォルトの名無しさん
2006/02/14(火) 13:18:36実際は左辺の部分を文字列にしてるんです。
$a = "いろはにほへと舞同ちりぬるを";
if($a =~ /蒼/){
print "真\n";
}
else{
print "偽\n";
}
具体的には、こんな感じです。
0412デフォルトの名無しさん
2006/02/14(火) 13:19:440413デフォルトの名無しさん
2006/02/14(火) 13:33:03これは、便利そうですね。早速試してみます。
ありがとうございました。
0414デフォルトの名無しさん
2006/02/14(火) 13:47:060415デフォルトの名無しさん
2006/02/14(火) 13:48:220416デフォルトの名無しさん
2006/02/14(火) 13:54:23とりあえず今はこんなクラスを作って対応してみましたが
sub new
{
open(OutHandle, ">$fileame") || die $!;
my $self = {
Handle => *OutHandle,
};
}
sub print($)
{
print "$s";
my $fh = $self->{'Handle'};
print $fh "$s";
}
my $prn = new DebugPrint("debug.log");
$prn->print("aaa");
これだと他のサブルーチンを使うときに渡さないといけないので不便です。
何かもっと良い方法がありましたら教えてください。(WinXP Perl 5.8.7)
0417デフォルトの名無しさん
2006/02/14(火) 14:07:39つIO::Tee
つselect
0419デフォルトの名無しさん
2006/02/14(火) 15:58:13そのスクリプトの置いてあるパスの取得はどうやってできますか?
カレントフォルダのパスはgetcwdで取得できるんだけど…
0420デフォルトの名無しさん
2006/02/14(火) 16:02:13jperl使えやw
0421デフォルトの名無しさん
2006/02/14(火) 16:11:52FindBin とか。
0422デフォルトの名無しさん
2006/02/14(火) 16:59:440423デフォルトの名無しさん
2006/02/14(火) 17:02:00前者は quotemeta
後者は Encode や encoding で回避できる。
前者の補足
(や)はメタ文字なので、(や)自身を表すにはクォートする必要がある。
"ヽ\(・∀・\)/" で充分だが、 quotemeta "ヽ(・∀・)/" だとクォート忘れが無いし、
実行時にならないとパターンが分らないときに楽が出来る。
パターンが\Eを含まない事が保障されているならば、"\Qヽ(・∀・)/\E" も楽。
後者の補足
Perlは1文字1バイトを想定するので、(sjisの)"舞同" , "蒼" は \x95\x91\x93\x9f の
4文字と \x91\x93 の2文字として扱い、マッチが成立する。
(iso2022-jp,euc-jp,utf-8/16/32では、"舞同"は"蒼"にマッチしない)
Encodeやencodingを使うと "舞同" を2文字,"蒼"を1文字として扱うようになるので、
多バイト文字の途中からのマッチ成立は発生しなくなる。
0424デフォルトの名無しさん
2006/02/14(火) 17:55:49日本語の取り扱いについて質問する前にここを熟読すること
http://www.namazu.org/%7Etsuchiya/perl/perl-5.8.html
0425デフォルトの名無しさん
2006/02/14(火) 18:21:14utf-8の文字の置換がうまく出来ません。
当方はja_JP.UTF-8なLinux環境でPerl5.8.5です。
最終的にやりたいことは、
いわゆる”にょろ”とか”から”と呼ばれる、あの文字がLinux上で二種類あるので、
一方に置換したいと思っています。
文字化けする可能性大ですが、一応その二種類を書いておきます。
Source: 〜
Dest: 〜
ただ、今のところ、他の特別じゃないnon-asciiな文字の置換さえ、おこなえていません。
ですから、とにかく、utf-8文字の置換を教えていただければありがたいです。
ソースをutf-8で書いて、
=~ s/Source/Dest/g;
とかしても全くヒットしません。
use utf8とか書いても同じです。
初歩的な質問かもしれませんがよろしくお願い致します。
0426409
2006/02/14(火) 18:21:16詳しい解説ありがとうございます。
両方とも、テンプレサイトに書いてあったんですね。
俺みたいなテンプレサイト流し読みしかしないアホには
一文入れてもらったほうが良いかもしれませんorz
0427デフォルトの名無しさん
2006/02/14(火) 18:32:27tieをつかえ
http://www.kt.rim.or.jp/~kbk/perl5.005/perltie.html#Tying_FileHandles
0428デフォルトの名無しさん
2006/02/14(火) 19:11:58このスレを utf で検索して目を通せ。
過去ログ・テンプレを見ない馬鹿は、ホント死ねばいいのにと思う。
0429デフォルトの名無しさん
2006/02/14(火) 19:20:300430デフォルトの名無しさん
2006/02/14(火) 19:25:10その二種類のチルダについてはよく知らないのだけど
http://ja.wikipedia.org/wiki/Unicode
のWAVE DASH - FULLWIDTH TILDE問題のことでいいのかな。
まさかそのスクリプトを書いたエディタが二つを同じものに変えてたりしないだろうね…
それが原因なら、対象の文字列にutf8::decodeを使うなりPerlIOレイヤを使うなりして
utf8フラグを立てて(このあたりはテンプレの[Perl5.8Unicodeメモ]参照)
tr/\x{FF5E}/\x{301C}/
とでもやれば行けるはず。
0431デフォルトの名無しさん
2006/02/14(火) 19:54:43どちら様もありがとうございます。
私が悪いんです。あまりに久しぶりのPerlプログラミングだったので、ついやっちゃいました。
>>256だけで解決しました。もっとシームレスにutf-8に対応してくれないのかな
というのが素直な感想であります。
>>430
SourceのはLinux上で通常使われている”にょろ”です。
Destのはsamba経由でWindows側から書き込むと出来る”にょろ”です。
(Windows仕様に統一しようかなと考えているわけです。)
0433デフォルトの名無しさん
2006/02/14(火) 20:06:00先ほど書きませんでしたが、
そうです。私の言っている”にょろ”とは
そのWAVE DASH - FULLWIDTH TILDE問題の文字です。
先ほども書きましたが、decode,encodeすることで当初の目的の置換はおこなえています。
0434デフォルトの名無しさん
2006/02/14(火) 20:45:05プログラムの始めの方で use encoding 'utf8'; を入れてみたらどう?
0435デフォルトの名無しさん
2006/02/14(火) 21:38:440436デフォルトの名無しさん
2006/02/14(火) 22:03:000437デフォルトの名無しさん
2006/02/14(火) 22:04:22どうせ将来use utf8が標準なんだし。
0438デフォルトの名無しさん
2006/02/14(火) 22:12:19と
use encoding "utf8";
って何が違うの?
0439デフォルトの名無しさん
2006/02/14(火) 22:25:45ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html#encoding
0440デフォルトの名無しさん
2006/02/14(火) 22:49:150441デフォルトの名無しさん
2006/02/14(火) 23:01:34ppmでモジュールをインストールしようとすると、
会社のPCだからなのか、DLがうまくいきません。
セキュリティか何かの関係かもしれませんが。
他にモジュールをインストールする方法ってありますか?
0442デフォルトの名無しさん
2006/02/14(火) 23:07:26よりも、会社のPC使うな。
0443デフォルトの名無しさん
2006/02/14(火) 23:32:27>>219-
ここまで質問内容が一致するとむしろ驚きというかなんと言うか
0444デフォルトの名無しさん
2006/02/14(火) 23:36:40while($s =~ /^(.).*/g)
とか
$a =~ s/^(.)//;
とか
意味わからなす・・
これをわかりやすーく日本語で教えてくれないか?
0445デフォルトの名無しさん
2006/02/14(火) 23:45:01>use encoding 'euc-jp', Filter => 1;
で、変数や、関数名を日本語で記述できるっておもろいね。
これってネタとはなってるけど、実用的にはどうなん?
0446ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/15(水) 00:25:53日本語で書いたら、日本語読める奴しかコードが読めなくなるし。
デメリットしか思い付かない。
0447デフォルトの名無しさん
2006/02/15(水) 01:00:12AAだとおもえば
むずかしいせいきひょうげんも
ちょっとかわいくみえるよ!
ハ_ハ
('(゚∀゚∩ みえるよ!
ヽ 〈
ヽヽ_)
0448デフォルトの名無しさん
2006/02/15(水) 01:07:04詳説正規表現を読み切れば日本語のごとく正規表現を読めるようになるよ!
0449447
2006/02/15(水) 01:15:03■while($s =~ /^(.).*/g)
これはー、なにやりたいんだろうか?
まあ$sの最初の一文字目をとってきて、
その一文字目に対してなんか処理するのだろう。
■$a =~ s/^(.)//;
これは初めの一文字目を、空白に置き換えてるんだな。
$aの、初めの一文字目を消してるだけ。
というか正規表現スレがあるのでそっちで。
0450デフォルトの名無しさん
2006/02/15(水) 01:24:33$a =~ s/^(.)//; substr ($a, 0, 1)のが速いかも
0451デフォルトの名無しさん
2006/02/15(水) 06:39:51仕様書からscriptを自動生成するのに使ったことがある。
0452デフォルトの名無しさん
2006/02/15(水) 13:01:120453デフォルトの名無しさん
2006/02/15(水) 13:13:46それとも何かいい方法とかありますか?
0454デフォルトの名無しさん
2006/02/15(水) 13:24:50g付きならマッチした文字列の配列返すだけだから無限ループにゃならんだろ。
^が付いてるから、一個の要素の配列返して終了じゃね?
0455デフォルトの名無しさん
2006/02/15(水) 13:30:09お好きなものをどうぞ
http://search.cpan.org/search?query=Getopt&mode=module
0456デフォルトの名無しさん
2006/02/15(水) 13:48:09shift_jisとかutf8とか環境によって違いますが、環境に合わせてうまくdecodeする方法があるのかな?と
0457デフォルトの名無しさん
2006/02/15(水) 13:50:30\*STDOUT, # 標準出力
">debug.txt" # ログファイル
);
select($tee); # $tee を選択
tie($tee, ???); # ここで tie したい
こういう場合は何で tie すれば良いのでしょうか?TIEHANDLE? TIESCALAR?
やってみた事
tie(*$tee, 'MyTieHandle'); はアプリケーションエラーになってしまいます。
tie($tee, 'MyTieScalar'); で print で STORE がコールされるのかと思ったのですが違いました。
よろしくお願いします。(WinXP, Perl 5.8.7)
0458デフォルトの名無しさん
2006/02/15(水) 15:52:36うーん、tieはかなり日本じゃ探しても文献すくなかったから、
それを答えられる奴は、少ない&ここにはいないかも試練。
やりたいことは IO::Tee の機能を残しつつ、自分で作った MyTieHandle を関連付けたいんだろうが、
ひとつのハンドルにはひとつのTIEHANDLEクラスしか関連付けられないと思うので、
その方法だと$teeハンドルに関連付けられたIO::TeeがMyTieHandleで上書きされて、
MyTieHandleのメソッドしか呼ばれなくなると思う。
漏れもtieは勉強中で詳しくはわからんのだけど。
IO::TeeとかIO::Scalarを参考にして自作するしかwww
0459457
2006/02/15(水) 16:53:14IO::Tee自身もTIEHANDLEなんですね。
2つともtieすると無限ループするし…
このままでは仕方がないのでMyTieHandleだけで解決させようと思います。
ありがとうございました。
0460デフォルトの名無しさん
2006/02/15(水) 17:07:11解決したようだが perlbot 熟読をお勧めしとく。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlbot.html
少々古いが「実用 Perlプログラミング」も一読の価値があるだろう。
http://www.oreilly.co.jp/books/4900900826/toc.html
0461デフォルトの名無しさん
2006/02/15(水) 22:57:16IO::Tieの中身を確認しないで書くけど、
IO::Tieを継承したクラスでも作れいいじゃん
とか思った。
0462デフォルトの名無しさん
2006/02/15(水) 23:02:27やたら丸括弧つかってる事あるよね。
あれ無駄だなーと思う。
あと何でもかんでも .* で行けると思ってる。
別にどうでも良い所も .* でマッチさせてる。
これも無駄だよね。
正規表現てそんなに分かりにくいか?
参考書が悪いのかな。
0463デフォルトの名無しさん
2006/02/15(水) 23:47:040464デフォルトの名無しさん
2006/02/16(木) 02:45:13Excel に喰わせる CSV ファイルを前処理するスクリプトを組んでいるのですが、
こういうデータを配列に入れる、(・∀・)イイ技はないでしょうか?
$line = "2003/04/05,abc,4000,\"hogehoge ha hogehoge detu, sosite hamehame ha fumefume desu.\"";
@lines = split ",",$line; すると以下になりますが、これは期待したものではありません。
@lines[0] = "2003/04/05";
@lines[1] = "abc";
@lines[2] = "4000";
@lines[3] = "\"hogehoge ha hogehoge detu";
@lines[4] = "sosite hamehame ha fumefume desu.\"";
こういう風にしたいのです。
@lines[0] = "2003/04/05";
@lines[1] = "abc";
@lines[2] = "4000";
@lines[3] = "\"hogehoge ha hogehoge detu, sosite hamehame ha fumefume desu.\"";
0465デフォルトの名無しさん
2006/02/16(木) 02:49:03> ちょっと質問です。
> Excel に喰わせる CSV ファイルを前処理するスクリプトを組んでいるのですが、
> こういうデータを配列に入れる、(・∀・)イイ技はないでしょうか?
考え方:
この問題には、多くの人が取り組んだはずだ。
したがってすでにモジュールが作られているだろう。
0466デフォルトの名無しさん
2006/02/16(木) 02:57:55おっ、それは(・∀・)イイ考え。
ところで、データは日本語ベースなんですが、大丈夫でせうか?
0467デフォルトの名無しさん
2006/02/16(木) 02:59:16まちがって切ったものを繋げる処理を入れてます。
我ながらダサい orz
0468デフォルトの名無しさん
2006/02/16(木) 03:13:51Text::CSVはASCII以外喰ってくれない。
Text::CSV_XSのオプションにbinaryをセットすればOK
0469デフォルトの名無しさん
2006/02/16(木) 04:50:45なんか他のスレとちがってwwwこのスレの住人やさしいなwww
ちょっとうれしかったぞwwww
まぁ話は戻るが・・・
一応ソースを張る・・・
Main: {if($#ARGV < 0) {print STDERR "usage: lister.pl <search_host> \n";exit;}$make_uniq = 1;$search_host = shift(@ARGV);
print STDERR "[+] Search host : $search_host\n\n";
while($searchwords =~ /^(.).*/g) {
$searchwords =~ s/^(.)//;
print STDERR "Search[$1] ... ";
$arrsize = $#ulist;
if($#ulist != $arrsize) {
$arrsize = $#ulist;
push(@ulist, search_google($search_host, $1, 100, 100));
}
$arrsize = $#ulist - $arrsize;
print STDERR "$arrsize username found\n"
}
@ulist = sort(@ulist);
open(OUT, ">$search_host.txt") or die "open: $!";
foreach $name (@ulist) {
unless($seen{$name} && $make_uniq) {
$seen{$name}++;
print OUT "$name\n";}}close(OUT);
} 一応こんな感じで掲載してあった・・・これをCで書こうと思っている・・・サーチグーぐるはサブルーチンとして存在している。。。今のところ一番意味不明なのは
my ($search_host, $search_word, @ulist, $name, %seen, $make_uniq);
my ($arrsize);
push(@ulist, search_google($search_host, $1, 0, 100));かな
マジCで言うところのこんな漢字って説明してくれ。
0470デフォルトの名無しさん
2006/02/16(木) 05:12:18Cは知らないけど、時間だけに誰もいないだろうから日本語で回答してみる。
上2つは変数のスコープ宣言。
PerlはCのように型の宣言がないけど、変数等が使える場所を制限できる。
3つ目は、search_googleの戻り値を配列ulistの末尾へ追加する。
STDERRの一文はdieで済むと思ふ
0471デフォルトの名無しさん
2006/02/16(木) 05:20:46split /,/, $line, 4ってことじゃなくて?
0472デフォルトの名無しさん
2006/02/16(木) 06:28:08通常の法則なら「exists $hash{example};」はexampleというキーが生成されてその後undefがexists演算子に渡されるように見えます。
デフォルトのハッシュでも内部的なtieがあってFETCHに「exists演算子下では動作を変える」機能があると考えたらいいのでしょうか?
それともperlが exists(\%hash, "example") 的なコードに置き換えているのでしょうか?
それとも同じundefでも内部では識別可能ないくつかのundefがあり「キーが無いことによるundef」とかが渡されてるのでしょうか?
0473デフォルトの名無しさん
2006/02/16(木) 06:35:540474デフォルトの名無しさん
2006/02/16(木) 08:26:300475デフォルトの名無しさん
2006/02/16(木) 13:42:52コードの違う 〜 に似た文字になってしまうんですが
日本人は今後もJCode使うしかないんですかねぇ・・・
0476デフォルトの名無しさん
2006/02/16(木) 13:59:350478デフォルトの名無しさん
2006/02/16(木) 15:25:43どうしてもSHIFT_JISでしか取れません。どうしたらできるのでしょうか?
環境は、Win2000 で Perl5.8を使っています。
use open IN => ":encoding(shift_jis)";
use open ":std";
while (<*>) {
print $_;
print utf8::is_utf8($_) ? " UTF-8 Flag\n" : " not UTF-8 Flag\n";
}
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html
ここの"UTF8フラグとPerlIOレイヤ"とにらめっこしながら、ああでもないこうでもないともう1時間以上トライしているのですが・・・
よろしくお願いします。
0479デフォルトの名無しさん
2006/02/16(木) 15:36:40$fh = new IO::File( $file, $mode );
print $fh $value;
みたいなことをしています。
ファイルが無い時勝手に作ってくれるのはいいのですが、
その時ファイル属性は指定できないのでしょうか。
それとも書き出す前にファイルテスト演算子でファイルの有無状態を取得しておいて、
ファイル作成後、そのフラグをで新規作成を判別し、chmodを使うしかないのでしょうか。
なんとなくスマートじゃないきがしたので…。
0480デフォルトの名無しさん
2006/02/16(木) 15:50:58できない。
0481478
2006/02/16(木) 16:03:47ここに書いてありました・・・うーん
0482デフォルトの名無しさん
2006/02/16(木) 16:12:00では479で書いたようなことを実装しても問題ありませんよね
最近モジュールを勉強しだしたので、
どの辺までモジュールを使ってできるかとかやっていて、詰まることがあるんです
0483デフォルトの名無しさん
2006/02/16(木) 17:23:31http://search.cpan.org/~gbarr/IO-1.22/IO/File.pm
0484デフォルトの名無しさん
2006/02/16(木) 18:40:27第三引数に'0666'とやってみたところ705のファイルが出来ました
8進数変換の数字渡しても変わらない…
0485デフォルトの名無しさん
2006/02/16(木) 18:47:02どちらにしろ希望のパーミッションじゃない…
0486デフォルトの名無しさん
2006/02/16(木) 20:22:490487デフォルトの名無しさん
2006/02/16(木) 20:23:51MODEを数値(O_WRITE 等)で渡してないか、umaskの設定を忘れてるかしてない?
0488デフォルトの名無しさん
2006/02/16(木) 22:30:44exists $hash{$key} は tie するとこの $hash->EXISTS( $key ) ってことでしょ。
同様に delete $hash{$key} は $hash->DELETE( $key )
何か問題でも?
ttp://search.cpan.org/~nwclark/perl-5.8.7/pod/perltie.pod#Tying_Hashes
0489デフォルトの名無しさん
2006/02/16(木) 22:35:31簡単にいうと Perl コンパイラがバイトコードを生成するときに
exists $hash{key}
というプログラムを
OPCODE: exists
ARG1: hash
ARG2: "key"
というコードにコンパイルするから.そーゆう意味でいくと 2 番目の理解が近いのかな.
確認したけりゃ perl -MO=Terse -e 'exists $hash{key}' とバイトコードをみてみるといい.
0490デフォルトの名無しさん
2006/02/16(木) 22:49:240491デフォルトの名無しさん
2006/02/16(木) 23:11:210492デフォルトの名無しさん
2006/02/17(金) 08:11:08ファイルハンドル名を GUIDGEN.EXE で毎回生成してはどうよ。
0493472:exists
2006/02/17(金) 08:41:39ということは構文上 $hash{key} の形がオペランドとして存在してもFETCHとしては扱われず、
実行時まで識別子とキーは分離したままなのですね。
バイトコードはオペコードが分からないんですが役立ちそうなので勉強してみます。
0494472:exists
2006/02/17(金) 08:46:010495デフォルトの名無しさん
2006/02/17(金) 10:23:32#!/usr/local/bin/perl
use strict;
use IO::File;
sub main {
my $fh;
unless( $fh = new IO::File( './test.txt', 'a', '0666' ) ) {
print "$!\n";
}
print $fh "test\n";
$fh->close;
}
main;
>>483ではデフォルト0666になるとか書いてあるのですが、上記のようにやっても
644にしかなりません(昨日の0655もまちがえでした)
うーん・・・
0496デフォルトの名無しさん
2006/02/17(金) 11:23:46umask umask umask umask umask umask umask
umask umask umask umask umask umask umask
umask umask umask umask umask umask umask
umask umask umask umask umask umask umask
umask umask umask umask umask umask umask
0497デフォルトの名無しさん
2006/02/17(金) 12:59:59つーか、そこの君。 '0666' って文字列は何だ? 0666 じゃないのか?
0498デフォルトの名無しさん
2006/02/17(金) 13:06:01umaskはunix依存コマンドらしいので、つかってないです
>>497
数字も文字列もoct後も試しました
張ったのはたまたま文字列の時のです
0499デフォルトの名無しさん
2006/02/17(金) 13:28:14文字列じゃ普通だめだろ。パーミッションなんだから。
(Perlってそんなの解釈してくれないよな? まさか新しい
バージョンではするのか?)。
ま、しかし、umask の問題だよ。OSに依存する部分をPerl
スクリプトの中に書きたくないのならスタートアップ用シェル
スクリプトを作ってその中で umask コマンドで設定してから
動かせばいい。
0500デフォルトの名無しさん
2006/02/17(金) 13:29:54自分で使ったつもりがなくてもumaskの値はだれかがどこかで設定した値に
なっているわけで... たぶん755とかになってるんじゃねーの?
linuxのopen(2)より:
The argument mode specifies the permissions to use in case a new file
is created. It is modified by the process's umask in the usual way: the
permissions of the created file are (mode & ~umask).
0501デフォルトの名無しさん
2006/02/17(金) 13:36:47システムによって動かないコマンドかと思ってました
それなら単純にumaで取得後任意に設定し戻す方法をとります
ただ、IO::Fileの説明で第三引数にPERMというものがありながら使えなかったというのが心残りですが
0502デフォルトの名無しさん
2006/02/17(金) 13:58:17> ただ、IO::Fileの説明で第三引数にPERMというものがありながら使えなかったというのが心残りですが
使えるわ、 ぼけッ!!
使えるわ、 ぼけッ!!
使えるわ、 ぼけッ!!
使えるわ、 ぼけッ!!
0503デフォルトの名無しさん
2006/02/17(金) 14:39:540504デフォルトの名無しさん
2006/02/17(金) 15:08:580505デフォルトの名無しさん
2006/02/17(金) 15:42:48use strict;
use IO::File;
sub main {
my $filename = './text.txt';
my $fh;
print "実行開始時のumask : ".sprintf( "%03o", umask ), "\n";
umask( 0070 );
print "セットしたumask : ".sprintf( "%03o", umask ), "\n";
unless( $fh = new IO::File( $filename, 'a', 0644) ) {
print "$!\n";
}
print $fh "test\n";
$fh->close;
my @st = stat( $filename );
print "ファイルの属性 : ".substr( sprintf( "%03o", $st[2] ), -3 ), "\n";
unlink( $filename );
}
main;
実行開始時のumask : 022
セットしたumask : 070
ファイルの属性 : 606
グループを見ると分かりますがumaskは利いています。
IO::Fileで指定したのが反映されていません。
かりにされていたら604になるはずですよね?
umask強制かもしれないので、逆にumask使わない場合を。
うちの環境ではデフォが644になり区別がつかないので、
IO::Fileの指定で606としたところ、結局644に…
0506デフォルトの名無しさん
2006/02/17(金) 15:48:510507デフォルトの名無しさん
2006/02/17(金) 15:55:32$ cat x
#!/usr/bin/perl -w
use strict;
use IO::File;
umask 0;
my $fn = 'testfile.txt';
my $fh = new IO::File($fn, 'w', 0400);
die "$fn: $!\n" unless ($fh);
$fh->print("テスト\n");
$fh->close();
$ perl x
$ ls -l testfile.txt
-rw-rw-rw- 1 xxxx xxx 10 2月 17 15:53 testfile.txt
$
0508デフォルトの名無しさん
2006/02/17(金) 16:08:15モードが数値の場合だけ sysopen でパーミッションをセットしてて
モードがコロン始まりの時とその他の時は普通の open 使ってて
パーミッションセットしてねえ。
…これもしや perldoc に書いてあった?
0509デフォルトの名無しさん
2006/02/17(金) 16:10:23これだな。numeric mode。
If "IO::File::open" is given a numeric mode, it passes that mode
and the optional permissions value to the Perl "sysopen" operator.
The permissions default to 0666.
0510デフォルトの名無しさん
2006/02/17(金) 16:34:20これがあったからなぁ…
0511デフォルトの名無しさん
2006/02/17(金) 16:35:17O_WRONLY|O_APPEND|O_CREAT
でいけました。
0512デフォルトの名無しさん
2006/02/17(金) 16:38:23ひとのアドバイスもマトモに聞かず、散々引っ掻き回した挙げ句がそれかよ、って感じですな。
0513デフォルトの名無しさん
2006/02/17(金) 16:49:05これを
>MODEを数値(O_WRITE 等)で渡してないか?渡してたらダメだぞ
と思ってた俺
>>512で煽られてようやくorな文章だと気がついた俺
そして結局>>511がでるまで分からなかった俺
O_WRONLYとかみたことないよ…
0514デフォルトの名無しさん
2006/02/17(金) 16:52:13ぶんもー☆多いみたいだし
0515デフォルトの名無しさん
2006/02/17(金) 16:56:100516デフォルトの名無しさん
2006/02/17(金) 17:03:00とかの$/ってなんですか?
0517デフォルトの名無しさん
2006/02/17(金) 17:03:02perldoc IO::File → >>509 → perldoc -f sysopen
だけですぐに O_WRONLY とかに辿り着くじゃん。
ちゃんとドキュメント見れと。
0518デフォルトの名無しさん
2006/02/17(金) 17:04:29perldocなんてコマンド初めて知った
0519デフォルトの名無しさん
2006/02/17(金) 17:05:45Perl やめていいよ。もう。
0520デフォルトの名無しさん
2006/02/17(金) 17:08:44> local $/ = undef
> とかの$/ってなんですか?
定義済み変数です。
0521デフォルトの名無しさん
2006/02/17(金) 17:12:08さっきそこ見てなかった。とほほ。
0522デフォルトの名無しさん
2006/02/17(金) 17:13:51perldoc のことも書いてない入門書は焼いてよし。
0523デフォルトの名無しさん
2006/02/17(金) 17:24:500524デフォルトの名無しさん
2006/02/17(金) 17:48:240525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
2006/02/17(金) 18:01:18名前:性帝トーマス◆13ThomasYo
紹介文:俺の子を産んでくれる繁殖可能な女性を広く募集中。
beポイント:116
登録日:2005-02-06
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
2006/02/17(金) 18:37:59名前:性帝トーマス◆13ThomasYo
紹介文:俺の子を産んでくれる繁殖可能な女性を広く募集中。
beポイント:116
登録日:2005-02-06
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
2006/02/17(金) 22:33:39> local $/ = undef
> とかの$/ってなんですか?
↓の3番目です。
http://flex.ee.uec.ac.jp/texi/perl/perl_toc.html#SEC213
0531デフォルトの名無しさん
2006/02/18(土) 01:01:29Sheets("xSheet").Copy After:=Sheets(1)
をperlに変換するにはどうすればいいですか?
Sheets("xSheet")->Copy After:=Sheets(1)
↑
ここから分からん…
0532デフォルトの名無しさん
2006/02/18(土) 23:09:57もしくはコンソールを×ボタンで閉じるときに処理を噛ませる方法があったら教えてください。
batファイルから開く必要があるので、exitではウィンドウが閉じません。宜しくお願いします。
0533デフォルトの名無しさん
2006/02/18(土) 23:13:040534デフォルトの名無しさん
2006/02/18(土) 23:59:510535デフォルトの名無しさん
2006/02/19(日) 02:47:27Windowsならショートカットのプロパティで設定しておきゃいいじゃねえか。
0536デフォルトの名無しさん
2006/02/19(日) 04:28:06batで開いたものをexitすると、plファイルを再実行します。これは仕様ですよね?
>>534
WindowsXP SP2/perl5.8.4です申し訳ありません。
>>535
試しにショートカットを作ってプロパティを見てみましたが、特に見当たりませんでした。どう設定すれば良いんでしょうか?
0537デフォルトの名無しさん
2006/02/19(日) 05:07:000538デフォルトの名無しさん
2006/02/19(日) 10:24:32どうよ??
とりあえず、IISのWebサーバーでcgi実行して、
今日のレース一覧とか現在のオッズとかみるcgiサンプルつけた
0539デフォルトの名無しさん
2006/02/19(日) 15:17:20ファイル名に日本語を含んでいたため地獄を味わった。
ActivePerlさん、本当にありがとうございました。
0540デフォルトの名無しさん
2006/02/19(日) 15:33:25perlの問題じゃない。
0541デフォルトの名無しさん
2006/02/19(日) 15:37:290542デフォルトの名無しさん
2006/02/19(日) 15:41:260543デフォルトの名無しさん
2006/02/19(日) 15:46:290544539
2006/02/19(日) 15:54:44使ってるライブラリは以下。
use File::Find;
use MP3::Info;
use Audio::WMA;
原因がわからん。
仕方ないので、今はsystem()でrenameコマンドを呼び出して対処。
0545デフォルトの名無しさん
2006/02/19(日) 15:57:58どういうファイル名がどんな風になって、ActiveStateに感謝してるか書けよw
0546デフォルトの名無しさん
2006/02/19(日) 16:08:550547539
2006/02/19(日) 16:12:3648個のファイルが文字化けしたため、
dirリダイレクト→表計算ソフト→txt→bat編集でリネームとやってなんとかfuck youさせた。
0548デフォルトの名無しさん
2006/02/19(日) 16:22:10不具合だとw 思い込みが禿げてるなw
0549デフォルトの名無しさん
2006/02/19(日) 16:28:530550デフォルトの名無しさん
2006/02/19(日) 17:04:460551デフォルトの名無しさん
2006/02/19(日) 17:15:07> 不具合再現作業はまだやらない。
まだ原因が自分にあるのか ActivePerl にあるのか切り分けもできてないんでしょ?
その状況で >>539 みたいな言い掛かり的レスをする神経がわからない。
0552デフォルトの名無しさん
2006/02/19(日) 17:58:110553デフォルトの名無しさん
2006/02/19(日) 18:17:55MP3::Infoを1.1.xから1.2に更新することで回避。
0554デフォルトの名無しさん
2006/02/19(日) 18:24:55encode の使い方間違えただけじゃねえか?
0555539
2006/02/19(日) 18:40:04全角文字を含みトラック情報をもつmp3ファイルを引数に渡すこと。
このテストでは引数で渡したmp3ファイルをリネームするので注意。
use strict;
use MP3::Info;
MAIN:{
my $filename = shift or die;
die unless (-f $filename && $filename=~m/\.mp3$/);
my $tag = get_mp3tag($filename);
my $tracknum = $tag->{TRACKNUM};
rename($filename, $filename.'----'.$tracknum.'.mp3');
}
0556デフォルトの名無しさん
2006/02/19(日) 18:57:190557デフォルトの名無しさん
2006/02/19(日) 20:50:11一番簡単だと思うのが今日の始めのエポック秒と比較すると思ったのだが、その
計算がこんなふうになった。 もっとスマートな方法ある?localtimeとgmtimeを
呼ぶのが醜い気がするのだが、他に時間帯情報を得る方法あります?
use integer;
$now = time;
my ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($time);
my ($gsec,$gmin,$ghour,$gmday,$gmon,$gyear,$gwday) = gmtime($time);
my $startofday = $now / 86400 * 86400 + ($hour - $ghour) * 3600;
0558デフォルトの名無しさん
2006/02/19(日) 20:51:33あ、途中の$timeは$nowの間違い
0559デフォルトの名無しさん
2006/02/19(日) 21:00:10つ Time::Local
0560557
2006/02/19(日) 21:39:53あ、なるほど。 こんな感じかな?
my ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time);
$startofday = timelocal(0, 0, 0, $mday, $mon, $year);
0561デフォルトの名無しさん
2006/02/20(月) 01:22:41「今日」より前か。昨日作ったファイルだったら、なにかしたいわけか。
うーん、むずいなぁ。こんなんでどう?
my ($sec,$min,$hour) = localtime(time);
$kyou = time - ($sec+$min*60+$hour*60*60);
print $kyou > (stat($filename))[9];
テストしてないけど
0562デフォルトの名無しさん
2006/02/20(月) 01:24:400563557
2006/02/20(月) 01:57:35そ〜〜〜〜〜〜〜りゃそーでしたね。 じゃ、これでいいか:
my ($sec,$min,$hour,$mday,$mon,$year) = localtime($mtime);
my ($sec2,$min2,$hour2,$mday2,$mon2,$year2) = localtime(time);
if ("$year$mon$mday" eq "$year2:$mon2:$mday") {
}
0564デフォルトの名無しさん
2006/02/20(月) 02:18:20my ($sec,$min,$hour,$mday,$mon,$year) = localtime($mtime);
my ($sec2,$min2,$hour2,$mday2,$mon2,$year2) = localtime(time);
if ("$year$mon$mday" ne "$year2:$mon2:$mday") {
#昨日以前の場合の処理
}
0565564
2006/02/20(月) 02:28:48my ($sec,$min,$hour,$mday,$mon,$year) = localtime($mtime);
my ($sec2,$min2,$hour2,$mday2,$mon2,$year2) = localtime(time);
if ("$year$mon$mday" ne "$year2$mon2$mday2") {
# 昨日以前の場合の処理
}
0566デフォルトの名無しさん
2006/02/20(月) 02:46:430567557
2006/02/20(月) 02:57:57なんか見落としてました。 そうですね、localtime呼び出しも一回だけで一番
単純な論理で書かれてますし、無駄な変数が0。 これで決定版ということにします。
0568デフォルトの名無しさん
2006/02/20(月) 03:14:30こうするとスマートかも
0569デフォルトの名無しさん
2006/02/20(月) 04:20:220570デフォルトの名無しさん
2006/02/20(月) 06:17:180571デフォルトの名無しさん
2006/02/20(月) 12:39:20どのようにすれば良いですか?
split(//)じゃ駄目ですよね。
0572デフォルトの名無しさん
2006/02/20(月) 13:19:41splitでいけるよ
0573デフォルトの名無しさん
2006/02/20(月) 13:42:32http://www.din.or.jp/~ohzaki/perl.htm#Character
↑の EUC-JP 文字を使ってこんな感じとか?
my @euc_chars = $euc_text =~ /${character}/g;
0574デフォルトの名無しさん
2006/02/20(月) 13:55:38ありがとうございます
参考にして少しやってみます。
0575デフォルトの名無しさん
2006/02/20(月) 14:05:45my $mbcs = new String::Multibyte 'EUC_JP';
my @splited = $mbcs->strsplit('', $euc_text);
0576デフォルトの名無しさん
2006/02/20(月) 14:11:21ja_JP.eucJP
$ perl -e 'use encoding "euc-jp"; $s="ほげほげ"; @s = split //, $s; print join("", map {"$_\n"} @s);'
ほ
げ
ほ
げ
$
0577デフォルトの名無しさん
2006/02/20(月) 14:11:27a.pl
----------
require "b.pl";
<ここで列挙させたい>
b.pl
----------
require "c.pl";
require "d.pl";
希望の実行結果例
c:\>perl a.pl
c:\perl\my\b.pl
c:\c.pl
c:\d.pl
よろしくお願いします。
0578デフォルトの名無しさん
2006/02/20(月) 14:32:13%INC
0579デフォルトの名無しさん
2006/02/20(月) 14:32:180580577
2006/02/20(月) 16:49:530581デフォルトの名無しさん
2006/02/20(月) 22:57:060582デフォルトの名無しさん
2006/02/20(月) 23:26:510583デフォルトの名無しさん
2006/02/20(月) 23:31:04ありがとうございます。
私もそう思ったのですが、それはどうすればいいですか?
0584デフォルトの名無しさん
2006/02/20(月) 23:42:22>>573 のリンク先の正規表現を使ってみては?
0585デフォルトの名無しさん
2006/02/20(月) 23:59:04半角ったって英数字空白以外が20〜30くらいだろ。
力技で正規表現書けばいいんじゃね?
0586デフォルトの名無しさん
2006/02/21(火) 00:05:510587デフォルトの名無しさん
2006/02/21(火) 00:19:19Shift_JIS とかだったらちょっと面倒かも。
0588デフォルトの名無しさん
2006/02/21(火) 00:30:34Shift_JIS文字ってあるの?
0589デフォルトの名無しさん
2006/02/21(火) 00:51:210590デフォルトの名無しさん
2006/02/21(火) 01:34:55qmail+LDAPでメールサーバを立てようと思っています。
アカウントごとにLDAPのパラメータとしてID・mailaddress・objectclassをPerlを用いて一括登録し、
その後にIDを引数にmailaddressを取得したいのですが、それまでに登録されたパラメータを取得するための
何かよい方法はないでしょうか?
よろしくお願いします。
0591デフォルトの名無しさん
2006/02/21(火) 02:20:25NEC拡張の2バイト半角文字の事かっ!
それを考慮しても、Shift_JISよりユニコードのほうが面倒な気がする。
半角文字が、ASCII+JIS X 0201 や ISO-8859-1 だけなら楽だけど。
0592デフォルトの名無しさん
2006/02/21(火) 02:21:500593デフォルトの名無しさん
2006/02/21(火) 02:57:07エンコードが何かによってやることが少し変わるかも。
但し Perl 5.8.x で use encoding での指定が適切にされているならば
正規表現の [] の中にあなたが半角だと強く信じる文字を入れて
パターンマッチさせればいい。
0594デフォルトの名無しさん
2006/02/21(火) 06:37:09MIME::Toolsがインストールできないのはうちだけ?
インストール時のテストでエラーが出る。
> install MIME:Tools
って打つと、結構沢山テストに失敗してる。
t/Misc..............FAILED tests 4-5, 7-11
Failed 7/14 tests, 50.00% okay
t/ParserEncoded.....ok 4/5
# Failed test 'Decoded MD5 match'
# in t/ParserEncoded.t at line 53.
t/ParserEncoded.....NOK 5# Looks like you failed 1 test of 5.
t/ParserEncoded.....dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 5
Failed 1/5 tests, 80.00% okay
OSはCentOS4.2のx86_64版。
同じような状況の人いますか?
0595デフォルトの名無しさん
2006/02/21(火) 08:51:25Makefile.PLの中の %modulesにリストアップされているmoduleは全部入ってる?
0596594
2006/02/21(火) 09:12:59> install MIME::Base64
したらエラーが出なくなったよ。ありがとう。
yumみたいに依存性があるモジュールは全部インストール
してくれるのかと思ってたんだけど、ちがったのね。
0597デフォルトの名無しさん
2006/02/21(火) 09:41:57perlのばやいmodule名とdistribution名が一致しないものがあるからさらにややこし。
MIME-tools自身もそうだし、要求されているMail::なんちゃらもMailtoolsで配布されてるし。
誰かCPANモジュールとPPM-Makeを改良してくれる香具師いないかな<他力本願モードw
0598デフォルトの名無しさん
2006/02/21(火) 13:26:090599デフォルトの名無しさん
2006/02/21(火) 14:57:24CCCが存在しない時に、
Can't call method "get_value" on an undefined value at ./programname.pl line 行数
とエラーが表示されます。
データが存在しない時には
「データが存在しません」というメッセージを表示させて例外処理としたいのですが、
どのように書けばいいのでしょうか?
0600デフォルトの名無しさん
2006/02/21(火) 14:58:31俺は至高!俺は吉良上野介!
俺は吟遊詩人!俺はホス○タル騎士団
俺はシャン○リ○通りの達人!俺はラザ○エフ商会
俺は
0601デフォルトの名無しさん
2006/02/21(火) 15:17:05はい、次の質問。
0602デフォルトの名無しさん
2006/02/21(火) 15:24:05エラーよく読め。それはCCCが存在しないのではない。
$BBBがundefになってる。よって$BBBがdefinedか調べればよい
0603599
2006/02/21(火) 16:24:57レスありがとうございます。
おっしゃる通り、BBBに値が入っていませんでした。
きちんとデバッグできていなくてすいませんでした。
>my $AAA = $BBB->get_value('CCC');
この文を実行する前に、BBBの判定を行ってブレイクを挟もうと思うのですが、
今、BBBにはデータが何もはいっていません(printすると何も出力されず)
これを判定するためにはどのようにすればよろしいのでしょうか。
if($BBB=0) ? if($BBB=" ") ?
空白の判定のやり方がわかりません。
すいませんがご教授お願いします。
0604デフォルトの名無しさん
2006/02/21(火) 16:25:370605デフォルトの名無しさん
2006/02/21(火) 16:28:100606デフォルトの名無しさん
2006/02/21(火) 16:32:34OZが完成させていたのか。
0607デフォルトの名無しさん
2006/02/21(火) 16:33:40掲示板で他の人を使うのではなく
きちんと本を読んで基本から勉強しましょう
0608デフォルトの名無しさん
2006/02/21(火) 16:34:43とりあえず、ifの中では「==」って覚えとけ
0609598
2006/02/21(火) 16:42:410610デフォルトの名無しさん
2006/02/21(火) 16:50:57とりあえず貰ったキーワードを元に検索してみたらどうだい?
http://www.google.com/search?num=50&hl=ja&c2coff=1&q=perl+undef+%E5%88%A4%E5%AE%9A&lr=lang_ja
http://www.google.com/search?num=50&hl=ja&c2coff=1&q=perl+defined&lr=lang_ja
0611599
2006/02/21(火) 17:08:35if( $BBB == undef){ エラー処理 }
でひとまず動きました。
本日初めてPerlを使用したのと時間が押していたので焦って落ち着いて探せませんでした。
ご迷惑をおかけしました。
>>607さん
おっしゃる通りです。以後気を付けます。
>>608さん
ありがとうございます。
>>610さん
助かりました。
ありがとうございました。
0612デフォルトの名無しさん
2006/02/21(火) 17:14:23このケースはそれでも動くと思うけれど正しくは
if (!defined $BBB) { }
と書く。==は数値の判定に使うもので未定義値の判定には使えない。
ちなみに文字列の判定にはeq等を使う。
0613599
2006/02/21(火) 17:34:58なるほど・・・
了解しました。勉強なります。
ありがとうございました。
0614デフォルトの名無しさん
2006/02/21(火) 18:14:47一度useしたモジュールを取り消したいのですが可能でしょうか?
no というのはあるようですが、あんまり意味ないみたいです。
具体的に書きますと、
常駐して再起動できないアプリケーションがあるのですが、
どうも特定の例外が起こった際に、overloadが壊れるみたいなのです。
これを復元するためにもう一度コンパイルしなおしてやればいいかな と思ったのですが、
一度useされているものは再びuseはしないようなので困っています。
(Class::DBIをmod_perl上で使っているときに発生するoverloadのバグのことです)
0615デフォルトの名無しさん
2006/02/21(火) 18:24:09一応%INCから消してやれば再度読み込ませることはできるけれど、
useはスクリプトの解釈と同時に処理されるので注意。
具体的にはeval内でuseするとかrequire+importするとか
0616デフォルトの名無しさん
2006/02/21(火) 18:31:26じゃないから何が起きるやら。
再現条件不明のトラブルを抱えたくないなら、「再起動できない」をどうにかする方が
無難だと思う。
0617デフォルトの名無しさん
2006/02/21(火) 18:33:50delete $INC{$_} foreach(grep($_ =~ /^Class\/DBI/, keys(%INC)));
といった感じでINCは消してみたのですが、
大量に sub routin **** is redefind. ってでます。
overloadのバグは直せていないので、読み込めていないようです。
具体的には↓な感じでやっています。
foreachのスコープでeval useが他に効かなくなっている。 とかないですよね・・・?
my @cdbipkgs = grep($_ =~ /^Class\/DBI/, keys(%INC));
delete $INC{$_} foreach(@dbipkgs);
foreach(@dbipkgs) {
$_ =~ s/\/::/g;
$_ =~ s/\.pm$//;
eval("use $_;");
}
0618デフォルトの名無しさん
2006/02/21(火) 18:45:23すみません 3、4行目
Subroutine ***** redefined at ****** 26. ってでますが、overloadは直せていないようです。
の間違いです。
0619酩酊 ◆TWARamEjuA
NGNG0621デフォルトの名無しさん
2006/02/21(火) 20:56:01あったなぁ、2バイト半角(w。
PC-98のフォントでは、MS-DOS上で普通の半角より微妙に見栄えが良かったから、
あの頃はみんな良く使ってたな。
0622614
2006/02/21(火) 23:50:16undef %Class::DBI::;
してみましたがやはりClass::DBIのoverloadのバグは塗りつぶせないようです・・・
>>616
確かにその通りですね。
実際再起動が不可能なわけではなく、時間がかかるだけなのですが、
再起動が必要な状況かどうかを判断するのが人の目しかない状態でして・・・
もし塗りつぶせればサービスを止めずにすむな、と思った次第です。
0623デフォルトの名無しさん
2006/02/22(水) 12:00:06http://module.jp/blog/regex_unicode_prop.html
半角カナは \p{InHalfwidthAndFullwidthForms} でマッチするなんて知らなかった。
よく見りゃ perldoc perlunicode で出てくるじゃないか。トホホ。
0624デフォルトの名無しさん
2006/02/22(水) 22:42:35そもそもoverloadが何やってるか調べたの?
0625614
2006/02/23(木) 00:48:58レスありがとうございます。
これですね。
use overload
'""' => sub { shift->stringify_self },
bool => sub { not shift->_undefined_primary },
fallback => 1;
オブジェクトがスカラー評価された際にPrimaryKeyの値を返す
と認識しておりましたが、違いますでしょうか?
0626デフォルトの名無しさん
2006/02/23(木) 02:38:15624は、overload.pmが何やってるか調べたのかって聞いてる気がする。
力で押すつもりなら最初に確認する筈のところだから、念の為の確認だと思うけどね。
で、そのoverloadの認識も(この場合は)間違い。正しくは、
オブジェクトが文字列として評価されたら、メソッド stringify_self の戻り値を返す。
になる。
言いかえると、「文字列評価したときにstringify_selfが呼ばれなる状態が、overloadが
正常な状態」と認識しておくのが無難。
0627614
2006/02/23(木) 14:55:38なるほど。 ありがとうございます。
ちなみにですが、mod_perlでoverloadが壊れたときは以下のようなエラーが出ます
Operation `==': no method found,
left argument in overloaded package MyClassDBI::MyTable,
right argument has no overloaded magic at ~/MyApp/HogeHoge.pm line 105.
0628デフォルトの名無しさん
2006/02/23(木) 17:23:23バイト数を知りたい場合はどうすればよいのでしょうか?
例えば
print &bar('Japanese');
print &bar('日本語');
sub bar($)
{
$s = shift;
return $s . "=" x (80 - length($s));
}
等とすると 「日本語===========〜」 の方は83バイトになってしまいます。
0629デフォルトの名無しさん
2006/02/23(木) 17:54:12マニュアルに書いてありますが。
0630デフォルトの名無しさん
2006/02/23(木) 17:55:120631デフォルトの名無しさん
2006/02/23(木) 17:58:54プログラミング界にどれほど豊饒な実りがもたらされることか……
0632デフォルトの名無しさん
2006/02/23(木) 18:04:460633デフォルトの名無しさん
2006/02/23(木) 18:14:58iso-2022-jpへのコンバートはEncode::JP::JIS7に書いてあるのですけど、他
のエンコードへのコンバートについてはコードが書いてあるファイルを発見で
きませんでした。
0634デフォルトの名無しさん
2006/02/23(木) 18:22:07つ ext/Encode
0635デフォルトの名無しさん
2006/02/23(木) 18:36:53ことから、shift-jis->euc-jpでは
shift-jisをデコード==>euc-jpへエンコード
という流れかと推測しているのですが。
jcode.plみたいにshift-jisから演算で直接euc-jpに変換はしていないの
かと。どうなんでしょうか?
0636デフォルトの名無しさん
2006/02/23(木) 18:43:22ドキュメント嫁よ、このドキュンが
0637デフォルトの名無しさん
2006/02/23(木) 19:00:580638デフォルトの名無しさん
2006/02/23(木) 19:01:430639デフォルトの名無しさん
2006/02/23(木) 19:29:00G13かw
0640デフォルトの名無しさん
2006/02/23(木) 20:24:00PHPマニュアルみたいなものがあるの?
0641デフォルトの名無しさん
2006/02/23(木) 20:40:22>>2-3も読めないですかそうですか
0642デフォルトの名無しさん
2006/02/23(木) 21:04:51> ドキュメントとかマニュアルって何?
> PHPマニュアルみたいなものがあるの?
あなたのディスクに全部入っているはずです。
0643デフォルトの名無しさん
2006/02/23(木) 21:23:52これはひどいwwwwww
0644デフォルトの名無しさん
2006/02/23(木) 21:24:011. まず前準備として、英語がよく分からない場合は電子辞書を買うなり
PCに辞書入れるなりしてすぐに英文を理解できる体制を整えろ。
2. perldoc perl と打て。
3. 終了。
0645デフォルトの名無しさん
2006/02/23(木) 21:43:22これは、あまりにも親切だ!
0646デフォルトの名無しさん
2006/02/23(木) 21:46:180647デフォルトの名無しさん
2006/02/23(木) 21:48:31これは、あまりにも
0648デフォルトの名無しさん
2006/02/23(木) 21:51:191. まず前準備として、ロープを買え。
2. 回線切って首を吊れ。
3. 終了。
0650デフォルトの名無しさん
2006/02/23(木) 21:55:04$temp && baka, chinko $temp;
こんな処理を一時変数無しでやることってできますかね?
できたからってどうってことないと言えばどうってことないんですが…気分的に
返ってくる値が true のときだけ事前処理をしたいんです
0651デフォルトの名無しさん
2006/02/23(木) 21:55:430652デフォルトの名無しさん
2006/02/23(木) 21:56:09perldoc perl
と入力(もちろんリターンorエンターも)
perl に関するドキュメントファイルの紹介文が
ずらずら表示されるので、それを読んで
自分が知りたい情報が含まれていそうな
ドキュメントの名前を確認
仮に、perlrun というドキュメントが臭うと思ったら
perldoc perlrum
と入力(もちろんリターンorエンターも)
すると目的のドキュメントが表示される
なんで、こんなこと書かなきゃならんのさ
0653デフォルトの名無しさん
2006/02/23(木) 22:08:06おまい優しいな
俺には真似できん
0654酩酊 ◆TWARamEjuA
NGNGNo documentation found for "Acme::MorningMusume".
0655デフォルトの名無しさん
2006/02/23(木) 22:30:02overload.pmを見てみそって言いたかったんだけど、その感じだと見てないよね……。
そーいやApacheとmod_perlのバージョンを聞いてなかった。
どれ?
#僕はその現象にあたったことがないんで、参考までに。
0656デフォルトの名無しさん
2006/02/23(木) 22:57:35overload.pmはろくに見ていませんでした_no 読んできます・・・
perlは5.8.2と5.8.6 apacheは2.0.55 mod_perlは2.0.2です。
開発はCatalystでやっているのですが、Catalystのテストサーバーでも発生します。
Catalystのバージョンは5.57, 5.63 5.64, 5.65 で発生を確認しました。
Class::DBIは v3.0.12〜v3.0.14まで試しましたがすべてで発生するようです。
再現の方法としては、Class::DBIを使ってDBI中でdieするようなSQLを書くと
(たとえばintに対してtextでselectする等)それ以降、
my $data = MyCDBI::Table->retrieve(1);
if($data == 1) {
等とやった場合に、「if($data == 1) {」この部分で>>627のエラーが発生します。
発生した際に調べたところ、Class::DBIの作者自身「何でだろうね?」と言っているバグのようです。
(一緒に調べていた仲間がその記述を発見したため僕自身は確認しておりません)
0657デフォルトの名無しさん
2006/02/23(木) 23:21:48perldoc overload
ソースも見るには
perldoc -m overload
0658デフォルトの名無しさん
2006/02/23(木) 23:57:46ちなみに、自分で似たようなクラスを作って
overloadした場合は問題なしなの?
「Class::DBIのバグ」と書くからにはとーぜんやってるんだとは思うけど、
念のため。
0659デフォルトの名無しさん
2006/02/24(金) 00:00:09自分でoverloadを使ったクラスを作ってみたんですが、
再現することはできませんでした。
0660デフォルトの名無しさん
2006/02/24(金) 00:12:360661デフォルトの名無しさん
2006/02/24(金) 00:19:12確かにOKなのですが、
SQLも動的につくったりしてるために万が一発生するとシステムがダウンしてしまうのです。
0662デフォルトの名無しさん
2006/02/24(金) 00:20:400663デフォルトの名無しさん
2006/02/24(金) 00:44:170664633 635
2006/02/24(金) 02:04:40なんとなく読めるかなというレベルです。Encode.pmの実装に興味があった
のでお尋ねしております。
Encode.pmのソースを読むとfrom_toでは$Encoding{name}->encodeと
$Encoding{name}->decodeの組合せで実装されていることが判かりました。
しかし、$Encode{name}がどこで作られているのかが今だ判らない状態です。
Encode/JP/Makefile.PLにその節があるように思えるのですがよく判りません。
0665633 635
2006/02/24(金) 02:28:57のtarボールを見てみたらucmというディレクトリにUCS2へのマップを発見。
自己解決しました。
0666デフォルトの名無しさん
2006/02/24(金) 02:58:04手元で実験しているうちにどのモジュールが最初から入っていたのか
分からなくなってしまいました。
自分でperl -MCPANしていれたんだっけなぁ・・・。
0667デフォルトの名無しさん
2006/02/24(金) 03:07:18RHEL4は触ったこと無いがRHだからRPMでしょ
rpm -ql perlでパッケージに含まれていたファイル一覧が出てくるかと
0668デフォルトの名無しさん
2006/02/24(金) 07:48:39カスな質問はWeb板でやれよ
foreach (@INC){
print "$_\n";
}
でもすりゃわかる問題だろ
0669デフォルトの名無しさん
2006/02/24(金) 08:14:18RHEL3は標準で入ってました。
0670デフォルトの名無しさん
2006/02/24(金) 08:40:11/usr/lib/perl5/5.8.x/ に標準モジュール、
/usr/lib/perl5/vendor_perl/ に RPM パッケージ、
/usr/lib/perl5/site_perl/ にそれ以外が入っている。
標準モジュールのヴァージョン違いを入れると
/usr/lib/perl5/5.8.x/ のを上書きしたり
/usr/lib/perl5/site_perl/ に入ったりする。
0671666
2006/02/24(金) 14:16:02なんか、違う環境で
cpan> install POSIX
したらコンパイル始まって超焦ったのよ。
0672デフォルトの名無しさん
2006/02/24(金) 15:04:560673>>672
2006/02/24(金) 15:21:570674デフォルトの名無しさん
2006/02/24(金) 15:24:540675デフォルトの名無しさん
2006/02/24(金) 15:29:19Perlソースコードの中のコメントを全て削除して
すっきりさせるコード整形モジュールってありますか?
0676デフォルトの名無しさん
2006/02/24(金) 15:40:36--delete-all-comments
か?使ったことないんでよくわからん
0677デフォルトの名無しさん
2006/02/24(金) 16:03:39こちらの釣り堀は閉業しました〜さよなら〜〜
0678デフォルトの名無しさん
2006/02/24(金) 19:00:120679デフォルトの名無しさん
2006/02/24(金) 19:05:320680デフォルトの名無しさん
2006/02/24(金) 20:43:43オライリーの英語版ページをみていたら、
「Perl Best Practices」Damian Conway著
というのがあったのですが、
らくだ本読んでればこれはいらないですか?
出たのが2005/07ですから、
perl本にしては新しいのですが。
#さらに、近々同じ著者が「Perl Hacks」とか
いうのも出すみたい。
つくづく日本語圏に生まれたことを後悔してます
0681デフォルトの名無しさん
2006/02/24(金) 20:44:56Damian Conwayが誰か調べてみて決めてみるといいと思うよ
0682デフォルトの名無しさん
2006/02/24(金) 20:45:010683デフォルトの名無しさん
2006/02/24(金) 20:50:28買わずに後悔よりも、買って後悔
0684デフォルトの名無しさん
2006/02/24(金) 20:57:11> 「Perl Best Practices」Damian Conway著
>
> というのがあったのですが、
> らくだ本読んでればこれはいらないですか?
「いる」本などひとつもない。
# 『実用Perlプログラミング第2版』の翻訳出るけどね。
0685デフォルトの名無しさん
2006/02/24(金) 21:13:42以前Object Oriented Perl買って読んだけどまぁまぁだったな。
買って読んで講評をここでして呉れ給え。
0686デフォルトの名無しさん
2006/02/24(金) 21:23:13TTの訳本欲しいよう。
0687デフォルトの名無しさん
2006/02/24(金) 21:29:20原書にある索引を飛ばして、どうでもいい「BASIC」を入れた馬鹿どうしてるかなw
0688デフォルトの名無しさん
2006/02/24(金) 21:36:320689デフォルトの名無しさん
2006/02/24(金) 21:52:270690デフォルトの名無しさん
2006/02/24(金) 22:13:38http://www.oreilly.com/catalog/perlhks/?CMP=ILC-H2K675675382&ATT=perlhks
またハックシリーズが増えたつーことだな。
しかし Perl のハックって、モジュールの作り方とかか?
(その程度は全部他の本に載ってそうな・・・)
しかしハックシリーズはいっぱい出たな。これで売れちゃったりしたら
調子にのってそのうち全ての本に Hacks って付けちゃったりして。
0691デフォルトの名無しさん
2006/02/24(金) 22:16:35Business Hacks
・株価の上げ方
・投資会社の作り方
・逮捕されないために
・脱税の仕方
0692デフォルトの名無しさん
2006/02/24(金) 23:27:420694680
2006/02/25(土) 05:31:58目次みた限りではこれまでの本との違いがよくわからない。
>>686
欲しいですよねぇ。他にもMasonだとかmod_perlの本も
海外オライリーはあるんだよね。mod_perlはWebで全部読めるのだけど、
一日3ページくらいが限界です・・・
#perlと関係ないんだけど、海外オライリーに
Subclassing and Hooking with Visual Basic
なんてのがあった。異色作?
0695デフォルトの名無しさん
2006/02/25(土) 11:09:30多人数でスタイルを統一するときはとりあえずこれを標準にしてます。PPI モ
ジュールを使って,このスタイルに適合してるかチェックするPerl::Critic モ
ジュールもイイ。
0697デフォルトの名無しさん
2006/02/25(土) 15:24:23なんで変なとこで改行してるんだ?
0698デフォルトの名無しさん
2006/02/25(土) 15:47:340699デフォルトの名無しさん
2006/02/25(土) 15:54:130700デフォルトの名無しさん
2006/02/25(土) 16:13:48どうでもいいですね
仕事に戻ります
0701デフォルトの名無しさん
2006/02/25(土) 16:28:580702デフォルトの名無しさん
2006/02/25(土) 16:29:470703酩酊 ◆TWARamEjuA
NGNG0704デフォルトの名無しさん
2006/02/25(土) 17:49:54なんか2chで作者が金を使い果たしたとか書いてあるけどデマだよね?
ラリーウォールってオライリーの社員だから金はあるはずだよな?
オライリーは資金提供してないのかな
0705デフォルトの名無しさん
2006/02/25(土) 17:55:19じゃあYAPCで質問してくるよ
0706デフォルトの名無しさん
2006/02/25(土) 18:16:43staticなメンバ変数ってできますかね?
0707デフォルトの名無しさん
2006/02/25(土) 18:23:27Class::Data::Inheritable とかかな?
(メンバ変数と言われてもピンとこない駄目っぷり)
0708デフォルトの名無しさん
2006/02/25(土) 18:24:32LarryはとっくにO'Reilly解雇されてますが
0709デフォルトの名無しさん
2006/02/25(土) 18:33:10会社でちょっとしたツールつくっても人に配るときに、Perlインストール
してもらうのは手間で。
0710デフォルトの名無しさん
2006/02/25(土) 18:42:550711デフォルトの名無しさん
2006/02/25(土) 18:49:21for (my $i = 0; $i < 10; $i++) {
sleep(1);
print $i . " ";
}
とした場合、10秒待ってから一気にprintを実行してしまうのですが、
これを1秒毎に実行させるにはどうしたら良いですか?
Perlは今週習い始めたばかりの超初心者です。
0712デフォルトの名無しさん
2006/02/25(土) 18:57:15>とした場合、10秒待ってから一気にprintを実行してしまうのですが、
そう見えているだけ。 $|++; をスクリプトの先頭に入れ名。
ttp://www.google.com/search?hl=ja&q=perl+%E7%89%B9%E6%AE%8A%E5%A4%89%E6%95%B0&lr=lang_ja
0713デフォルトの名無しさん
2006/02/25(土) 20:49:58解決しました。どうも有難うございました。
Perlの特殊変数ってややこしいですね。
0714デフォルトの名無しさん
2006/02/25(土) 21:14:08ttp://search.cpan.org/dist/PAR/
0715デフォルトの名無しさん
2006/02/25(土) 22:57:44現在は、こんな風に書いてます。
open FILE, "<:encoding(utf-8)", "file.txt" or die;
while (<FILE>) {
$content .= $_;
}
close FILE;
ループで、一行ずつ連結していく方法よりも、もっとすっきりと書く方法ってありますでしょうか。
0716デフォルトの名無しさん
2006/02/25(土) 23:14:23ファイルは普通の言語はread関数でバッファ変数に読み込む
だからread関数をググルかマニュアルで調べたらすぐわかる
whileで読むのはPerlぐらいか?
0717デフォルトの名無しさん
2006/02/25(土) 23:16:25どんなのがありますか?
TerapadとかXyzzyだと適当に書いてると整形せずにゴチャゴチャになるし
VS2003みたいに文章をカットアンドペーストしたら自動的に整形してくれるような
エディタがほしいんだけど。
0718デフォルトの名無しさん
2006/02/25(土) 23:18:27xyzzyでゴチャゴチャになるってどんな書き方してるんだ…
一応 M-x indent-region で整形されるけど、望みの手軽さではないんだろうな
0719デフォルトの名無しさん
2006/02/25(土) 23:36:08while()はただのループ。
一行読み込み処理をやってるのは、<FILEHANDLE>の方。
C言語の一行毎の処理はPerlと似ている。
while( fgets(buf, n, fp) ){
// なんらかの処理
}
0721715
2006/02/25(土) 23:49:06すみません具体的にはどういう風に書けばいいですか?
read を使う場合、あらかじめファイルサイズが分かっていないと、
「全部読む」は出来ないと思うのですが、その点は合ってますでしょうか。
こういうことでしょうか。
$size = -s $filename; #あらかじめファイルサイズを調べておく
open FILE, "<$filename";
read FILE, $content, $size;
close FILE;
0722デフォルトの名無しさん
2006/02/26(日) 00:03:41別に予め調べる必要は無い。
open FILE, '<' . $filename or die $!;
read FILE, my $content, -s FILE;
close FILE;
参考: http://www.sysarch.com/Perl/slurp_article.html
0723デフォルトの名無しさん
2006/02/26(日) 00:45:04readで読む方法が人気のようだけど漏れは$/をundefする方がPerl的だと思う。
open my $fh, $filename or die $!;
undef $/;
my $content = <$fh>;
close $fh;
0724デフォルトの名無しさん
2006/02/26(日) 01:22:300725デフォルトの名無しさん
2006/02/26(日) 01:23:35my $content = join("\n", <$fh>);
close $fh;
0726デフォルトの名無しさん
2006/02/26(日) 01:28:170727デフォルトの名無しさん
2006/02/26(日) 01:32:17その場合join '', <$fh>じゃないとまずくね?
0728デフォルトの名無しさん
2006/02/26(日) 01:39:39WEB板が嫌ならネットワーク初心者に移れよwww
0729デフォルトの名無しさん
2006/02/26(日) 01:43:41Benchmark: timing 5000 iterations of join_t, read_t, undef_t, while_t...
join_t: 4 wallclock secs ( 2.86 usr + 0.87 sys = 3.73 CPU) @ 1339.05/s (n=5000)
read_t: 8 wallclock secs ( 2.03 usr + 4.92 sys = 6.95 CPU) @ 719.01/s (n=5000)
undef_t: 2 wallclock secs ( 0.23 usr + 0.86 sys = 1.09 CPU) @ 4574.57/s (n=5000)
while_t: 2 wallclock secs ( 0.95 usr + 1.00 sys = 1.95 CPU) @ 2558.85/s (n=5000)
10MB
Benchmark: timing 10 iterations of join_t, read_t, undef_t, while_t...
join_t: 22 wallclock secs (20.28 usr + 0.48 sys = 20.77 CPU) @ 0.48/s (n=10)
read_t: 10 wallclock secs ( 2.77 usr + 6.61 sys = 9.38 CPU) @ 1.07/s (n=10)
undef_t: 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
(warning: too few iterations for a reliable count)
while_t: 1 wallclock secs ( 1.36 usr + 0.22 sys = 1.58 CPU) @ 6.34/s (n=10)
ちなみに、'<' . $filenameよりも"<$filename"の方が見やすくて早いです><
0730デフォルトの名無しさん
2006/02/26(日) 02:51:190731デフォルトの名無しさん
2006/02/26(日) 02:57:33乙
joinはありえないね。ファイル大きくなると。
配列できてから繋ぐんだから。
スクリプト言語の弱点はループなので while も遅い。
whleのソースが >>715 みたいのだと、スカラの連結で更にコストがかかる。
undefするのが一番低レベルでガバッと読んでる事になると思う。
readは何でだろね。Cにそのまま渡ってる訳じゃないからかなぁ。
0732デフォルトの名無しさん
2006/02/26(日) 02:57:56ではなかったときに何も読めずに終るかも知れない (-s の時の内部での
stat() が失敗するかも知れない)。>>723なら大丈夫だと思うが、なんと
なく可読性悪い感じしない? Perl 的といえば Perl 的だが。
0733デフォルトの名無しさん
2006/02/26(日) 03:16:54まぁそんなもん。全員がこれに従えばかなり統一感がでるし,宗教戦争も未然
に回避できる。おーざっぱな構成は,まずベストプラクィスがきて,良い例,
悪い例,なぜ良いか?なぜ悪いか?の説明。
--------------------------
2.2 キーワード
制御キーワードは続く開き括弧と分離せよ
○イイ while ($min < $max) {
×マズー while($min < $max) {
理由:見やすいから
--------------------------
まぁ,ある程度の Perl ハカーでDamian を知らない奴もいないだろうから,多
少不満があっても皆従うしな。逆に「Damian ? ダレそれ?」とか「俺スタイル
のほうが絶対いい」ってやつは半可通か協調性ないやつなのでプロジェクトか
らは外すが吉。
>>697
698 の言うとおりす
0734デフォルトの名無しさん
2006/02/26(日) 03:20:01235,146bytesのファイル
Benchmark: timing 5000 iterations of join_t, read_t, undef_t, while_t...
join_t: 28 wallclock secs (23.09 usr + 4.77 sys = 27.86 CPU) @ 179.47/s (n=5000)
read_t: 7 wallclock secs ( 3.02 usr + 3.31 sys = 6.33 CPU) @ 790.14/s (n=5000)
undef_t: 7 wallclock secs ( 3.52 usr + 3.56 sys = 7.08 CPU) @ 706.31/s (n=5000)
while_t: 15 wallclock secs (11.53 usr + 3.69 sys = 15.22 CPU) @ 328.56/s (n=5000)
timethese(5000,{
undef_t => sub {local $/;open my $fh, $filename or die $!;my $content = <$fh>;close $fh;},
read_t => sub {open my $fh, $filename or die $!;read $fh, my $content, -s $fh;close $fh;},
join_t => sub {open my $fh, $filename or die $!;my $content = join '', <$fh>;close $fh;},
while_t => sub {my $content = '';open my $fh, $filename or die $!;while (<$fh>) {$content .= $_;}close $fh;},
});
0735デフォルトの名無しさん
2006/02/26(日) 03:31:580736デフォルトの名無しさん
2006/02/26(日) 03:46:280737デフォルトの名無しさん
2006/02/26(日) 03:47:350738デフォルトの名無しさん
2006/02/26(日) 03:48:240739デフォルトの名無しさん
2006/02/26(日) 03:49:000740デフォルトの名無しさん
2006/02/26(日) 03:58:56my宣言されてるかとかlocal宣言されてるかとか
スコープがループ内だけか外から続いてるかとか。
0741デフォルトの名無しさん
2006/02/26(日) 04:03:050742デフォルトの名無しさん
2006/02/26(日) 05:42:25特に要らんでしょ。
実行環境とコードってんなら、あれば参考にもなるけどさ。
0743デフォルトの名無しさん
2006/02/26(日) 05:59:380744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
2006/02/26(日) 08:44:10この例だとバッファリングの恩恵はほとんど無いし。
0746デフォルトの名無しさん
2006/02/26(日) 10:18:02野生の厳しさだよな
0747デフォルトの名無しさん
2006/02/26(日) 12:08:10たぶん、>>729のreadが遅いのは、WindowsやMac等を使って改行変換モード
でファイルを読みこんでいるから。
例えばWindowsだと、open $fh,'<',$file と open $fh,'<:raw',$file で
readの速度が20倍は違う。(ActivePerl 5.8.7)
0748デフォルトの名無しさん
2006/02/26(日) 12:20:180749デフォルトの名無しさん
2006/02/26(日) 15:44:54つ GD::Graph
0750デフォルトの名無しさん
2006/02/26(日) 16:16:11>Windows環境なんですがPerlのコードをインデントしたり整形してくれるエディタって
>どんなのがありますか?
つ「Perl書くのにどんなエディタ使ってる?」
http://pc8.2ch.net/test/read.cgi/php/1014357485/l50
0751デフォルトの名無しさん
2006/02/26(日) 16:17:02Graphの機能を使って自分で作っていくしかないんでしょうか?
もしそうだとすると、かなりの時間がかかってしまいますよね?
0752デフォルトの名無しさん
2006/02/26(日) 16:35:500753デフォルトの名無しさん
2006/02/26(日) 16:45:530754デフォルトの名無しさん
2006/02/26(日) 16:49:100755デフォルトの名無しさん
2006/02/26(日) 17:12:44すいません。
辞書片手に検索してみます
0756デフォルトの名無しさん
2006/02/26(日) 17:19:01GD::Graph だと、デフォルトグラフ以外は結構手が入ると思う
Perlじゃないけど、gnuplotで株価チャートっぽいのが書けた気がするので
これを呼ぶのがいいんじゃないかな。
ググったらこんなページがあった
http://www.gnuplot.info/demo/candlesticks.html
0757デフォルトの名無しさん
2006/02/26(日) 17:21:060758デフォルトの名無しさん
2006/02/26(日) 18:15:28win32 OLE でデータをExcelにはいて、グラフ作成させれば?
0759デフォルトの名無しさん
2006/02/27(月) 00:14:14いくら変更しても、実引数には影響を与えないということらしいのですが、
下記のようにやると、実引数が変更できてしまうのはなぜでしょうか。
@array = 1..5;
func(@array);
print "@array\n";
sub func{
for(@_){
$_ += 1;
}
}
0760デフォルトの名無しさん
2006/02/27(月) 00:23:03>いくら変更しても、実引数には影響を与えないということらしいのですが、
あなたの聞いた、この噂が間違っています。
0761759
2006/02/27(月) 00:27:12sub func{
shift @_;
}
のようなことをしても、実引数には影響ないのに、
>>759みたいにすると影響があるのでしょうか。
何が違うのでしょう。
0762デフォルトの名無しさん
2006/02/27(月) 00:31:32see "perlsub" manpgae.
The array @_ is a local array, but its elements are aliases
for the actual scalar parameters.
0763759
2006/02/27(月) 00:36:57ありがとうございました。
0764デフォルトの名無しさん
2006/02/27(月) 00:46:27ちょっと分かりにくい。
foreach とかでの要素変更もそうだけどさ。
>>759
では、引数をそのまま for ループに渡してる。
このループでの要素変更は、元要素の変更になる。
ということで
結局サブルーチンに渡した配列要素が変更されちゃう。
0765デフォルトの名無しさん
2006/02/27(月) 00:57:050766デフォルトの名無しさん
2006/02/27(月) 01:03:270767デフォルトの名無しさん
2006/02/27(月) 01:15:120768デフォルトの名無しさん
2006/02/27(月) 01:45:30でないんじゃないかって話もあるくらいで。
0769デフォルトの名無しさん
2006/02/27(月) 03:38:170770デフォルトの名無しさん
2006/02/27(月) 03:52:36正規表現もかなり変わるらしい
0771デフォルトの名無しさん
2006/02/27(月) 05:15:33なるらしいよ。文法の互換性を捨てるとか。
実行環境も Java みたいに仮想マシン上で動くようにするらしい。
するとやはりそのうち Perl 5 をその仮想マシン用バイトコードに
コンパイルして動かすやつが出て来るだろうな。
そしてあらゆるOSで仮想マシンが動くようになったら世界征服完了。
0772デフォルトの名無しさん
2006/02/27(月) 05:37:47> Perl 5 をその仮想マシン用バイトコードに
Ponieってプロジェクト名で既にやってる。
perl5上でPerl6::*モジュール群を使うとPerl6風味が楽しめるよ
0773デフォルトの名無しさん
2006/02/27(月) 07:39:24Perl5 も仮想マシン用バイトコードにコンパイルしてから動いている件について
0774デフォルトの名無しさん
2006/02/27(月) 09:26:306は何が変わってくるんだ? コンパイル出来るとかだったら嬉しいけどな。
0775デフォルトの名無しさん
2006/02/27(月) 13:37:09perl5でもできる(やってる)わけだが、
コンパイルできると何が嬉しいんだ?
0776デフォルトの名無しさん
2006/02/27(月) 13:56:000777デフォルトの名無しさん
2006/02/27(月) 14:19:47,-┐
,ィ─、ri´^-─- 、 .┌f^f^f^f^f^f^f^f^f^┐
く / , ,' ヽ ヽ| ~ ~ ~ ~ ~ ~ ~ ~ ~│
`<' / ,'レイ+tVvヽ!ヽト 知ってるが │
!/ ,' i |' {] , [}|ヽリ お前の態度が |
`!_{ iハト、__iフ,ノリ,n 気に入らない |
// (^~ ̄ ̄∃_ア____n_____|
_r''‐〈 `´ア/トr──!,.--'
<_>─}、 `」レ
'ヽ、 ,.ヘーァtイ
Y、.,___/ |.|
| i `ー'i´
0778デフォルトの名無しさん
2006/02/27(月) 14:33:030779デフォルトの名無しさん
2006/02/27(月) 16:39:300780デフォルトの名無しさん
2006/02/27(月) 23:45:00print "\x0a";
は、1バイト出力すると思ったのですが、
実際にやってみると2バイト出力します。
環境によって違ってくるものなのでしょうか。
かんきょー:
win98
C:\My Documents>perl -v
This is perl, v5.8.7 built for MSWin32-x86-multi-thread
(with 14 registered patches, see perl -V for more detail)
Copyright 1987-2005, Larry Wall
Binary build 815 [211909] provided by ActiveState http://www.ActiveState.com
ActiveState is a division of Sophos.
Built Nov 2 2005 08:44:52
0781デフォルトの名無しさん
2006/02/27(月) 23:50:140782780
2006/02/28(火) 00:09:51print "\x0a";
これでちゃんと1バイト出力するようになりました。
0783デフォルトの名無しさん
2006/03/01(水) 02:14:56互換性ないとか、いろいろ変わっちゃうとかで、むなしくなるな・・・。
0784デフォルトの名無しさん
2006/03/01(水) 02:22:57CPANにあるライブラリの山はponieでParrotのコードに変換して
perl6から呼ぶって感じになるんだろうか
0785デフォルトの名無しさん
2006/03/01(水) 02:26:15> 今、ラクダ本等を買い込んで必死に5.8勉強してるのに、6になったら
> 互換性ないとか、いろいろ変わっちゃうとかで、むなしくなるな・・・。
5系と6を使えるようになるからいいじゃん。
0786デフォルトの名無しさん
2006/03/01(水) 02:27:25まだ心配する必要はないし無駄にもならない。
0787デフォルトの名無しさん
2006/03/01(水) 02:27:470788デフォルトの名無しさん
2006/03/01(水) 02:32:40あれもこれもやっとけ。
0789デフォルトの名無しさん
2006/03/01(水) 02:41:260790デフォルトの名無しさん
2006/03/01(水) 02:50:55まずそのために予算取らなきゃいけないし。
0791デフォルトの名無しさん
2006/03/01(水) 04:44:37楽しくて仕方がない。
0792デフォルトの名無しさん
2006/03/01(水) 07:35:06楽観しすぎ?
いまだに5.005_03な鯖も生存していることだし
0793デフォルトの名無しさん
2006/03/01(水) 07:59:54続、初めてのperlという本に載っていたサンプルコードです。
どなたかご教授願えませんか?
my @input = qw(Gilligan Skipper Professor Ginger Mary_ann);
my @sorted_positions = sort { $input[$a] cmp $input[$b] } 0..$#input;
my @ranks;
@ranks[@sorted_positions] = (0..$#sorted_positions); ##この部分
print "@ranks\n";
0794デフォルトの名無しさん
2006/03/01(水) 08:37:520795デフォルトの名無しさん
2006/03/01(水) 10:14:45俺もそう思う。
oopなら先発のpythonやrubyのほうがこなれてるし、レガシーに関数で
ごりごりやるなら5.8xでOKだしなあ。
マイナーアップでencoding周りをもちっと洗練されてくれば6イラネ。
/bin入りを果たしてsedやawk、shスクリプトに置き換わるためにも
このまま枯れて欲しい。
0796デフォルトの名無しさん
2006/03/01(水) 12:00:16今のPerlの位置から遠ざかりRubyとかpythonの位置になりそうだね。
ある程度のPerlerにはそんなこと関係ないけど。
0797デフォルトの名無しさん
2006/03/01(水) 12:29:16> マイナーアップでencoding周りをもちっと洗練されてくれば6イラネ。
> /bin入りを果たしてsedやawk、shスクリプトに置き換わるためにも
> このまま枯れて欲しい。
現実には、Perlスクリプトがバイナリやshスクリプトに置き換えられているけどな。
0798デフォルトの名無しさん
2006/03/01(水) 13:45:47Perlはプリプロセッサっていうのも売りのひとつだと思うんだけど、そんなんで普及するのかね。
いちいちコンパイルさせられるんだと、コマンドラインから使いづらい気がする。
5系と6系で別々に開発進んで欲しい。
0799デフォルトの名無しさん
2006/03/01(水) 13:50:21@ の変数に $# 付けた場合は添字の最大値。
my @a = (1, 2, 3); の場合 $#a は 2。
0800デフォルトの名無しさん
2006/03/01(水) 13:53:19>>799じゃ説明足りないか。
で、0..$#sorted_positions の .. の部分はリストを作る演算子で、
たとえば 5..8 というのは (5, 6, 7, 8) と同じ。
なので問題の部分は 0 から $#sorted_positions までのリストを
作る。$# については >>799 の通り。
0801デフォルトの名無しさん
2006/03/01(水) 15:28:42$#とリスト演算子は2行上にも出てきていてそちらは理解している
というのだから、わからないのはスライスじゃないか?
0802デフォルトの名無しさん
2006/03/01(水) 15:38:59あ、そうか。スライスか。
でももうめんどくさいから解説は君に任せた。
0803デフォルトの名無しさん
2006/03/01(水) 15:58:54「perl スライス」でぐぐりゃ解説ぐらい探せるだろう。
0804デフォルトの名無しさん
2006/03/01(水) 16:04:30おおお、>>793じゃないですが、スライス知らなかったので勉強になりました。
ぐぐったらトップにスライスの解説が出てきました。
>>793に変わってありがとうございます。
0805ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/01(水) 16:17:12基本的には parrot で動くインタプリタ。
まったく同じソースから parrot のライブラリとか、必要なものをリンク
すれば実行ファイルも作れる。
0806デフォルトの名無しさん
2006/03/01(水) 19:44:010807793
2006/03/01(水) 20:41:59配列スライスは
@array1[@array2]
みたいな書き方もできるのですね。
もう一度、スライスについて説明した
項目を読み返してみます
0808デフォルトの名無しさん
2006/03/01(水) 21:49:29ちょっとまともな奴ならperlで組もうとは思わない。
0809デフォルトの名無しさん
2006/03/01(水) 22:00:00だったらsmalltalkっぽいRuby使うよ。
0810デフォルトの名無しさん
2006/03/01(水) 22:33:050811デフォルトの名無しさん
2006/03/01(水) 22:37:31稀にSolarisの仕事とかやるとPerlは入ってるけど、Rubyは入ってないんで萎える。
Perlは結構、どこの環境でも動かせるので気に入ってる。
0812デフォルトの名無しさん
2006/03/01(水) 22:42:26わからない所があるので質問させてください。
system('netstat');で実行したプロンプトの内容をperlにテキスト形式で取り込んで整形する事は可能でしょうか?
例えば、下記の方法では
$name = system('netstat');
0が返ってきます。
0813デフォルトの名無しさん
2006/03/01(水) 22:45:320814デフォルトの名無しさん
2006/03/01(水) 22:46:19perlopのqx/STRING/の所参照
$name = `netstat`;
0815デフォルトの名無しさん
2006/03/01(水) 23:23:22マジで頼りになります。有難うございます
0816デフォルトの名無しさん
2006/03/02(木) 01:40:02ありますか?CPANとかで見てみたけどよくわからなかったです。
0817デフォルトの名無しさん
2006/03/02(木) 01:58:59これ?化学は門外漢だから違ってたらごめんね。
http://search.cpan.org/~itub/Chemistry-File-MDLMol-0.20/SDF.pm
0818デフォルトの名無しさん
2006/03/02(木) 12:07:250819デフォルトの名無しさん
2006/03/02(木) 12:42:11sub htonl { unpack("N",pack("L",shift)) }
sub htons { unpack("n",pack("S",shift)) }
sub ntohl { unpack("L",pack("N",shift)) }
sub ntohs { unpack("S",pack("n",shift)) }
0820デフォルトの名無しさん
2006/03/02(木) 13:08:40サンクス!!
0821デフォルトの名無しさん
2006/03/02(木) 14:07:01できるっていうか
@a[4..8] とか @a[2, 4, 8] とかができるんだから
@a[@b] ができないわけがない。
@b = (2, 4, 8);
@c = @a[@b];
というのと
@c = @a[2, 4, 8];
で @c に入るものは同じだ。
0822デフォルトの名無しさん
2006/03/02(木) 14:49:04言いたい事はわかるが、この場合に
「〜とかができるから〜もできないわけがない」は強引すぎる。
0823デフォルトの名無しさん
2006/03/02(木) 15:14:43むしろ、それなんのAA?の領域まで達しているな
0824デフォルトの名無しさん
2006/03/02(木) 15:27:330825デフォルトの名無しさん
2006/03/02(木) 15:35:480826デフォルトの名無しさん
2006/03/02(木) 15:49:07http://pc8.2ch.net/test/read.cgi/tech/1121804136/921
0827デフォルトの名無しさん
2006/03/02(木) 17:02:44DAT落ちしてるけど何て書いてあった?
0828デフォルトの名無しさん
2006/03/02(木) 17:16:20○○嫁っていうの、文系DQNみたいでなんかいや
0829デフォルトの名無しさん
2006/03/02(木) 17:23:43m9(^Д^)プギャー
0830デフォルトの名無しさん
2006/03/02(木) 18:01:120831デフォルトの名無しさん
2006/03/02(木) 19:08:350832デフォルトの名無しさん
2006/03/02(木) 19:23:08説明しにくいけど、ただの汚いPerlソースが書いてあった。
にくちゃんねるにあるキャッシュ ttp://makimo.to/2ch/pc8_tech/1121/1121804136.html#921
0833デフォルトの名無しさん
2006/03/02(木) 19:27:50> 三角比のをラジアン単位じゃない方法で表示する方法ある?
はい。
0834デフォルトの名無しさん
2006/03/02(木) 19:39:45悪いが教えてください
0835デフォルトの名無しさん
2006/03/02(木) 19:42:58何をだよ?
0836デフォルトの名無しさん
2006/03/02(木) 19:44:43つりは放置しろ。相手スンナ!
0837デフォルトの名無しさん
2006/03/02(木) 20:05:20ラジアン単位を数学などで使ったときのsinやcosの値にする方法です。
0838デフォルトの名無しさん
2006/03/02(木) 20:39:0912と34の2桁に分割するにはどのように書けば良いか教えてください。
いったん一桁ずつにバラして、2桁ずつに結合するしか思いつきません。。
0839デフォルトの名無しさん
2006/03/02(木) 20:45:54もしかして、π≒3.14 → 180 って関数がほしいってことか?
0840デフォルトの名無しさん
2006/03/02(木) 21:08:042桁づつに分割するといいよ。
0841デフォルトの名無しさん
2006/03/02(木) 21:13:07100で割って商と余りにわける
0843デフォルトの名無しさん
2006/03/02(木) 21:35:130844デフォルトの名無しさん
2006/03/02(木) 22:08:31この-aaaaの部分だけ取り除きたいときはどうすれば良いですか?
****-は固定じゃなくて、****-****-aaaaだったり、
****-****-****-****-aaaaだったりします。
****には英数字記号が入ります。
0845デフォルトの名無しさん
2006/03/02(木) 22:09:060846デフォルトの名無しさん
2006/03/02(木) 22:13:360847デフォルトの名無しさん
2006/03/02(木) 22:14:040848デフォルトの名無しさん
2006/03/02(木) 22:27:53$string =~ s/-....$//;
print $string;
0849デフォルトの名無しさん
2006/03/02(木) 22:37:08# マッチングして別変数に保存
my($str) = ($expr =~ /(¥-¥w{4})$/);
# 英数文字とか関係なく必ず末尾の5文字なら
my $str = substr($expr, -5, 5);
0850デフォルトの名無しさん
2006/03/02(木) 22:53:58ありがとうございます!みなさんから見たら基本中の基本でしょうけど..
まだ勉強中で正規表現をどう書けば良いか分からなくて途方に暮れてました。
感謝感謝です。
0851デフォルトの名無しさん
2006/03/02(木) 23:03:56それなら >>848 で良いや。
0852デフォルトの名無しさん
2006/03/02(木) 23:30:370854デフォルトの名無しさん
2006/03/03(金) 02:10:18$deg = $rad * 45 / atan2(1, 1);
0855デフォルトの名無しさん
2006/03/03(金) 02:59:110856デフォルトの名無しさん
2006/03/03(金) 10:30:420857デフォルトの名無しさん
2006/03/03(金) 15:12:59>>855
それだとdegreeにしか換算できないじゃん。
0858デフォルトの名無しさん
2006/03/03(金) 15:34:01元の質問の意味がよくわからんけどな。
> 三角比のをラジアン単位じゃない方法で表示する方法ある?
> ラジアン単位を数学などで使ったときのsinやcosの値にする方法です
0859デフォルトの名無しさん
2006/03/03(金) 16:05:06質問者がどんどん堕落して、意味が良くわからない曖昧な質問ばかりになる。
0860デフォルトの名無しさん
2006/03/03(金) 17:38:12俺が考えた単位に変換でいいならあるぞ。
sub sankakuhi2orenoougonhi($){
return ($_[0]) ? 7 : 3 ;
}
一番うつくしいとされる7:3の比を返すのだ。ってこれ比なのか。
0861デフォルトの名無しさん
2006/03/03(金) 19:12:38確信犯なのか、バカなのか。
print ( 860 ? 'ばか' : '確信犯' ), "\n";
0862デフォルトの名無しさん
2006/03/03(金) 19:49:47return 'およそ3';
}
0863デフォルトの名無しさん
2006/03/03(金) 20:03:220866デフォルトの名無しさん
2006/03/04(土) 04:33:450867860
2006/03/04(土) 04:47:53>print (...) interpreted as function at test.pl line 1.
>Useless use of a constant in void context at test.pl line 1.
>ばか
おんや。警告がでてるだけか。最後を見逃してました。こりゃ失礼。
0868デフォルトの名無しさん
2006/03/04(土) 10:32:26print +( 860 ? 'ばか' : '確信犯' ), "\n";
のようにした方がいいのは確かだ。
んなコード誇られてもねぇ。
0869デフォルトの名無しさん
2006/03/04(土) 12:00:050870デフォルトの名無しさん
2006/03/04(土) 12:14:19ある。
0871デフォルトの名無しさん
2006/03/04(土) 12:19:11WWW::2ch - scraping of a popular bbs of Japan.
http://search.cpan.org/~yappo/WWW-2ch/
というのがあった。
0872デフォルトの名無しさん
2006/03/04(土) 12:49:380873デフォルトの名無しさん
2006/03/04(土) 17:27:23これは危険なモジュールですね
0874デフォルトの名無しさん
2006/03/04(土) 17:30:590875デフォルトの名無しさん
2006/03/04(土) 17:38:500876デフォルトの名無しさん
2006/03/04(土) 17:57:08いやここは、CPANのモジュールを使った方がいいと思う
0877デフォルトの名無しさん
2006/03/04(土) 18:41:05なかなか良いレスだと思った。
0878デフォルトの名無しさん
2006/03/04(土) 19:17:00>>875 じゃないけど、perl -Dr -e '/REGEX/' でコンパイル結果を見て
速度を類推するといいよ。
0879デフォルトの名無しさん
2006/03/04(土) 19:49:09Recompile perl with -DDEBUGGING to use -D switch (did you mean -d ?)
0880デフォルトの名無しさん
2006/03/05(日) 00:07:130881デフォルトの名無しさん
2006/03/05(日) 00:38:27俺も同じだ
素のCygwin
0882酩酊 ◆TWARamEjuA
NGNG$ perl -v
This is perl, v5.8.6 built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)
0883デフォルトの名無しさん
2006/03/05(日) 06:22:45Recompile perl with -DDEBUGGING to use -D switch
0884デフォルトの名無しさん
2006/03/05(日) 12:50:54URLの%8E%BF%96%E2という部分の文字列をデコードすると質問という文字列になるのはわかっているんですが
反対にPerlで質問と言う文字列をを%8E%BF%96%E2にするにはどうすればいいんでしょうか?
0885デフォルトの名無しさん
2006/03/05(日) 12:52:010886デフォルトの名無しさん
2006/03/05(日) 13:18:400887デフォルトの名無しさん
2006/03/05(日) 13:30:17自作することにしました。
0888デフォルトの名無しさん
2006/03/05(日) 14:05:050889デフォルトの名無しさん
2006/03/05(日) 15:11:41perldoc読んだけどさっぱり使い道がわからん。
普通に-MCPAN -eshellとやるのとどう違うの?
0890デフォルトの名無しさん
2006/03/05(日) 15:57:19本当にそれをする価値があると考えているのだろうか
0891デフォルトの名無しさん
2006/03/05(日) 16:56:07んーと、Javaやってる人が移行する時に便利、とか?
(移行するかどうかはともかく)
0892デフォルトの名無しさん
2006/03/05(日) 16:58:550893デフォルトの名無しさん
2006/03/05(日) 19:15:030894デフォルトの名無しさん
2006/03/05(日) 19:18:390895デフォルトの名無しさん
2006/03/05(日) 19:37:390896デフォルトの名無しさん
2006/03/05(日) 20:36:15知ったかだけで、教える能力がないことはわかった。
0897デフォルトの名無しさん
2006/03/05(日) 22:28:580898デフォルトの名無しさん
2006/03/05(日) 22:37:430899デフォルトの名無しさん
2006/03/06(月) 00:57:03perl -Mre=debug -e '/regex/'
でどないだ?
'
0900デフォルトの名無しさん
2006/03/06(月) 01:02:58Freeing REx: `","'
となるけど・・・
by v5.8.7 built for MSWin32-x86-multi-thread
0901デフォルトの名無しさん
2006/03/06(月) 02:09:591年後には違う略語を連呼しているに違いない
0902デフォルトの名無しさん
2006/03/06(月) 04:35:37>>900
それだけしか表示されない場合用のヒント。
dir | perl -ne 'print'
と
dir | perl -ne "print"
の違いを確認。
0903デフォルトの名無しさん
2006/03/06(月) 05:37:26おお、こんな夜中にありがとう。
見れたけど見方が分からんかったorz
0904デフォルトの名無しさん
2006/03/06(月) 08:57:20うーん、MS-DOSはようわからん。
0905デフォルトの名無しさん
2006/03/06(月) 09:53:25Can't load '/usr/libdata/perl/5.00503/mach/auto/re/re.so' for module re: /usr/libdata/perl/5.00503/mach/auto/re/re.so: Undefined symbol "my_regcomp" at /usr/libdata/perl/5.00503/DynaLoader.pm line 169.
at -e line 0
BEGIN failed--compilation aborted.
0906デフォルトの名無しさん
2006/03/06(月) 10:32:170907デフォルトの名無しさん
2006/03/06(月) 10:36:51察しの悪い人でも、このレスに対する反応を見ればそれでわかると思うw
0908デフォルトの名無しさん
2006/03/06(月) 10:40:03知らない=悔しいですか?へぇ〜へぇ〜へぇ〜
知らないことを認める人間になりましょうね。
0909デフォルトの名無しさん
2006/03/06(月) 10:48:32確かにわかりやすいです
0910デフォルトの名無しさん
2006/03/06(月) 11:01:58Compiling REx `regex'
size 4 Got 36 bytes for offset annotations.
(ry
繋いでたCentOSの鯖で何気なくやってみたら動いた。
でも出てくる結果はuse re 'debug'と変わらんね。
ちなみにActivePerlではreプラグマのみ動作
0911デフォルトの名無しさん
2006/03/06(月) 11:57:50誰か研究してくれないかね
0912デフォルトの名無しさん
2006/03/06(月) 12:33:480913デフォルトの名無しさん
2006/03/06(月) 12:40:470914デフォルトの名無しさん
2006/03/06(月) 12:41:35俺と似たようなバージョン使ってる奴キターwww
>perl -v
This is perl, version 5.005_02 built for MSWin32-x86-object
0915デフォルトの名無しさん
2006/03/06(月) 12:41:430916デフォルトの名無しさん
2006/03/06(月) 12:45:260917デフォルトの名無しさん
2006/03/06(月) 12:56:49煽ってる暇があったらもっと生産的な事に時間を使ったほうがよいのではないだろうか。
0918デフォルトの名無しさん
2006/03/06(月) 13:53:000919デフォルトの名無しさん
2006/03/06(月) 15:46:12さてオナテク板でも覗いて来るか。
0920デフォルトの名無しさん
2006/03/06(月) 16:40:41煽り=遊び
遊びに生産性は無駄
0921デフォルトの名無しさん
2006/03/06(月) 16:42:23お前とお前の周りが生産性にあまりに無関心なだけ
0922デフォルトの名無しさん
2006/03/06(月) 18:29:20とりあえず急いで反応したんだろうね
0923デフォルトの名無しさん
2006/03/06(月) 18:34:100924デフォルトの名無しさん
2006/03/06(月) 18:47:500925デフォルトの名無しさん
2006/03/06(月) 19:20:420926デフォルトの名無しさん
2006/03/06(月) 20:04:530928デフォルトの名無しさん
2006/03/06(月) 21:01:040929デフォルトの名無しさん
2006/03/06(月) 21:19:46安心しろ。15年勉強している俺がここにいる。
0930デフォルトの名無しさん
2006/03/06(月) 22:15:26いいとこだと思ってるんだが・・・。勉強する価値はあるけどね
0931デフォルトの名無しさん
2006/03/06(月) 22:47:46心配するな。俺の職場では大活躍だ。
perlがなかったら、仕事中に2chを見る暇がなくなる。
0932デフォルトの名無しさん
2006/03/07(火) 00:33:50> Perl って、Practical って言葉の通り、とくに勉強しなくても使えるところが
> いいとこだと思ってるんだが・・・。勉強する価値はあるけどね
Perlがもともとターゲットとしていた人々は、特に勉強しなくても使えてる。
ただ現在になって、当時は想像することすらできなかったほど知的レベルが
低い連中もプログラミング言語に手を出すようになってきているだけ。
0933デフォルトの名無しさん
2006/03/07(火) 10:19:180934デフォルトの名無しさん
2006/03/07(火) 10:30:350935デフォルトの名無しさん
2006/03/07(火) 13:48:080936デフォルトの名無しさん
2006/03/07(火) 14:00:08設定終わってなくてミラー一覧を取得するところでこけるって事?
ttp://ftp.kddilabs.jp/CPAN/MIRRORED.BY
この辺りのミラーからMIRRORED.BYを拾ってきて
.cpan/sources/MIRRORED.BY
に配置すれば動いたはず
設定が終わってるならo conf urllistを適当に設定汁
0937デフォルトの名無しさん
2006/03/07(火) 17:37:02PerlとCどっちも勉強したけどPerlの方が難しいと思った
0938デフォルトの名無しさん
2006/03/07(火) 17:42:430939デフォルトの名無しさん
2006/03/07(火) 17:48:39エラーが起きても原因が全然見えてこない
0940デフォルトの名無しさん
2006/03/07(火) 17:52:05Cのほうがわかりやすいとおもう。開発すんのだりぃけど。
0941デフォルトの名無しさん
2006/03/07(火) 17:56:090942デフォルトの名無しさん
2006/03/07(火) 18:43:14OOPの学習の為にJavaをかじり、Perlに戻った。
その後、もう一度Cをやり直してPerlもどきを作り、Perlの凄さが分かった。
けど同時にPerlの宜しくない所もたくさん知ってしまい、、Rubyへ。
0943デフォルトの名無しさん
2006/03/07(火) 19:01:440944デフォルトの名無しさん
2006/03/07(火) 19:09:290945デフォルトの名無しさん
2006/03/07(火) 19:15:05> perl6 ってホントに出るの?
それはあなたの力次第。
0946デフォルトの名無しさん
2006/03/07(火) 19:21:32Live Doorに納品した
半金半手の手形もらって、その時は
まじびっくりした、でもその代金はなんとか、市中の金融やに回らずに
回収できた。
0947デフォルトの名無しさん
2006/03/07(火) 19:27:09Live Doorに納品した〜♪
半金半手の手形もらって、その時は〜♪
まじびっくりした、でもその代金はなんとか、市中の金融やに回らずに〜♪
回収できた〜♪
0948デフォルトの名無しさん
2006/03/07(火) 20:06:370949デフォルトの名無しさん
2006/03/07(火) 20:28:01大手でも部分的には使ってたりするし。
副業でサービスやるのにもお手軽でいい感じ。
0950デフォルトの名無しさん
2006/03/07(火) 20:39:08リプレースできるような言語も無いし。
ネットワーク系が多いかも。
0951デフォルトの名無しさん
2006/03/07(火) 20:46:35Windows環境でコンパイラが欲しいぐらい。なぜかperlcc云々はエラーでできないからあきらめてるが・・・
0952デフォルトの名無しさん
2006/03/07(火) 20:51:570953デフォルトの名無しさん
2006/03/07(火) 20:54:180954デフォルトの名無しさん
2006/03/07(火) 20:59:590955デフォルトの名無しさん
2006/03/07(火) 21:10:50知るかヴォケ
必要ならお前が作れ
さもなければ、必要とされていない
それだけのことだ
0956デフォルトの名無しさん
2006/03/07(火) 21:24:431) Perl で ls コマンドでも作ってみるか
2) ディレクトリ一覧を取得して stat()
3) なんか色々あるから Class::Struct で構造体に入れてみた
4) 各ファイルの構造体へのリファレンスを配列に入れてみた <---- いまここ
5) これどうやってソートすんだ?
配列の要素の構造体のメンバで配列をソート? ができないです。
なんか根本的に間違ってますカネ?
0957デフォルトの名無しさん
2006/03/07(火) 21:31:440958デフォルトの名無しさん
2006/03/07(火) 21:32:220959デフォルトの名無しさん
2006/03/07(火) 21:33:580960デフォルトの名無しさん
2006/03/07(火) 21:40:530961956
2006/03/07(火) 21:47:03でファイルを開くときは「 start ファイル名」とかやるんですけど、日本語の長い
ファイル名とかだと面倒じゃないですか。
それで dir の結果に番号が付いてて、続けてその番号を入れるとファイルが
開ける、みたいにしたら便利じゃね? と。
で番号 -> ファイル実行は出来たんで超便利なんですが、ソートできないから超不便。
0962デフォルトの名無しさん
2006/03/07(火) 21:53:180963デフォルトの名無しさん
2006/03/07(火) 21:53:20つ [タブ完成]
0964956
2006/03/07(火) 22:03:04いや話せばもっと長いんですが、コマンドラインって cmd.exe 直じゃなくて
C で書いたラッパーを使ってるんですよ。これも超便利なんだけど、ただ
タブ完成機能はないんです。やりかたわかんないから。
それで ls -> 番号 -> 実行機能もそのラッパーで実装しようと思ってたんですが、
忙しくてほったらかしてる内に C 忘れて代わりに Perl への愛に目覚めたんで、
これは Perl で作るか、と思ったとですよ。
もう俺の発想が根本的に間違ってるとかそういう話はいいから誰か教えてください。
0965デフォルトの名無しさん
2006/03/07(火) 22:09:460966デフォルトの名無しさん
2006/03/07(火) 22:13:18@sorted = sort { $a->{size} <=> $b->{size} @file_list;
うちのDOSの中の人はこんな感じ
0967デフォルトの名無しさん
2006/03/07(火) 22:14:49@sorted = sort { $a->{size} <=> $b->{size} } @file_list;
隣のDOSの中の人はこんな感じ
0968デフォルトの名無しさん
2006/03/07(火) 22:19:35> でも何でPerlにDIモジュールがないんだろうね。
あるよ。
0969酩酊 ◆TWARamEjuA
NGNGで、またぐたぐたになってCに戻って〜、、、ループなんだろうなぁ)
0970デフォルトの名無しさん
2006/03/07(火) 22:25:11> 1) Perl で ls コマンドでも作ってみるか
> 2) ディレクトリ一覧を取得して stat()
> 3) なんか色々あるから Class::Struct で構造体に入れてみた
バカじゃね?
> 4) 各ファイルの構造体へのリファレンスを配列に入れてみた <---- いまここ
> 5) これどうやってソートすんだ?
つ[シュワルツ変換]
0971デフォルトの名無しさん
2006/03/07(火) 22:28:44無いよ。ググっても出てこないんだから間違いない。
0972デフォルトの名無しさん
2006/03/07(火) 22:29:54ばか過ぎる……
0974デフォルトの名無しさん
2006/03/07(火) 22:39:010975デフォルトの名無しさん
2006/03/07(火) 22:39:58| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/ このスレレベル低下してるよあびゃばばば
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
0976デフォルトの名無しさん
2006/03/07(火) 22:50:20> @sorted = sort { $a->{name} cmp $b->{name} @file_list;
> @sorted = sort { $a->{size} <=> $b->{size} @file_list;
これは、無駄無駄無駄無駄なのでやってはいけない方法の筆頭。
0977デフォルトの名無しさん
2006/03/07(火) 22:54:32@sorted = sort {
$a->{name} cmp $b->{name}
|| $a->{size} <=> $b->{size}
} @file_list;
0978デフォルトの名無しさん
2006/03/07(火) 22:59:47馬鹿はお前。
試しにCPANで「DI」で検索してみろよ。
雑魚が。
0979デフォルトの名無しさん
2006/03/07(火) 23:03:30頭に虫でも湧いてるからなのか
http://search.cpan.org/search?query=Dependency+Injection&mode=all
0980デフォルトの名無しさん
2006/03/07(火) 23:04:490981デフォルトの名無しさん
2006/03/07(火) 23:17:58DIがもともとIOCと呼ばれていたのは知ってたし、
IOCモジュールには行き着いていた。
だが、DIモジュールがあると言い張るのであえて言わず
カマかけてたんだがな。
とりあえず、お前は俺の役に立ってくれたよ。ご苦労様w
0982デフォルトの名無しさん
2006/03/07(火) 23:22:04泣くな
0983デフォルトの名無しさん
2006/03/07(火) 23:24:460984デフォルトの名無しさん
2006/03/07(火) 23:31:38泣いてねーよ。むしろ喜んでるよ。
馬鹿は煽るとすぐ答えを出してくれる。
ちょろいもんよ。
0985デフォルトの名無しさん
2006/03/07(火) 23:39:2626 番組の途中ですが名無しです 2006/03/02(木) 20:17:21.48 ID:rmCOuDKh0
高校の頃にクラスのDQN共が良く俺にやきそばパン買い行ってくださいと頼んでたよ
しかもこいつら頭わりーから月に5千円渡すと何も危害加えてこなくなるし敬語で話しかけてくるしw
マジで手なずけるのちょろかったなぁ高校時代はww
0986デフォルトの名無しさん
2006/03/07(火) 23:42:570987デフォルトの名無しさん
2006/03/07(火) 23:44:54よし、漏れに任せろ
# これで三連だが
0988デフォルトの名無しさん
2006/03/07(火) 23:58:52次スレ
http://pc8.2ch.net/test/read.cgi/tech/1141742901/
0989デフォルトの名無しさん
2006/03/08(水) 00:18:08>>1の日付がそのままだけど乙
0990デフォルトの名無しさん
2006/03/08(水) 00:24:44しまった…スマソ
ふと気づいたが誘導に余計なmy付いてるな…
なんで三回使って気づかなかったんだろorz
# 初めmy $nextとやって$$self{next}に書き換えた記憶が
0991デフォルトの名無しさん
2006/03/08(水) 01:10:400992デフォルトの名無しさん
2006/03/08(水) 01:27:200993デフォルトの名無しさん
2006/03/08(水) 02:10:34アメリカまでの貨物船に潜んでアメリカまで行けばいいと思うよ。
0995デフォルトの名無しさん
2006/03/08(水) 03:21:15なぜ、shiftに+記号をつけられるの分かりません。
perlではリファレスンの値に+をつけると、参照先を
変えたり出来るんでしょうか?
{ package Barn;
sub new { bless [], shift }
sub add { push @{+shift}, shift }
sub contents { @{+shift} }
sub DESTROY {
my $self = shift;
print "$self is being destroyed...\n";
for ($self->contents) {
print " ", $_->name, " goes homeless.\n";
}
}
}
0996デフォルトの名無しさん
2006/03/08(水) 03:35:150997デフォルトの名無しさん
2006/03/08(水) 03:46:03ちょっとperldocからshiftの部分が関数呼び出しとみなされないと
書いてあるところを一緒に示せなくて申し訳ないけれど…
ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod
のSymbolic Unary Operators
> 単項演算子の "+" は、たとえ文字列に対して用いられた場合にも、何もしません。
> 関数名に続けて括弧付きの式を書く場合に、関数の引数リストと解釈されないようにするために用いることができます。
この場合は@{shift}と書くと@shiftだと解釈されるからそれを防ぐためにつけているわけ。
@{shift()}と書いても動くよ
0998デフォルトの名無しさん
2006/03/08(水) 04:14:59せっかく教えてくれたのに、よく分からなくて、本当にすいません。
@{shift}だと書くと、何で@shiftと解釈されちゃうんでしょうか?
0999デフォルトの名無しさん
2006/03/08(水) 04:27:26よくは知らないけれども、
${}や@{}や%{}でくくった最初の文字列が[_a-zA-Z]のどれかだと変数名とみなすのでしょう。
${aaa}だと$aaa。@{aaa}なら@aaa。%{aaa}なら%aaa。
${}の中身の最初に+を付けると、${}の中身は「式」とみなして、えーと、えーと、そんな感じ。
↓続きは次スレでどぞ
http://pc8.2ch.net/test/read.cgi/tech/1141742901/
1000やったよ!人生はじめての1000だよ!
2006/03/08(水) 04:29:12`⌒丶、'ー-、_ + 十
 ̄\―ヽ._ 二_‐-
\ \  ̄ ‐-  ̄二二_ ―_,r'⌒ヽー、
 ̄\ ̄ \‐- ╋__..ニ -―― ´ ̄ __... -―一┘
+ ニニ ー--\ ⌒Y´ ̄ `丶 __,. -‐二´  ̄ ― +
 ̄\ ! =,. -‐ 二_
_ ヽ.._ ノ
 ̄ 〉 ー- ノ三二 +
十  ̄―/ ,' /二  ̄ _
ニー/⌒∨ / 二/ /⌒'l  ̄
_ / l /二 / ,イ |二_
/ /| / .ノ 〈. ′ / | _|__ ╋
 ̄_/ _/_ヽ_, .__,/ | |_
彡ニ ,ノ __( )_ 〈__ 三ミ +
+ `⌒  ̄∨ ̄∨― ⌒´
それがム板ヌクモリティ
http://pc8.2ch.net/tech/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。