Perlについての質問箱 10箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGPerlについての質問箱です
"There's more than one way to do it"ということで
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc2.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
WEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
過去ログは>>2-4あたり
0002デフォルトの名無しさん
NGNG1 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://pc2.2ch.net/tech/kako/1053/10530/1053053082.html
6 http://pc2.2ch.net/tech/kako/1060/10606/1060689008.html
7 http://pc2.2ch.net/test/read.cgi/tech/1068051036/l50
8 http://pc2.2ch.net/test/read.cgi/tech/1074151549/l50
9 http://pc5.2ch.net/test/read.cgi/tech/1079114157/l50
0003デフォルトの名無しさん
NGNG[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www5a.biglobe.ne.jp/~n_rieko/perl/
[本]
リャマ: http://www.oreilly.co.jp/BOOK/lperl3/
駱駝: http://www.oreilly.co.jp/BOOK/pperl3v1/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/BOOK/pcook/
[オンラインマニュアル]
Perldoc.com: http://www.perldoc.com/
perldoc.jp: http://www.perldoc.jp/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/%7ekbk/perl5.005/
[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://member.nifty.ne.jp/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGブラウザでページを表示したときにしか動作しないんですか?
0008デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7ekbk/perl5.005/perldata.html#Chubo_ha_Shine
http://perldoc.com/perl5.8.4/pod/perlop.html#Itteyoshi
0009デフォルトの名無しさん
NGNGUnix 系だったら fork
Windows系だったらMT(マルチスッドレ)Perlがええんでネーノ
と、やりたいことを具体的に訊かずにカキコ
0010デフォルトの名無しさん
NGNGperlでタイムスタンプの情報を知りたいのですが
取得する方法あるのでしょうか?
やっぱり$kekka = `ls -l file_hoge`;
とやってその結果を解析するしかないのでしょうか?
0011デフォルトの名無しさん
NGNG$atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);
0 dev device number of filesystem
1 ino inode number
2 mode file mode (type and permissions)
3 nlink number of (hard) links to the file
4 uid numeric user ID of file's owner
5 gid numeric group ID of file's owner
6 rdev the device identifier (special files only)
7 size total size of file, in bytes
8 atime last access time in seconds since the epoch
9 mtime last modify time in seconds since the epoch
10 ctime inode change time in seconds since the epoch (*)
11 blksize preferred block size for file system I/O
12 blocks actual number of blocks allocated
001210
NGNGstatという関数あったのですね。
ありがとーございます。
使用してみますです。
0013デフォルトの名無しさん
NGNGスレ立て乙。
そしてPerlスレ10箱達成おめ。
0014デフォルトの名無しさん
NGNGhtmlからform のpostでcgiにデータを渡すのですが、
form method=post action=cgi
input type=checkbox name=mail_to value=a
input type=checkbox name=mail_to value=b
/form
で、タイプをチェックボックスとして、cgiに渡します。
この場合、cgiで受け取るデータはどの様な形式で入ってくるのでしょうか?
name が同一の名前なので、 配列 $mail_to[0] $mail_to[1]
かと思ったのですが、違うようですし、 データの内容がカンマで区切られて入ってくるでもないようですし・・
尾永井します
0015デフォルトの名無しさん
NGNGでも、環境変数とか調べたらきっと答えは出てきます。
0016デフォルトの名無しさん
NGNGWebProg板の
Perl コーディング初心者質問コーナー Part35
ttp://pc5.2ch.net/test/read.cgi/php/1085557731/l50
あたりに行った方がいいと思うよん。移動ついでに
どういうプログラム書いたか要点を明らかにすること。
最低どのcgiライブラリ使ってるかぐらいは言わないと
誰も答えられないと思われる。
0018デフォルトの名無しさん
NGNG俺のperlプロセス君が、10秒以上処理が長引いたら
どんな状態だろうと自殺したいと言っています。
さて、飼い主として俺はどーしてやったらいいもんかね?
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG2,if(空行なら) {
3, 配列xをソートして出力;
4, 配列xは初期化;
5,} else {
6, 読み込んだ行を配列xに追加;
7,}
というのが作りたいんですが、なかなかうまく逝きません。
とりあえず中間的に
@xx = ();
while(<>) {
push(@xx, <>);
}
print $xx[2];
と書いてみて、二行目を出力するかどうか試したんですが、駄目です。
どなたかお助けください。
0021デフォルトの名無しさん
NGNGpush @xx, $_; # $_ に入ってるから
0022未承諾広告※ ◆aiY4htt2.2
NGNGwhile (<>) {
push @buffer, $_ if $_;
print splice @buffer, 0;
}
こんなかんじ?
0023未承諾広告※ ◆aiY4htt2.2
NGNGあかんやん。
my @buffer;
while (<>) {
push @buffer, $_ and next if $_ ne "\n";
print sort @buffer;
@buffer = ();
}
あかんわ。。。鬱
0024デフォルトの名無しさん
NGNGそのまま書くんじゃダメなの?
my @x;
while(<>){ # 1,ファイルから一行づつ読み込む
if($_ eq "\n"){ # 2,if(空行なら) {
print sort @x; # 3, 配列xをソートして出力;
@x = ''; # 4, 配列xは初期化;
} else { # 5,} else {
push @x, $_; # 6, 読み込んだ行を配列xに追加;
} # 7,}
}
0025デフォルトの名無しさん
NGNGだね。すっかり忘れてる^^;
0026デフォルトの名無しさん
NGNGwhile(<>)内でもう一度<>を使っちゃだめ。
while(<>) { #ファイルのn行目が$_にセットされる。
push(@xx, <>); #ファイルのn+1行目@xxにpushされる。
}
とゆーわけで、読み込んだファイルの奇数行は処理されなくなる。
あとロジックもちょっと変。もし読み込むファイルの最終行が
空白じゃなかったらどうなる?空白行が連続してたくさん続くような
ファイルを読み込ませたら?
ファイルの空白行を飛ばして出力するスクリプトだったら
こういう書き方もできる。
while(<>){print if !/^\n$/;}
002726
NGNG002827
NGNGゴメン アッテタ
0029デフォルトの名無しさん
NGNGpush(@xx, <>); # @xxに<>の残りの全ての行を追加する。――ダイヤモンド演算子はリストコンテキストでは残り全てを読み出すため。
}
0030デフォルトの名無しさん
NGNG<>;
0031デフォルトの名無しさん
NGNG<>;
↓
(^<>^;)
0032デフォルトの名無しさん
NGNGUNIXでCPANモジュールのアンインストールって
コマンドか何かでできるのでしょうか?
それともモジュールをファイル削除するしかないのでしょうか。。。
0033デフォルトの名無しさん
NGNG1行捨てる
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG$ perl foo.pl
syntax error at b.pl line 1, near "(^"
Execution of foo.pl aborted due to compilation errors.
ゴルァ(゚Д゚)
以下おまけ。有名なネタ。要 Windows2000以上。
C:\>(;´Д`)ハァハァ
ハァハァ の使い方が誤っています。
0037デフォルトの名無しさん
NGNG要するに2つの時刻の差を知りたいわけですが。
ただしCPANは使えない状況です。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGありがとうございました。
0041デフォルトの名無しさん
NGNG死ね
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGP69にて
“サブルーチンの中で最後に行われた計算の結果が、自動的に戻り値になる”
と書かれていますが、以下のような処理を行っても値が戻りません。
sub max {
my($max_so_far) = shift @_;
foreach (@_) {
if ($_ > $max_so_far) { $max_so_far = $_; }
$max_so_far; # ここだと値が返らない。
}
# $max_so_far; # ここだと値が返る。
}
$maximum = &max(1,2);
print "maximum number : $maximum";
sub maxで、最後に行われる計算は、
コメントアウトしていない$max_so_far;だと思うのですが、
間違っていますでしょうか?
0044デフォルトの名無しさん
NGNGperl -d とかして、step 実行するとよくわかるよ。
004543
NGNGレスありがとうございます。
ステップ実行を行ってみましたが、
やはり、print出力の前の動作(sub maxの最後の動作)は、
$max_so_far; # ここだと値が返らない。
のようです。
コメントアウトしている
# $max_so_far; # ここだと値が返る。
と入れ替えて、ステップ実行してみた結果も同じ動作でした。
おそらく僕が致命的な勘違いをしているような気がするのですが、
なにぶん未熟なせいか、分からずにいます。
もう少し頑張って調べてみます。
>>44さん、ステップ実行自体まだ知らなかったので大変参考になりました。
ありがとうございました。
0046デフォルトの名無しさん
NGNGDB<1> s
main::max(_.pl:5): $max_so_far; # ここだと値が返らない。
DB<1> s
main::max(_.pl:3): foreach (@_) {
DB<1> s
main::(_.pl:10): print "maximum number : $maximum\n";
ほら、foreach (@_) が最後じゃん
0047デフォルトの名無しさん
NGNGつかこういう記述しないし。
>>43の場合
for(@_){
...
}
でforを抜ける"}"が最後だっつー事やね。
return(...)をつけとくほうが確実か。
sub max {
my($max_so_far) = shift @_;
foreach (@_){
if ($_ > $max_so_far){
$max_so_far = $_;
}
return($max_so_far); # ここだと値が返らない。
}
# return($max_so_far); # ここだと値が返る。
}
004847
NGNGforeachだった。
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGそのプログラムがおかしいとか、
普通そうは書かねぇよなどは
また別の問題かと。
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGsortじゃだめなん?
@sorted = sort @_;
$sorted[0]; # 最小値
$sorted[-1] # 最大値
0053デフォルトの名無しさん
NGNG調べるファイルはかなり巨大で、ン拾萬行に及びます。
005443
NGNG>>46
たぶんというか間違いなく、>>46さんの言ってることが正しいとは思うのですが、
Windows環境のせいなのか、僕がくだらんミスしてるのか分かりませんが、
>>46のように出力してくれません…
しばらく試行錯誤してみます。
>>49
まだサンプルソース見ながら、基礎を理解してる最中なんで、
記述スタイル(スタイルも何もまだ無いけど)とかは勘弁してください…
0055デフォルトの名無しさん
NGNG`wc -l $file`
0056デフォルトの名無しさん
NGNGsortはたいていO(n×log n)ぐらいはかかるので、nが大きくなると
まずいだろう。素直に書くなら
$max = @_[0];
foreach (@_) {
$max = $_ if $_ > $max;
}
あたりじゃない? 要素数が少ないとsortの方が速いかもしれないけど。
ただしsortを使うとしてもいったん変数に入れないほうが速いと思った。
(sort {$a<=>$b} @_)[-1];
005753
NGNG環境を申し遅れました。Windowsです。
0058デフォルトの名無しさん
NGNGCygwinでperl使えばよろし
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG使ってますが何か?
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG1 while <IN>;
close IN;
print "$.\n";
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG検証せずにカキコ。
たぶんほとんどのケースで sort がいちばん速いが、Perlのソートは
Quick sort だし、要素の並び替えが発生するので
要素がヴァカでかく、ほぼ順列/逆列のときはかな〜りペナルティが
発生するハズ。ていうか先にPerlインタプリタが長い時間黙りこくるだろう。
短い行数でやるんだったら>>56が正解だとおもうけど、
ホントに「速い」方法は、データの持ち方、データの取り込み方と関係してくる。
結論: 設計が肝心だが、Perlでは手抜き上等!
>>53
効率的ではないが手っ取り早く最短な方法(FDはオプーソするんだぞ)
scalar(@dummy_no_namaedakara_mijikaku_shiru = <FD>)
手っ取り早くなく(効率的に)やるんだったら、とにかく設計が肝心だ!!!
テキストファイルは、長大なデータ扱うのに適してないんだyp!
0066デフォルトの名無しさん
NGNG>scalar(@dummy_no_namaedakara_mijikaku_shiru = <FD>)
っていうかバッファが無駄すぎだろ。もすこし考えろ
0067デフォルトの名無しさん
NGNGこーゆーときに深く考えないのがPerlだろ?!
走らせてから>>65は悩むんだろ。
006865
NGNGPerl 5.8.0, Linux-2.4.20 にて計測
たったの 1468778 lines, 262,261,974 bytes
$ wc -l
real 0m0.351s
user 0m0.140s
sys 0m0.190s
$ perl -e '1while(<>);print"$.\n";'
real 0m1.574s
user 0m1.430s
sys 0m0.150s
$ perl -e '$n++while(<>);print"$n\n";'
real 0m1.641s
user 0m1.470s
sys 0m0.170s
$ perl -e 'print scalar(@d=<>),"\n";'
real 0m4.643s
user 0m3.230s
sys 0m1.380s
遅いな(ワラ
>>66の云うとおり、もちっと考えるようにするわ
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGuse List::Util qw(max);
$max = max(@list);
実行速度は知らんが、(色々と)早いぞ
0071デフォルトの名無しさん
NGNGuse Benchmark;
use List::Util qw(max);
my @list;
foreach (1..$ARGV[0]) {push @list, rand}
timethese(-1, {
sort => sub {
my @sorted = sort {$a <=> $b} @list;
return $sorted[-1];
},
sort2 => sub {
return (sort {$a <=> $b} @list)[-1];
},
foreach => sub {
my $max = $list[0];
foreach (@list) { $max = $_ if $_ > $max; }
return $max;
},
map => sub {
my $max = $list[0];
map { $max = $_ if $_ > $max } @list;
return $max;
},
max => sub {
return max(@list);
},
});
0072デフォルトの名無しさん
NGNG% perl max.pl 10
Benchmark: running foreach, map, max, sort, sort2 for at least 1 CPU seconds...
foreach: 2 wallclock secs ( 1.03 usr + 0.00 sys = 1.03 CPU) @ 104388.35/s (n=107520)
map: 2 wallclock secs ( 1.06 usr + 0.00 sys = 1.06 CPU) @ 147539.62/s (n=156392)
max: 1 wallclock secs ( 1.02 usr + 0.00 sys = 1.02 CPU) @ 562195.10/s (n=573439)
sort: 1 wallclock secs ( 1.03 usr + 0.00 sys = 1.03 CPU) @ 55672.82/s (n=57343)
sort2: 2 wallclock secs ( 1.01 usr + 0.00 sys = 1.01 CPU) @ 227103.96/s (n=229375)
% perl max.pl 100
Benchmark: running foreach, map, max, sort, sort2 for at least 1 CPU seconds...
foreach: 1 wallclock secs ( 1.05 usr + 0.00 sys = 1.05 CPU) @ 21557.14/s (n=22635)
map: 1 wallclock secs ( 1.05 usr + 0.00 sys = 1.05 CPU) @ 24093.33/s (n=25298)
max: 1 wallclock secs ( 1.06 usr + 0.00 sys = 1.06 CPU) @ 115923.58/s (n=122879)
sort: 1 wallclock secs ( 1.06 usr + 0.00 sys = 1.06 CPU) @ 6338.68/s (n=6719)
sort2: 2 wallclock secs ( 1.04 usr + 0.00 sys = 1.04 CPU) @ 20675.96/s (n=21503)
% perl max.pl 1000
Benchmark: running foreach, map, max, sort, sort2 for at least 1 CPU seconds...
foreach: 1 wallclock secs ( 1.08 usr + 0.00 sys = 1.08 CPU) @ 2370.37/s (n=2560)
map: 2 wallclock secs ( 1.06 usr + 0.00 sys = 1.06 CPU) @ 2534.91/s (n=2687)
max: 1 wallclock secs ( 1.09 usr + 0.00 sys = 1.09 CPU) @ 13151.38/s (n=14335)
sort: 1 wallclock secs ( 1.08 usr + 0.00 sys = 1.08 CPU) @ 517.59/s (n=559)
sort2: 1 wallclock secs ( 1.05 usr + 0.00 sys = 1.05 CPU) @ 1421.90/s (n=1493)
0073デフォルトの名無しさん
NGNGおそまつでした。
0074デフォルトの名無しさん
NGNGsub reduce (&@) {
my $code = shift;
return shift unless @_ > 1;
my $caller = caller;
local(*{$caller."::a"}) = \my $a;
local(*{$caller."::b"}) = \my $b;
$a = shift;
foreach (@_) {
$b = $_;
$a = &{$code}();
}
$a;
}
sub max (@) { reduce { $a > $b ? $a : $b } @_ }
0075デフォルトの名無しさん
NGNG頭のほうからよく読め。それはXS版のダイナミックロードを
試みてうまくいかなかった時用のコードだ。
0076デフォルトの名無しさん
NGNG/usr/lib/perl5/5.8.4/i686-linux-thread-multi/auto/List/Util/Util.so
これがありました。Perlのライブラリはコンパイルされてるんですね。初めて知りました。
通りで速いわけだ。ということはライブラリは積極的に使わないともったいないですね。
0077デフォルトの名無しさん
NGNGこの正規表現をもっとスマートにできないかな?
/^D(a(m(n(A(ss?)?)?)?)?)?/i
つまり文字列の先頭から、
D もしくは Da もしくは Dam もしくは Damn もしくは (以下略)
にマッチするかどうかを、大文字小文字を区別せずにテストしたい。
実行速度と可読性の両方があればベストなんだけど、どちらかというと
実行速度の方が嬉しい。何度も何度も何度も何度も呼び出されるんだ。
Cなら正規表現すら使わずに簡単に高速なルーチンが書けるのに
テキスト処理が得意なはずのPerlだと悩んじゃうのは、意外だね。
あ、このバーボンは僕のおごりだ。
0078デフォルトの名無しさん
NGNGmy $arry = 'DamnASS';
$arry =~ m/^$data/i;
0079デフォルトの名無しさん
NGNGうわっ、これは強烈に Koo000L なコードだね。
逆転の発想とはこの事さ。コペルニクスの再来だ。
脳みその未使用の部分が一気に活性化した気分だ。
ありがとう。お礼に蜂蜜酒をごちそうさせてくれ (´・ω・`)ノ∀
0080デフォルトの名無しさん
NGNGなぜ $data =~ /^D/i じゃダメなの?
それとも /^D(a(m(n(A(ss?)?)?)?)?)?\z/i の間違い?
>>78-79
$data が 'DamnASS!' だと $arry =~ /^$data/i はマッチ
しないけどいいの?
0081デフォルトの名無しさん
NGNGやあ(´・ω・`)こんな夜中(早朝?)にナイスツッコミだ。
実は>>78のアイデアがうまくいかなくて,10分くらい悩んだ。
原因は,つまり君のツッコミそのものだった。
> /^D(a(m(n(A(ss?)?)?)?)?)?\z/i の間違い?
> $data が 'DamnASS!' だと $arry =~ /^$data/i はマッチ
> しないけどいいの?
鋭いね。実は僕の質問に間違いがあったんだ。ごめん。
結局僕は
$data =~ /^D(a(m(n(A(s(s.*)?)?)?)?)?)?\z/i
という正規表現のスマート化をしたかったんだね。
my $arry = 'DamnAss';
my $subdata = substr($data, 0, length($arry));
if ($arry =~ /^\Q$subdata\E/i) { ...
として解決したよ。
0082デフォルトの名無しさん
NGNGif (0 == index 'damnass', lc $data) {
0083デフォルトの名無しさん
NGNG"aaa=bbb,ccc,ddd" → ("aaa","bbb","ccc","ddd")
という感じにする方法があるのでしょうか?
0084デフォルトの名無しさん
NGNGuse strictを使っているとエラーになってしまいます。
*MAX = \100;
print $MAX."\n";
はOKだけど、
use strict
*MAX = \100;
print $MAX."\n";
はエラーになるということです。
型グロブを使う前に
my $MAX
を入れるとエラーは出なくなりますが、数値は未定義のままになっています。
なぜなのでしょうか?
関数を使うなど、他の方法にするしかないですか?
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGあ、ありがとうございます。パターンマッチが使えたんですね(汗
0088デフォルトの名無しさん
NGNG>型グロブを利用して定数を宣言しようと思ったのですが、
まず、そのやりかたは宣言って言わない。
myはシンボルテーブルに含まれない。
strictはグローバル宣言するかパッケージ名を省略せずに書けばいい。
our $MAX;
$main::MAX;
普通は定数はコンパイル時に畳みこませる。
sub MAX () {100}
ちなみに、これは名前空間はサブルーチンだけど、実質上はサブルーチンでも関数でもないから。
0089デフォルトの名無しさん
NGNGこれだと"$MAX"みたいにしたときに展開されないよね?
009084
NGNG早速答えていただいてありがとうございます。
> >型グロブを利用して定数を宣言しようと思ったのですが、
> まず、そのやりかたは宣言って言わない。
> myはシンボルテーブルに含まれない。
> strictはグローバル宣言するかパッケージ名を省略せずに書けばいい。
ちゃんと理解できてなくてすみません。
なんとなくperlでプログラムを書き始めてしまったので、やはり基礎から勉強します。
> 普通は定数はコンパイル時に畳みこませる。
> sub MAX () {100}
> ちなみに、これは名前空間はサブルーチンだけど、実質上はサブルーチンでも関数でもないから。
関数じゃないんですね。
コンパイル時にMAX=100として扱われるようになるということでしょうか。
この方法で書くことにします。
ありがとうございました。
009184=90
NGNG書き込む直前にリロードするのを忘れてました。
>>89
sub MAX () {100}
print MAX."\n";
で100と表示されたのですが、これは展開されたとは言わないのでしょうか?
$つきでないと困る場合はありますか?
0092デフォルトの名無しさん
NGNGsub MAX(){100} #これと
$MAX #これは
なんの関連性もないから気にしなくていいよ。
"MAX\n";
って書いても展開しないってことを言いたいんだと思う。
名前空間はサブルーチンを使ってて、サブルーチン名はダブルクウォート内で展開されないってこと。
0094デフォルトの名無しさん
NGNG474 :login:Penguin :04/06/02 22:07 ID:TlXNt6aW
駱駝本はジャンプ一週間分程度
476 :login:Penguin :04/06/03 16:40 ID:rUJxlzG4
駱駝本<<<<スーパーテキスト類
479 :login:Penguin :04/06/03 17:09 ID:rUJxlzG4
駱駝本も分かりにくさっつーか余分な文の多さでは同レベ
http://pc5.2ch.net/test/read.cgi/linux/1079263303/l50
0095デフォルトの名無しさん
NGNG初めて Perl 5.8 をいじったら、UTF-8 の出力で怒られたりする羽目に陥りました。
こういった 5.8 あたりからの非互換性にまつわる注意点などがまとまった
サイトやドキュメントでおすすめはありますか?
0096デフォルトの名無しさん
NGNGperldelta
0097デフォルトの名無しさん
NGNGうぅ、すいません、もしかしてマイナーバージョンまで言うべきだったでしょうか。
私の使っている Perl 5.8.4 で perldoc perldelta したら、
5.8.3 との差分しか記述されてないのですが、
できれば、5.005 から 5.8.4 での差分が説明されているとありがたいです。
特に encoding 周りの変更点が知りたいです。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG+であれ−であれ
0102デフォルトの名無しさん
NGNGhttp://www.perldoc.com/perl5.6/pod/perldelta.html
http://perldoc.jp/docs/perl/5.8.0/perldelta.pod
0104デフォルトの名無しさん
NGNG見た目にもわかりやすい。
結局は >88 みたいに実装されてるみたいだけど。
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGだろ?
0107デフォルトの名無しさん
NGNGラクダ本のハッシュについて書かれている2.3.5のところのサンプルコードの
意味がよく分りません。
0108デフォルトの名無しさん
NGNGありがとうございます。参考になります。
0109デフォルトの名無しさん
NGNGオレのラクダ本(3版の日本語訳)には2.3.5は存在しないのだが、
何版?
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG2版のP57です。
また、複雑な関数を起動する際に、
名前呼び(call-by-name)のパラメータを渡すのにも使える:
$field = $query->$radio_group(
NAME => 'group_name',
VALUES => ['eenie','meenie','minie'],
DEFAULT => 'meenie',
LINEBREAK => 'true',
LABELS => \%labels,
);
というコードがあるんですが、これの意味がよく分りません。
0112デフォルトの名無しさん
NGNGhoge( foo => 1, bar => 2);
sub hoge(){
my %hash = @_;
my $foo = $hash{'foo'};
my $bar = $hash{'bar'};
....
}
いったんハッシュに入れてから要素を取り出すので引数の順番を考慮しなくていいし
順序とは関係なく指定しない事も可能
0113デフォルトの名無しさん
NGNGそれとも -> やら [ ] やら \% が分らないのだろうか?
0114デフォルトの名無しさん
NGNG> my %hash = @_;
なるほど。そういうことですか。ありがとうございます。
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG言語関係では別のことを表す用語なので、3版の2.9ハッシュ
では「名前付きのパラメータを〜」っていう風に修正されて
ますね。
0117113
NGNGという一文に惑わされるこのもないだろうと思ってね
( ´゚,_」゚)ヒッシダナ
0118デフォルトの名無しさん
NGNGsub new {
shift;
local *GLOB;
$GLOB = 'hogehoge';
bless \*GLOB;
}
package main;
my $hoge = new HOGE;
local *HOG = *$hoge;
print $HOG;
のように型グロブのリファレンスをblessしましたが、$GLOBに入れた'hogehoge'を取り出す事が出来ません。
sub new の中の local *GLOB を消すとうまく取り出せますがオブジェクトHOGEを2つ以上用意できない気がします。
(用意できないかどうかは試していません。)
また、他に終了時に必ず実行してほしい sub DESTROY を用意してありますが、
package HOGE;
sub DESTROY {
warn "DESTROY!!"
#とりあえずまだこれだけ。
}
my $hogehoge -> new HOGE;
# ...
$hogehoge->DESTROY;
exit;
のように終了直前にちゃんと呼び出してあげないと実行してくれません。
sub DESTROY は用意しておくだけでは自動で実行してくれないのでしょうか?
また sub DESTROY はどのような時に自動で実行されるのでしょうか?
0119デフォルトの名無しさん
NGNG上:しらね
下:newサブルーチンの中身見せれ
0120デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGlocalって今のグローバル変数の値をよろしく
どこぞに退避して値を代入しなおし、あとで
ブロックを抜けるときに自動的にもとに戻す
ようなものだから、あとで$HOGをアクセス
したときには元に戻っているんではないだろ
うか?
package main;の次に$HOGE::GLOB="HOGEHOGE";
と加えるとHOGEHOGEがprintされるよね。
0123デフォルトの名無しさん
NGNG後半はGLOB自体が消滅することはないのでDESTROY呼ばれる
こともないとかそういうオチのような気がします。
0124デフォルトの名無しさん
NGNG0125118
NGNG型グロブをオブジェクトとすればインスタンス変数?として
スカラーも配列もハッシュも使えるかなと思ったんですけど、
型グロブのリファレンスをデリファレンスして別の型グロブに代入しても
スカラーと配列とハッシュまで(リファレンスを)同じにしてくれるわけではないんですね。
欲張ってもPerlはそうは卸さないということで、オブジェクトは素直にハッシュか配列かスカラーのリファレンスから作ります。
>>119-124の答えてくださった皆さんどうもありがとうございました。
0126デフォルトの名無しさん
NGNGsub new {
my $class = ref($_[0]) || $_[0] || "IO::Handle";
@_ == 1 or croak "usage: new $class";
my $io = gensym;
bless $io, $class;
}
コレが正解。
0127デフォルトの名無しさん
NGNGpackage Foo;
sub new {
my $class = shift;
my($arg) = @_;
bless \$arg, $class;
}
package main;
my $foo = Foo->new(\"foo");
my $bar = Foo->new(["bar"]);
my $baz = Foo->new({foo => "bar"};
__END__
みたいなことがしたいの?
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG寝ながら読んだりしてたし直ぐ終わった記憶があるけど。
全部を理解し終えるにはって意味なら、
何日とは言わず何ヶ月も掛かったなあ自分は……。
#とはいえまだ理解し切ってるわけでは無い
0130デフォルトの名無しさん
NGNGちゃんと理解しようと思うと大変。
あとPerlはUNIX的なツールから沢山影響受けてるから
本当はそれらもある程度理解しないと、Perlの良さも分らないポ。
ソースコード読んで理解するまえに、やることは沢山あるぽ。
0131未承諾広告※ ◆TWARamEjuA
NGNGFreeBSD5.2.1(ia64) にて、 Socket には AF_INET は未定義になっているのでしょうか?
といいますのも、
connect HTTP, pack 'S n a4 x8', AF_INET, $port, $inad or die "ERROR! at connect:$!\n";
という文を実行してみたところ、
ERROR! at connect:Address family not supported by protocol family
と返ってきたものでして。
FreeBSD5.2.1(i386) および、 VineLinux 2.6(i686) [ともに自宅鯖]では上記の鰓はでませんでした。
FreeBSD5.2.1(ia64) へはログインできる権限がないので詳細がわからないものでして。
何か情報や文献などのリンクがありましたらお教えいただけるとありがたいです。
ちなみに前述の文を、
connect HTTP, pack_sockaddr_in($port, $inad) or die "ERROR! at connect:$!\n";
に変更することで die しなくなりました。(正常動作)
0132デフォルトの名無しさん
NGNGあれはperlインストール時にシステムのinclude/*.h から生成されるもんだが、
portsな世界だと何かあるのかもしれん。
013381
NGNGhard な stuff はだめだ。大事な脳細胞が壊れちゃうよ!
肝細胞は,殺しても殺しても復活するけどね。ha-ha-ha!
>>82
Thanks! 正規表現より,index の方が速度を期待できるね。
応用のきく頭脳を持つなんて,うらやましくも,素晴らしい事だ。
「素晴らしい」以外の賛辞を知らない僕を煽ってくれてもいい程さ。
レスが遅くなって悪いね。言い訳はしないよ (´・ω・`)ノ∀
0134デフォルトの名無しさん
NGNGカレントディレクトリが上手く取れずに困っています。
例えば opendir() で '.' を開くとスクリプトがあるディレクトリになりますが、
open() で './' を開くとルートディレクトリ(C:\)になってしまいます。
スクリプト自身が存在する場所を常にカレントとするにはどうすれば良いのでしょうか。
スクリプトの場所を動かすたびに chdir() の引数を書き直すのは面倒ですし……。
0135デフォルトの名無しさん
NGNGopen でディレクトリ開いて何がしたいんだ?
0136デフォルトの名無しさん
NGNG'S n a4 x8'を'S! n a4 x8'にしたらどうなります?
↓これ動かしてもらえると嬉しいです。
use Config;
foreach(qw(shortsize intsize longsize longlongsize)){
print "$_ = $Config{$_} \n";
}
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGchdir (($0 =~ /(.*)\\[^\\]+$/)[0]);
open opendir 限らず、スタートメニューとかのランチャーでplファイルを指定して
実行させたらカレントが変なところになるなー
0139デフォルトの名無しさん
NGNGAF_INETが未定義かどうかを疑っているのなら、そんな複雑な
操作じゃなくて素直にprint AF_INETとかした方がはっきりする
と思うがな。
とはいえ、いまどきはpack_sockaddr_inとか使う方がいいと
思われ。古い本には'S n a4 x8'でpackする例しか書いてない
んだけど、sockaddr_inが必ずしもそうなってないOSもあるし。
たとえばlinuxでは最初のフィールドはunsigned short intの
sa_familyなのでSで妥当だけれども、FreeBSDではその部分は
unsignd charのsa_lenとunsigned charのsa_familyなので全然
違う。
それでも昔はそこら辺の値はノーチェックだったのでなんと
なく動いてたんだけど、IPv6が入った頃にsa_familyを見る
ようになって問題が表面化したんだよな。
0140未承諾広告※ ◆TWARamEjuA
NGNG>>136
>>139
いろいろな情報、ほんにありがとうです。m(_ _)m
当方でひとつひとつ確証するのが一番の解決策なのですがなかなかそうはいかないものでして(苦笑)
また機会があればみなさん情報を元にいろいろとやってみますです。
0141136
NGNG# あれ、FreeBSD5.2(i386)で'Sna4x8'使って動かなかった記憶が。。
AF_INET定数を使えるということは、use Socket;できてるということなので、
pack_sockaddr_in()使うのが妥当でしょうね。
0142デフォルトの名無しさん
NGNG「リスト演算子は、演算子の左右どちら側に注目するかによって(以下略)」
この、��演算子の左右�≠チて何ですか?
意味和漢ネ。
0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNG3版持ってねぇ
以下略が気になる
0145デフォルトの名無しさん
NGNG文字通り、演算子の左側と右側の事だが。
まぁ誰でも直感的に分かる事を言葉で説明しようとして
ややこしい言い回しになってるだけだから、それ以降の
例が理解できればこだわる必要の無い文だよ。
>>144
2版 (改訂版) では 2.5.1 。
http://www.oreilly.co.jp/BOOK/pperl3v1/contents.htm
perldoc だと perlop 。
http://perldoc.com/perl5.8.4/pod/perlop.html#Terms-and-List-Operators-(Leftward)
0146デフォルトの名無しさん
NGNG赤ラクダだと 3.2.1
0147デフォルトの名無しさん
NGNGsleep 1;
print " i = $i\n";
}
こんなのを実行すると、
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
こんなふうに10行出力されますが、これを1行で "i =" のところは
変わらずに、数字のとこだけ変わっていくというような表示をさせたいのですが、
(topコマンドを実行したときのCPU statesの数値だけがリアルタイムで変化してくような感じ)
端末をクリアしてまたprintして、というのは無しで
どのようにしたらよいのでしょうか?
0148デフォルトの名無しさん
NGNGプラットフォーム依存だが
$| = 0; # STDOUT へのバッファリング停止(いらんかも)
print "i = $i\r"; # \r(0x0D)は、UnixでもWinでも、復帰
を試してみれ。念のためゆーとくが、sleep(1)と挿入したことで
ぴったり秒数を数えてるのではなく、計時誤差が微量に出ることは
納得できるな?
これでうまく逝かなかったら、プラットフォームを書け。
ちなみに top は、ncurses とか使ってたハズ。
0149デフォルトの名無しさん
NGNGsleep 1;
print "\x1b[A" if $i;
print " i = $i\n";
}
0150147
NGNGレスありがとうございます。
148さんのではできませんでした。FreeBSD 4.10です。
Curses.pmでも使おうかなと思っていたら、
149さんので思ったとおりにできました。& "\x1b"でググってみると
いろいろと面白い事がわかりました。感謝です。
0151デフォルトの名無しさん
NGNGいえ、./ は例えで、要は readdir() だとカレントがスクリプトのある位置を基準とできるのに、
open() だと(自分には)出来ないからどうしたら良いのかという話でした。
>>137-138
ありがとうございます、後程やってみます。
0152デフォルトの名無しさん
NGNGperlなら
for (0..9)
とした方が分り易いんですがこれだと何か問題あるんでしょうか。
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG違いがあるわけだが、
% perl -e '@a=(1,2); for $i (0..$#a) { print $i, "\n"; $a[2] = 1;}'
0
1
% perl -e '@a=(1,2); for ($i = 0; $i<= $#a; $i++) { print $i, "\n"; $a[2] = 1;}'
0
1
2
行儀悪いので良い子は真似しないほうがいいと思うよ。
0155デフォルトの名無しさん
NGNG400人くらいの会員にメールを1週間おきに配信したいのですが
CCで送信するのと、400回繰り返し送信するのとはサーバーに
かかる負荷は違うのでしょうか?それとも同じでしょうか?
データファイルから順々に送信するCGIをつくりまして
サーバに負荷をあまりかけないようにするため100人終わったら、
また100人、のように送信していたのですが、もしCCで負荷が
少なくて済むならなと思いまして。
よろしくお願いします。
0157デフォルトの名無しさん
NGNG↓Perlの質問をどうぞ。
0158デフォルトの名無しさん
NGNGCCよりはBCC
何かとうるさい世の中だしな
0159デフォルトの名無しさん
NGNGBccよりは個別To
世知辛い世の中になったものだ
0160デフォルトの名無しさん
NGNGその場合、
(a1,b1,c1)
(a2,b2,c2)
(a3,b3,c3)
と保存して
while(<FH>){my @a;eval{@a=$_};...
するのと
a1,b1,c1
a2,b2,c2
a3,b3,c3
と保存して
while(<FH>){my @a=split ',';...
とするのでは、どっちが一般的な処理方法だと思われますか?
0161デフォルトの名無しさん
NGNGふつーsplitだろ
0162デフォルトの名無しさん
NGNGなるほど。そうですか。
while(<FH>){my @a=eval($_);...
あと上のプログラムはこうでしたね。。。
0163デフォルトの名無しさん
NGNG#--- data.txt ---
[
[ 'a1', 'b1', 'c1' ],
[ 'a2', 'b2', 'c2' ],
[ 'a3', 'b3', 'c3' ],
];
#--- script ---
my $array = do './data.txt';
print $array->[1][2]; # c2
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGんだけど送り出す先のSOAPインタフェースがJISな変換規則のunicode
を期待しています。こういう場合の変換に使えるよさげなライブラリってある?
0169デフォルトの名無しさん
NGNGある変数にあるファイルの内容全体を格納するのにはどうするのがいいでしょうか?
定石というか定番イディオムみたいのがあるでしょうか?
私は今こうしています。
open(FILE, "hoge.dat");
my $data = join('', <FILE>);
close(FILE);
0170デフォルトの名無しさん
NGNGそれでもいいし以下のようにもできる。
{
local $/ = undef;
my $data = <FILE>;
}
read FILE, my $data, -s $file;
0171デフォルトの名無しさん
NGNGreadって必ずその長さまで読んでくれることは保証されるんでしょうか?
なんとなく不安なのでついこんな感じにしちゃうのですけど。
my $data;
my $r;
while ($r = read FILE, $data, 適当に大きな数, length($data)) {}
defined $r or die "error reading FILE: $!";
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGThere is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.
と表示されてしまい、インストールできないのですが何が原因なのかわかる方いらっしゃいますでしょうか?
0174デフォルトの名無しさん
NGNGMSインストーラが入ってないんじゃないだろうか
0175デフォルトの名無しさん
NGNGその可能性大でしょうか?
0176デフォルトの名無しさん
NGNGダウンロードし直してやってみる。
0177デフォルトの名無しさん
NGNGprint "\xFF";
って感じで逝けるんですが、二進数の場合どうすればいいでしょう?
0178デフォルトの名無しさん
NGNG0b11111111
0179デフォルトの名無しさん
NGNGってどういう意味なのですか??
0180デフォルトの名無しさん
NGNG\[1-9] は後方参照。
その使い方って正しいのか・・・?
表示されるのか?
1が表示されるだけ違うのか?
普通は、$1じゃないのか・・・?
よくわかんねーや。
0181デフォルトの名無しさん
NGNGOSの種類くらい書けよ、アホかおめー
0182デフォルトの名無しさん
NGNG\001 と同意
0183169
NGNGありがとうございます。
Ruby の read だと、長さ指定しないと全部読むんですが、そゆのないんですかね。
-s $file でサイズ取得は思いつきませんでした。なるほど。
ただ、 DATA を read する場合とかには使えないのがちょっと惜しい・・・
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGそのサイズずつ読むなんてこともできるのね。知らんかった...
0188169
NGNGいえ、無視じゃないです。
ただ、 $/ みたいな状態を変更するような特殊変数を設定し直さないといけないのは、
いまいちスマートじゃないような気がしなくもないかな、と思わなくもないかな、と。
Perl ではこういうのが定石なのであれば、郷に従うのもやぶさかではありませんけど。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG"There's more than one way to do it"だから好きな方でいいと思う。
オレはいちいち長さ調べなくていい$/の方が好きだけどな。
0191デフォルトの名無しさん
NGNGごく一般的な使い方。
0192デフォルトの名無しさん
NGNGまぁ同じ事だが。
sub MY_DATA_SIZE() {
open MYSELF, '<' . $0 or die $!;
binmode MYSELF;
local $/ = "__DATA_\x5F\x0D\x0A"; # 適宜変更
<MYSELF>;
(-s MYSELF) - tell MYSELF;
}
read DATA, my $data, MY_DATA_SIZE;
0193デフォルトの名無しさん
NGNG>ただ、 $/ みたいな状態を変更するような特殊変数を設定し直さないといけないのは、
そのための local なんだがな・・・
0194デフォルトの名無しさん
NGNG0195179じゃないですが
NGNG0196デフォルトの名無しさん
NGNGみたいなのをPerlでやるとどうなりますか?
$perl -e 'while(<>){print +(split " ")[0]."\n"}' /etc/services
これより簡単な方法があれば教えてください。
0197デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq7.html#What_s_the_difference_between_dy
>>195
http://perldoc.com/perl5.8.4/pod/perlop.html#Quote-and-Quote-like-Operators
0198デフォルトの名無しさん
NGNGいやいや、そういうことじゃなくて、
どうして特殊変数を上の例のようにmyとして
設定できないのかということ。
0199デフォルトの名無しさん
NGNGhttp://perldoc.com/perl5.8.4/pod/perlrun.html
perl -ane 'print "$F[0]\n"' /etc/services
0200169
NGNGもちろんそうなのですけれども、
あるスコープ内だけだとしても状態を変更して云々しないといけない
というのが心情的に気持ち悪いと感じました。
けれど、 >>191 さんの言われるように、Perl では特殊なことではないようですので、
そういうものだと思うことにします。
>>192
な、なるほど・・・
0201デフォルトの名無しさん
NGNGhttp://search.cpan.org/~rgarcia/perl-5.9.1/pod/perl591delta.pod
Lexical $_
0202デフォルトの名無しさん
NGNG>>197 の解説にある通り、(原則) my は変数を局所化する
ものではない。局所的な変数を宣言(作成)するものだ。
0203デフォルトの名無しさん
NGNG意味和姦ね.
ヘルプ
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGネタ?
0206デフォルトの名無しさん
NGNGhttp://www.oreilly.com/catalog/059600737X/
0207デフォルトの名無しさん
NGNG1以上の場合は後方参照のそれだけど。
ラクダ本のパターンマッチの章をよく読んでね。
0208デフォルトの名無しさん
NGNGサイトなどはないでしょうか?あれば教えてください。
割と綺麗に書かれているので、なくてもそれ程困りませんが。。。
0209デフォルトの名無しさん
NGNGwhile(<*.gz>){
print;
}
とかだと中身が見えるんですが、
open FILE 圧縮ファイル名;
while(<FILE>){
print;
}
で見ようとすると化け化けになっちゃうんですぅぅ。
0210デフォルトの名無しさん
NGNG見えないけど
今日のおさらいじゃないけど、これじゃダメなの?
$file=`zcat finename`
0211デフォルトの名無しさん
NGNGあれぇ? また、確認してみます。
>今日のおさらいじゃないけど、これじゃダメなの?
>$file=`zcat finename
今日のことはわからないけど、今は基本的にはおんなじこと
してます。ただ、私は Windows+cygwin 環境なんだけど、zcat
使えない場合も想定しなきゃだめになっちゃって困ってるんです…
0212デフォルトの名無しさん
NGNGhttp://chaichan.hp.infoseek.co.jp/qa1500/qa1886.htm
0213デフォルトの名無しさん
NGNG・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる
などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?
【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0214デフォルトの名無しさん
NGNGそれを使えば?
0215デフォルトの名無しさん
NGNGdevel.tar.gz(5.9.1)をビルドしてみました。
http://www.ring.gr.jp/archives/lang/perl/CPAN/src/perl-5.9.1.tar.gz
確かに'my $_'と出来ます。
他の特殊変数はPerlの「環境」に属するものなだけに、
むしろこの$_のように使えないことの方が正しいような気もしました。
>>202
「変数の局所化」と「局所的な変数を宣言」の違いとは何でしょうか?
myによるローカル変数はシンボルという点から見れば、
localによる変数(つまりグローバルな変数)と違い、名前空間に属してない。
$perl -e 'package p;$a;my $b;while(my($k,$v)=each %main::p::){print "$k,$v\n"}'
でもシンボルの指示対象としてのメモリ領域は同じ機構で管理されてるようにも見える。
$perl -e 'print ${&{sub{my $a="a\n";return \$a}}}'
myとlocalの違いをちゃんと理解するのは結構難しいですね。
0216209
NGNGありがとう! また、月曜にガッコで試してみま〜す。
0217デフォルトの名無しさん
NGNGいわゆるリファレンスを通じて参照するのと変数スコープを通じて利用(参照)するのは内部的には同じこと。
データの実体はそのような参照カウントが0になった時に削除される。
つまり
sub a{
my $a = "hoge"; # "hoge"の参照カウントは1
return \$a; # カウントが増える
} # ここで$aのスコープは終わりなのでカウントは減る。my変数$aは消えるが "hoge" は消えない
$b = a(); # ここで "hoge" の参照カウントは1 になる
0218デフォルトの名無しさん
NGNGlocal変数のスコープの終わりで参照カウントが1減るだけ。
0219デフォルトの名無しさん
NGNGmyは新しく変数を作って有効範囲の中ではそっちを
アクセスする。元の変数はそのまま残ってるので
package名をつければアクセスできる。
localはシンボルテーブルがもっている変数の領域
へのリファレンスを退避して新しい領域を割り当てる。
ブロックを抜けるときに元に戻す。
以下のプログラムのmyとlocalを入れ替えて
実行するとわかりやすいかも?
$x = 1;
print \$x, "\n";
{
my $x = 2;
print \$x, "\n";
print \$::x, "\n";
}
print \$x, "\n";
0220デフォルトの名無しさん
NGNG頂いたレスを元に自分なりに考えてみたのですが、
「局所」というものをブロック,eval,do,subなどのコード領域を意味するとして、
local(グローバル)変数の場合
コンパイル時には全ての変数をシンボルテーブルの頭から辿る中間コードを生成。
実行時
・局所に入る。
・local関数は新しい変数用と古いシンボルテーブルエントリ用のメモリ領域を作成し、
シンボルテーブルの該当箇所の アドレス値を新たなメモリ領域を指すように書き換え
・・・・・
・シンボルテーブルエントリを対比しておいた古い値のアドレス値に書き換え。
・GC発動(local指定された変数と待避用アドレス値の領域が参照カウント数に応じて
----おそらく----削除される)
・局所抜ける
my変数の場合
コンパイル時には局所専用シンボルテーブルのエントリを参照する中間コードを生成。
実行時
・局所に入る。
・my関数は新しいメモリ領域を作成し、局所専用シンボルテーブルの該当エントリに
そのアドレスを書き込む
・GC発動(local指定された変数と待避用アドレス値の領域が参照カウント数に応じて
削除される)
・局所抜ける
(局所専用シンボルテーブルはどの段階で作成されるのかという問題はあるけど)
概要はこんな感じでしょうか。
ちゃんとした理解には程遠いとは思いますが。。。
0221デフォルトの名無しさん
NGNGもう少し調べてからまた書きます。
0222デフォルトの名無しさん
NGNG「実用Perlプログラミング」読め。話はそれからだ
GCと参照カウントは異なるものなので混ぜるな危険。
0223デフォルトの名無しさん
NGNG1.
ショッピングサイトを立ち上げているのですが、”決済する” のボタンを押すと、カード会社のサイトにジャンプし
、そのサイトで情報入力を行い、その戻りを受けてユーザに完了画面を出力しようと思います。
2.
こちらから、form post で、カード会社のCGIを呼び出し、カード情報入力画面をだします。
そのCGIは結果を success 又は ng でこちらに返してくるのですが、このままのつくりだと、
ユーザにカード情報入力後の画面に success , 又はngと ぽつんと表示され訳がわからない状態となります
3.
そこで、 form post属性で他のcgiを呼び出し、その結果を受けて、”xxxx円 決済が完了しました ありがとうございます
トップに戻る” と出したいのです。form post で呼び出したcgiの結果を判定する方法がわからないので、教えて下さい。
0224デフォルトの名無しさん
NGNGWebProg板いけ。結果のHTMLに詳細書いてるんならHTTP::Responseの$->content読めばいい。
0225デフォルトの名無しさん
NGNGPerl コーディング初心者質問コーナー Part35
http://pc5.2ch.net/test/read.cgi/php/1085557731/310
310 名前:nobodyさん[] 投稿日:04/06/12 13:33 ID:FD8KxqwO
質問します
(ry
0226デフォルトの名無しさん
NGNGていうかマルチかよ。
0227デフォルトの名無しさん
NGNGとりあえず、サンクスこ
0228デフォルトの名無しさん
NGNGそんなメモリだGCだって深刻に考えなくてもいいんじゃ?
local は既存のシンボルテーブルの値を退避させて新しい値に入れ替える
my はそのスコープ内だけでアクセスできる”無名シンボルテーブル”と言えるようなシンボルテーブルを作成して変数を作る
俺はこう捉えてるけど誤解してるかなぁ?
0229デフォルトの名無しさん
NGNGあまりオブジェクト乱用して作っちゃマズイ?
0230デフォルトの名無しさん
NGNGってことで好きなようにしてください。
0231デフォルトの名無しさん
NGNGいや、まだ書いてもないし。
ココで前に見た覚えがあるんだよね。
Perlのオブジェクトは重いって。
ほとんどのルーチンをオブジェクトに書き換えようかと考えてんだけど・・・
実際の所、どうなの?
0232デフォルトの名無しさん
NGNGそりゃ、生でダラダラ書くよりゃ遅いさ
ぐだぐだ言わずにまずBench
0233デフォルトの名無しさん
NGNGどうやらユーザーのperlスクリプトが原因っぽいというところまでは判明
ところが私はperlにあんまり詳しくないのでどこから手をつけていいか困っています
perlでこれをやるとメモリー資源を食いつぶすっていうような代表格みたいなのってありますか?
0234デフォルトの名無しさん
NGNG巨大ファイルを開いて一気に配列に読み込むとか。
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG% perl -e 'while (1) { fork; }'
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNGperlの前にまずユーザに警告するべきでは?
0240デフォルトの名無しさん
NGNGデーターの類に巨大なものが無いので配列の線は無いっぽいです
その後わかったことは数十分かけて使用メモリーが少しづつ増えていって使い切ったところで自殺(自滅?)してるようです
無限ループが絡んでる線が濃厚でしょうかね?
警告というほどの大げさなことはしてませんが単純なバグなら直してもらえばすむので
連絡中ですご心配ありがとです
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG変換がどうもうまくいきません。
2345人が万二千三百四十五人と出てしまいます。
sub kansuji{
my($number) = $_[0];
my($return) = '';
my(@suji) = ("","一","二","三","四","五","六","七","八","九");
my(@keta) = ("","十\","百","千");
my(@oketa) = ("万","億","兆");
my(@nums) = split(//,$number);
@nums = reverse (@nums);
my($r) = @nums % 4;
my($limit) = int(@nums / 4);
for($j = 0; $j \= $limit; $j++){
my($ceiling) = $j == $limit ? $r :4 ;
for($i = 0; $i < $ceiling ; $i++){
my($f) = ($i != 0 && $nums[$i+$j*4] == 1) ? "" : $suji[$nums[$i+$j*4]];
$return = join("",$f,$keta[$i],$return) unless($nums[$i+$j*4] == 0);
}
$return = join("",$oketa[$j],$return) unless($j == $limit);
}
return $return;
}
どこが間違っているかご教授願います。
0245デフォルトの名無しさん
NGNGmy($limit) = int(@nums / 4);
たぶんここ。4桁のときは、$r=4,$limit=0になって欲しいのでは
ないだろうか? ということで、
my($r) = @nums % 4 || 4;
my($limit) = int((@nums - 1) / 4);
てとこかな。
0246デフォルトの名無しさん
NGNG何か気に入らなかった・・・
見た感じ、複雑に見えるし・・・
・・・で、俺も考えて作ってみた。
改行多いって怒られるんで、次につづく・・・
0247デフォルトの名無しさん
NGNGmy (
$number, $count, $ketaCount,
@suji, @keta, @oketa, @nums, @newNums
);
$number = $_[0];
@suji = ('', '壱', '弐', '参', '四', '伍', '六', '七', '八', '九');
@keta = ('十\', '百', '千');
@oketa = ('万','億','兆');
@nums = split(//,$number);
@nums = reverse (@nums);
# まだつづく・・・
0248デフォルトの名無しさん
NGNG$ketaCount = 0;
foreach (@nums) {
if ($_ == 0) {
$count++;
} elsif ($count == 0) {
push (@newNums, $suji[$_]);
$count++;
} elsif ($count < 4) {
push (@newNums, $keta[($count-1)], $suji[$_]);
$count++;
} else {
push (@newNums, ($oketa[$ketaCount], $suji[$_]));
$ketaCount++;
$count = 1;
}
}
@newNums = reverse (@newNums);
$value = join('', @newNums);
return $value
}
0249デフォルトの名無しさん
NGNGググったらこんなん出ました。
http://neko.mimi.gr.jp/~fge/pastime/ideo_digit.html
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGまず聞くんじゃなく自分で考えろ。
0252デフォルトの名無しさん
NGNGいや、お題として面白そうだと思ったんでネタ振りのつもりだったんですが・・・
ココはノリが悪そうなのでもういいです
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGファイル中の
<img src="a.jpg">
を絶対パス
<img src="http://..../a.jpg">
にしたいのですが、簡単な方法はありますか?
0255デフォルトの名無しさん
NGNGgetしたURI+src部分=恐らく絶対URI
0256デフォルトの名無しさん
NGNG絶対パスと相対パスが混在している場合を考慮すべきと思われ
0257デフォルトの名無しさん
NGNGhttp://で始まっていればそのまま
/で始まっていればhttp://address:portだけ付け加える
0258デフォルトの名無しさん
NGNGいま捜してるんだが。HTML::LinkExtorでもないし。
0259デフォルトの名無しさん
NGNGもちつけw
単純にやるなら
if http://で始まるならそのまま
elsif /で始まるならgetしたURIのhttp://address:port + 相対パス
else 上二つに合わないならgetしたURI+相対パス
0260デフォルトの名無しさん
NGNGリンクがdef.htmlだと
〉 上二つに合わないならgetしたURI+相対パス
だとだめだべ。
http://foo.com/abc.htmldef.html
0261デフォルトの名無しさん
NGNGgetしたURIの一番最後の/まで+相対パスだね
モジュールも探せばあるんだろうけど別に難しくないし俺は自分でサブルーチン書いたよ
0262258
NGNG絶対車輪の再発明だとおもうんだがなあ
鬱だ師脳
0263デフォルトの名無しさん
NGNG0264258
NGNG0265デフォルトの名無しさん
NGNGああ、もちろんPerlで書くときはそうするw
0266デフォルトの名無しさん
NGNGそれは別の話だろ・・・
つかsrc属性値の抽出はHTML::LinkExtorだけど
おまけにスレ違い
0267258
NGNGHTML::LinkExtorでsrcを抽出はできるんだが、
img以外のタグはそのまま通さなければいけないだろ?
0268デフォルトの名無しさん
NGNGてゆーか君は何がしたいの?
0269デフォルトの名無しさん
NGNGuse strict;
my (@race_code0, @race_code1, @race_code2, @race_code3);
@race_code0 = ("abc", "def", "ghi");
@race_code1 = ("aaa", "bbb", "ccc");
@race_code2 = ("111", "222", "333");
@race_code3 = ("123", "456", "789");
my @array = (\@race_code0, \@race_code1, \@race_code2, \@race_code3);
print @($array[0]);
こんな感じで参照を配列に格納して格納先から要素数を
取り出したいのですがどうすればいいのでしょうか?
要素数取り出す、スカラーを取り出したい。
0270デフォルトの名無しさん
NGNGprint scalar @($array[0]);
0271デフォルトの名無しさん
NGNG0272220
NGNGperly.cのPerl_yyparse()
yynewstate:
・・・
switch (yyn) {
/* contains all the rule actions; auto-generated from perly.y */
#include "perly.act"
}
・・・
goto yynewstate;
から
op.cのPerl_block_startという関数まで辿り付いたけど
何やってるのかよくわからないですね。
my変数用としてどんな処理をしてるのか知りたいだけなんですが。。。
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGもしまだなら読むといいと思われ。
0275デフォルトの名無しさん
NGNGどうやら実際的な実装法を知りたいだけか
0276デフォルトの名無しさん
NGNGdamopo
#!/usr/local/bin/perl
use strict;
my (@race_code0, @race_code1, @race_code2, @race_code3);
@race_code0 = ("abc", "def", "ghi");
@race_code1 = ("aaa", "bbb", "ccc");
@race_code2 = ("111", "222", "333");
@race_code3 = ("123", "456", "789");
my @array = (\@race_code0, \@race_code1, \@race_code2, \@race_code3);
foreach(@array) {
print "@$_\n";
}
my $test = $array[0];
print "@$test\n\n";
#print scalar @$array[0];
コメント部分のような感じでアクセスするにはどうすればいいのでしょうか?
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGできますた
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNGアフォか、吊りか?さあ、どっち
0281デフォルトの名無しさん
NGNGJava = GUIできる
Perl = CGIで"GUI"OKだし Perl/tkがある
0282デフォルトの名無しさん
NGNGopen IN, "hoge.txt";
while(<IN>){
chomp;
push(@seiki, $_);
}
で $seiki[0] に 文字列 'm/hoge/' が入ったとして、
この $seiki[0] を正規表現パターンとして、別の文字列 $string に
マッチするか調べたい場合はどうすればいいのですか?
0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGeval のとこは "\$string=~$seiki[0]" じゃない?
0287デフォルトの名無しさん
NGNGおとなしくパターンだけ書いとけ
0288デフォルトの名無しさん
NGNGボタンひとつで実行でき、かつ自動でブラウザが立ち上がりCGIまで試しに実行できる機能もついた夢のような統合開発環境ふうエディタ、誰か作れ。
0289デフォルトの名無しさん
NGNGどこが面倒なんだ。
拡張子plだったらダブルクリックでコンソール画面が立ち上がってPerlが起動。
スクリプトが実行される。
# Windowsの場合はな。
後はメニューとか作って数字打てば分岐処理してくれるように作ればいい。
コンソールが面倒とか言うお前は本当に物作るする気力があるのかと小一時間(ry
0290デフォルトの名無しさん
NGNGコンソールはともかくとしても、CGIの動作確認がボタンひとつでできる疑似サーバ&ブラウザ的な機能は初心者には重宝すると思われ。
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNGそうゆうの以前作ろうかなと思ってたけど
結局ローカルにApache入れればその方が現実的な環境なんだよなぁ・・・
でもコンソールも使うけどねぇ・・・perl -c とか
0293デフォルトの名無しさん
NGNG二次元配列のメモリの確保のしかたを教えて欲しいんですが…
0294デフォルトの名無しさん
NGNGいや・・・
メモリとかは勝手にPerlさんが確保してくれる訳だが。
0295デフォルトの名無しさん
NGNGあー、でも分かるなあ。
昔はメモリにマシン語領域確保してポークとかピークとかアンド演算子使って1ビット単位でメモリを直接いじってたからなあ。なんせ1バイトも無駄にできない時代だったからね。
今のパソコンってそういうのやりにくいよね。
OSの管理から完全に解放され、ユーザがまったく自由に扱えるメモリ空間がほしいときはたまにある。
0296デフォルトの名無しさん
NGNGで、表示されるフレームを target='_top' のようにやる方法を教えてください。
0297デフォルトの名無しさん
NGNGやりにくいかどうかはべつにして、確保したメモリー内で
自由に1ビット単位で使い倒してもらっていいのだが・・・
0298デフォルトの名無しさん
NGNGWebProg板行け。HTTPヘッダのレベルではそういう解決はない。
呼び出し側のブラウザが決定することだ。
ムリヤリやるなら
CGI呼ぶ→結果のHTMLがjavaScriptで別窓を開く→その結果のHTMLはまたどこかへmeta refresh で飛ぶ
0299デフォルトの名無しさん
NGNGMACアドレスを取得したいのですが、どうしたらよろしいでしょうか。
IPアドレスの取得までは分かったのですが。
色々と調べても、MACアドレスについて(特にperl)は資料がなく困っています。
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGその変数を置き換えたい時はどうすれば良いの?
以下は思いつくけど、単に置換えている状態。
普通に変数は変数として、当てはめる事は出来ない?
# 変数が多いので、置換えをいちいち書くのは美しくない
file.txt
---
$A is a $B.
---
CH.pl
---
#!/usr/local/bin/perl
$A="This";
$B="pen";
open(IN,$ARGV[0]);
while (<IN>){
s/\$A/$A/;
s/\$B/$B/;
print ;
}
close(IN);
---
% CH.pl file.txt
This is a pen.
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG#!/usr/local/bin/perl
my $A = 'This';
my $B = 'pen';
{
local $/ = undef;
my $data = <DATA>;
print eval "qq/$data/"; # デリミタは適宜変更
}
__DATA__
$A is a $B.
0306デフォルトの名無しさん
NGNG……どんなのだか忘れた。
$obj->method()
みたいなのも大丈夫だった記憶があるんだけれど。違ったっけ?
0307デフォルトの名無しさん
NGNGs{
(\$[\w\[\](){}#>-]+)
}{
$1
}egex;
0308デフォルトの名無しさん
NGNG#!/usr/bin/perl -w
use strict;
foreach my $num ( 0..9 ) {
print "$num";
}
これってなにも表示されないんですが、仕様ですかね。。
ちなみに、print "$num\n";もしくは、foreachのブロックを
抜けた後に改行をプリントすると表示される。。。。
ちなみにperl5.8.0です。
0309308
NGNGprint "aaaaaa"
も、改行いれないとなにも表示されない。。。
しらなかった。。。
0310デフォルトの名無しさん
NGNG改行記号でバッファのフラッシュすることになってるのでは
0311デフォルトの名無しさん
NGNG>>309
よくわからんが・・・
バッファしてフラッシュしてないからだろ。
改行するとフラッシュする。
0312311
NGNGレスがかぶっちまった・・・○| ̄|_
0313308
NGNGレスありがとうございます。
どうも、私の端末の原因のようです。
310さんが提示してくださったように、sleepを入れて実行したところ、
0から9まで表示された後、表示が消えてしまいました。
(また、プロンプトだけに戻ってしまった。。。)
なので、ちゃんと表示はしているようです。
Cで書いても同様でしたので、Perlとは関係なさそうです。。。
お騒がせしました。。。m(__)m
0314デフォルトの名無しさん
NGNGいやPerlとおおいに関係のある話だが。
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGperl -e 'for(0..9){print"$_a"}'
後者では端末に何も表示されません。どうしてでしょうか?
0317308
NGNGzshを使っていたのが原因だったようです。
シェルをbashに変更したところ
問題なく表示されました。。
たぶんフラッシュ自体は、プロセス終了時に行われるんだと思います。
0318デフォルトの名無しさん
NGNGよ〜く考えよぉ〜
オカマは男だよぉ〜
うぅ〜う〜うぅ〜う〜うううぅ〜
0319デフォルトの名無しさん
NGNG>>316
perl -e '$_a="MANKO\n";for(0..9){print"$_a"}'
を試してもらえればきっとどうしてか理解してもらえるだろう
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGこの環境で、ActivePerl Build 522 をインストールしても
両方のPerlを共存させる事は可能でしょうか?
目的はJPerlを利用したい為です。
0322321
NGNG0323デフォルトの名無しさん
NGNGただあんたにパスの指定ができる能力が必要
ただASP.Perlとか使う場合はまた別だけど
0324デフォルトの名無しさん
NGNG無理だからしんどけ
おとなしくCで
0325デフォルトの名無しさん
NGNGそれから定数を参照・使用するって可能ですか?
0326デフォルトの名無しさん
NGNG可能
イロイロ方法はある
別ファイルをevalでメモリに読み込むとか
.pmでモジュールをつくって
それをuseすればいい
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGperl5.8最強伝説
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGバージョンアップの要請メール送ったか?
大体は鯖管理者にメール送れば、結構柔軟に対応してくれるけど・・・
プロバ鯖か・・・
微妙だな・・・
でも、どうしても5.8にしてほしいならメール送らない事には何も始まらない。
0332デフォルトの名無しさん
NGNG該当のモジュールを入れていないマシンで、そのプログラムを動かすことが
できますか?
0333デフォルトの名無しさん
NGNGおいおい…5.8シリーズはもう十分安定していると思うのだが…
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG予定がない = そんな事する意思なし。
予定は未定 = 意思はある。けど、そのうちな〜。
意味はおおいに違う。
0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNGPARならできるようだが、perlccはどうだろう?つーかperlccはまだβ版ですらないからなぁ。
0338デフォルトの名無しさん
NGNG解答ありがとうございます。
PARについて調べてみたいと思います。
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNGこれじゃないか?
http://perldoc.jp/docs/modules/PAR-0.75/lib/PAR.pod
0341デフォルトの名無しさん
NGNGありがとう。
ARはARCHIVEのことなんだ。
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG予定は未定 = いえね、旦那、そうする積りがあるようなないような、ぐにゃぐにゃ.......さーて、どっち
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG予定は未定 = やる気はないが、ずるずると引き留めとこう
>>333
5.8 にすることで、既存の (ユーザの) スクリプトが動かなくなって、
トラブルやクレームが大量に発生するというような可能性もあるわけで、
そう簡単に、はいアップデートします、とはいかないでしょう?
5.8 自体が十分に安定してるかどうかとはまた別問題で。
0346デフォルトの名無しさん
NGNG5.6、5.8間で、互換を失うようなバージョンアップあった?
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG「この通りすればO.K.」みたいなサイトはありませんか?
checkinstallも試してみたけど、「installのルールがありません」でエラーが出てしまうし。(;´д⊂
0351デフォルトの名無しさん
NGNGREDHATスレできけや
0352デフォルトの名無しさん
NGNGjperlで作ったコードの移植は大変だったけどね。
0353デフォルトの名無しさん
NGNGとりあえず/usr/local/bin/perl5.8を用意して、ユーザーにその旨を伝え、
移行期間(半年程度?)を置いた後に/usr/local/bin/perlを5.8にしてくれればいいのだ。
もちろんその際/usr/local/bin/perl5.[56]は残しておいてくれてかまわないわけで。
あああマンドクサイですかそうですか。
0354デフォルトの名無しさん
NGNG5.6でもいいような気がする。
5.8使いたい理由ってなんだ?
どうせ5.6のモジュール使えば解決する話だろ。
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNG面白い香具師だな!
0358デフォルトの名無しさん
NGNG5.8を使いたい理由はただ一つ。Encodeモジュールだ。
0359デフォルトの名無しさん
NGNGperl5.6で
Jcode.plか
Jcode.pm使えや
#■■終了■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0360デフォルトの名無しさん
NGNGスレッド
あと、標準モジュールどっさり。
0361デフォルトの名無しさん
NGNG他の人が作ったライブラリで使用してるのは、jcode.plくらい。
後は自分で作ってるし・・・
Perl標準全モジュールの使い方が載ってる本とかありますか?
0362デフォルトの名無しさん
NGNGCPAN
0363デフォルトの名無しさん
NGNGスレッドっているか?forkでよくね?
そこまでパフォ上げたいなら
PHPかJSPにするだろ。
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGPerl>>>PHP
0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNGPGって名乗っても悪くはないと思うけど。
けど「PG」って堂々と名乗りたいなら、何に限らずある程度複数の言語を使え、
それぞれの言語である程度のものが出来る程度のスキルは無いと、
まあ、恥を掻く事があるかも知れない。
0369デフォルトの名無しさん
NGNG俺も最初はjcode.plしか使ってなかったけど、標準モジュール使い始めたらjcode.plなんて全然使わなくなった。
CGI,Jcode,(CGI::Pretty),CGI::Carp,HTML::Entities,POSIX
CGI作るときのオススメー。
0370デフォルトの名無しさん
NGNG責めあげるスレになりました。5.6と共存でもいいじゃん。
/usr/bin/perlは5.6のままでいいからさ。
0371デフォルトの名無しさん
NGNGそりゃpthread入ってない環境もあるだろうし
めんどいじゃん
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGあったら見てみたい、使ってみたいのですが。
0376デフォルトの名無しさん
NGNGまぁPerl6ってperl5を使わないと動かないんだけどね・・・
0377デフォルトの名無しさん
NGNG0378Perlerの本音
NGNGsh,Scheme,Python,Ruby,...普通に使える。
とはいいつつも一番手に馴染んだものってのが
やっぱりあって、それが僕の場合はPerl5なんです。
こういうのはもう理屈じゃない。体が覚えてるようなものだから。
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG42 * * * * script/test.pl -I /home/hoge/script
としてtest.pl内useしているcommon.pm /home/hoge/script/common.pm
のディレクトリを@INCに追加したいのですがうまくいきません。
どうすればいいのでしょうか?
0382デフォルトの名無しさん
NGNGtest.pl で use lib すれば?
0383デフォルトの名無しさん
NGNGpwd
/home/hoge
dir
script/test.pl
script/common.pm
./script/test.pl
この環境の場合
use lib 'script'
でokですか。
フォルダが変わった場合ソース弄るの嫌なんで
オプション指定で解決したいのですが。
#21 * * * * cd script; ./test.pl
#の方法を思いついたのでこれにしました。
0384デフォルトの名無しさん
NGNGuse lib '/home/hoge/script';
use common;
42 * * * * /home/hoge/script/test.pl
でいいいじゃん。
> フォルダが変わった場合ソース弄るの嫌なんで
> オプション指定で解決したいのですが。
普通モジュールってのはいろんなプログラムから使う、って事で
モジュールにするわけだから、プログラムとの相対位置関係を
維持するって発想は間違いで、どっからでも使える絶対位置に置く
ってのが基本じゃない?
俺は /home/hoge/lib/ とかに置いていろんなとこにあるいろんなプログラムから
use lib '/home/hoge/lib';
use script::common;
ってやるよ。
test.pmがどこにあろうがpwdがどこだろうがソース弄る必要ないよ。
0385デフォルトの名無しさん
NGNGuse lib "$Bin/../lib"; # 実行ファイルのあるディレクトリから相対的にライブラリをインストールしてあるディレクトリを指定
0386デフォルトの名無しさん
NGNGヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
0387デフォルトの名無しさん
NGNG"XXAXX\nXX\nXAXX"
という改行を含んだ文字列があってA〜Aの間を取りたいと思っています
/A.*A/ではドットが改行を含んでいないので取得できません
/A[.\n]*A/だとできるのかなと思ったらできませんでした。
なんとかA〜Aを抜き出す方法があれば教えてください。
/A[^A]*A/は無しにしていただけると助かります。
(本当はもっと複雑なのでA以外を取得という技は使えないのです)
0388デフォルトの名無しさん
NGNG0389黒死犬 ◆EgxBlf8nvc
NGNG0390黒死犬 ◆EgxBlf8nvc
NGNG0391デフォルトの名無しさん
NGNGなんだ?なんかエロい感じがするぞ?なんでだろ?
0392デフォルトの名無しさん
NGNG>>388-390
ありがと〜
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG一番邪魔なのが古いperlだ。
0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG毎回全部書き直して環境も変更できると思ってるのか?若いな。
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG詳しく説明しているHPはないでしょうか?
0401デフォルトの名無しさん
NGNG例えばどんなコード?
0402デフォルトの名無しさん
NGNGコードも判りませんが、それ以前に本の解説がわからないです。
0403デフォルトの名無しさん
NGNG駱駝本に例になるコードが出てるだろ。それが実際に動くような
スクリプトを書きゃいいじゃん。それが理解の第一歩。
それとも、上げ膳据え膳の解説が希望なのか(w
0404デフォルトの名無しさん
NGNGhttp://www.google.co.jp/
0405デフォルトの名無しさん
NGNGでもつかわなそうだし、別に理解しなくてもいいんじゃね?
行範囲演算子として使えれば、十分。
$perl -ne 'if(3..5){print}' /etc/group
0406デフォルトの名無しさん
NGNGwww
0407じゃね?
NGNG0408デフォルトの名無しさん
NGNGこういうのでいいの?つまり真偽の状態を持つ演算子ということで。
$_の値が
0(0,1)=左が偽である限り状態は偽
1(1,0)=左が真にになったので真。右に真が来るまで真
2(0,1)=右が真になったので、次の状態↓からは偽。ここは真
3(0,0)=左が偽であるので状態は偽($_=0と同じ)
これでいいかな?
0409デフォルトの名無しさん
NGNG正規表現も便利だぞ
while(<>){
print if /start/ .. /end/;
}
これにstartとendを含む行があるようなテキスト食わせてみ
0410デフォルトの名無しさん
NGNGテキストのサーチなんかでいちいちフラグ使わなくてもよさそう
0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNGTerm::ReadKey
0413デフォルトの名無しさん
NGNGpackage Term; # とか
package Term::Readkey; # とか
package Term::Foo; # とか
等があった場合 Term の部分が共通していますが、
これらは全く別物で関連性がないものとして扱われるんでしょうか?
0414デフォルトの名無しさん
NGNG簡単に言うと
Foo::Bar::Baz とあるなら
Foo::Bar::Baz は Foo::Bar を利用し
Foo::Bar は Foo を利用している
0415デフォルトの名無しさん
NGNG10分ごとに処理させるプログラムなのですが
time関数でむりやり組んだのですがidx値が10.万を超えてしまって
まともに動かないんですが
いいプログラムあればご教授ください
bacetime();
while(1) {
print"------- work ------\n";
msleep(5000);
thistime();
}
sub bacetime
{
$basetime=time;
}
sub thistime()
{
my $thistime;
my $idx;
$thistime=time;
$idx=$thistime-$bacetime;
if($idx >= 600) {
bacetime();
}
print $idx;
print "\n";
}
0416デフォルトの名無しさん
NGNGそういうことを聞いているんじゃないよ。
0417413
NGNG勝手に答えんなヴォケっ
>>414
他のモジュールをさらっとみてきましたけど
package Foo::Bar::Baz; # は
use Foo::Bar; @ISA=qw(Foo::Bar);
package Foo::Bar; # は
use Foo; @ISA=qw(Foo);
のような傾向になってましたけど、このようにuseとか@ISAを指定していなければ
やはりモジュール同士は全く関係がないという事でしょうか?
0419デフォルトの名無しさん
NGNG下手くそな自演だな(w
まあ勝手にしてくれ。
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNGcron使うという考えはないわけ?
0422デフォルトの名無しさん
NGNG私は、C/C++(VC,BCB)、PASCAL(DELPHI)をそこそこ使えるのですが、Perlの難しさに困っています。
CGIを作る事を前提にPerlを学ぶとして、良本を紹介して欲しいのですが、お願い申し上げます。
0423デフォルトの名無しさん
NGNG> C/C++(VC,BCB)、PASCAL(DELPHI)をそこそこ使えるのですが、
これと、
> Perlの難しさに困っています。
これが繋がらない。
0424デフォルトの名無しさん
NGNGモジュールやライブラリで使用したいので
cronは無理です
0425422
NGNGつまり、以前にMASMなどのアセンブラを学習しておけば、N88-BASIC(86)など簡単に使えるし、これにイベントの考え方、コントロールの考え方を理解すればVBも使えます。
Cなど、構造化アセンブラーで、DOSの時代には、コンパイルされた後のアセンブラーソースも想像しながら書いていました。
つまり、パラダイムが同じなんですね。C++は、若干苦しみました。OOPですね。
でも、Perlという言語は、本当の意味の高級言語で、呪文の様な1行でCなら数行書かなければいけない事を出来そうです。
この上、暗黙の変数?ってのが、よく分かりません。
今、読んでいる本は、Perlを体系立てて説明していないので、非常に困っています。
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGこれを自慢したくて書き込んだとしか思えない。
0428422
NGNG自慢にならんよ。
同じパラダイムの言語を何個使えても、単語の入れ替えだけじゃん。
0429デフォルトの名無しさん
NGNGmy($wait,$time) = (600,time);
while(sleep(1)){
if($wait <= (time - $time)){
$time = time;
print "$time\n";
#ここで処理
}
}
何をするのか分からないが
単純に約10分ごとに秒を出すような処理
0430デフォルトの名無しさん
NGNGprint (scalar 1,10);
これを実行すると、
110
と出力されます。
scalar演算子君は無視ですか?
0431デフォルトの名無しさん
NGNG早速組んでみます
0432デフォルトの名無しさん
NGNG> scalar演算子君は無視ですか?
いいえ。
0433デフォルトの名無しさん
NGNGprint("aaa","bbb");
"aaabbb"
0434デフォルトの名無しさん
NGNGprint (scalar 1,10);
print scalar( 1) ,10;
print scalar( 1,10);
:
:
print scalar(@{[1 ,10]});
0435デフォルトの名無しさん
NGNGFoo::Bar という表現はBarクラスはFooクラスを継承してますよという意味で使われるので
全く関係が無いなら使うべき表記じゃないしコード上でも使えないはず
FooとBarが関係ないならFoo::Barは存在しないわけだから
0436デフォルトの名無しさん
NGNG的外れ。Foo::BarとFooおよびBarは無関係。
正確には、Foo::BarはFooパッケージの中にあるので、Fooのシンボルテーブルを削除するとFoo::Barまで消えてしまったりするが、言語レベルではそれだけの関係に過ぎない。
例えば、CGIクラスとCGI::Carpクラスは互いに関係無いクラスだ。
ただ、意味的には関係のあるクラスを入れ子にするのが一般的だろうけどな。
0437デフォルトの名無しさん
NGNG0438413
NGNG>>437
とりあえず>>412を見て質問を考えました。
>>419-420が出てきたのでとりあえずperlmodを読んでみましたが、答えになりそうな
> パッケージは、$OUTER::INNER::var のように、別のパッケージの
> 中にネストすることもできます。 しかし、これが名前の検索順序
> に関るものではありません。 すべてのシンボルは、その時点のパ
> ッケージにローカルであるか、完全な形でパッケージ名をつけて、
> 外部のパッケージから導入したものでなければなりません。 たと
> えば、パッケージ OUTER にいるとすると、$INNER::var という表
> 現は、$OUTER::INNER::var を参照します。 パッケージ INNER は、
> まったく独立したグローバルなパッケージとして扱われます。
の
> たとえば、パッケージ OUTER にいるとすると、$INNER::var という表現は、$OUTER::INNER::var を参照します。
の部分がよくわかりません。
というか試しに書いてみたスクリプトでは
package Fooで$Bar::varを触るとpackage Barの$varを触っている事になってしまうんですが、
どうなるのが正しいのでしょうか?
0439デフォルトの名無しさん
NGNG>ただ、意味的には関係のあるクラスを入れ子にするのが一般的だろうけどな。
んじゃ一般的に
>Foo::BarとFooおよびBarは無関係。
とは言えないんじゃ?
にしても
>CGIクラスとCGI::Carpクラス
のように必ずしもモジュール名=クラスの継承関係じゃないってのは引っかかるなぁ・・・
>>438
package Bar で @ISA = qw(Foo) したかい?
0440デフォルトの名無しさん
NGNGよく読んでなかった
>>438
>package Fooで$Bar::varを触るとpackage Barの$varを触っている事になってしまうんですが、
>どうなるのが正しいのでしょうか?
そうなるのが正しいです。
package Bar で @ISA = qw(Foo) したなら
Foo内で $Bar::var は $Foo::Bar::var ですし、BarがFooを継承していない場合は
$Bar::var は単に package Bar の $var です。クラスの階層としてはFooと同レベル。
いずれにせよpackage Barの有効範囲内の$varであることに変わりは無い
で合ってますか?エロイ人w
0441413
NGNGどちらも日本語perlmodとは違う訳し方で似たような結果になったので
名無しさん@英語勉強中の方々(←どうもありがとうございます)に聞いてみたところ
> たとえば、パッケージ OUTER にいるとすると、$INNER::var という表現は、$OUTER::INNER::var を参照します。
ではなく
「例えば、 package OUTER の範囲内で、 $INNER::ver が $OUTER::INNER::var を参照する事はどこにもない。」
の方が正解に近いようです。(←名無しさん@英語勉強中の方々には失礼ですが否定されたときの伏線です)
つまり、継承していてもしていなくてもpackage Foo内でもpackage Foo::Bar内でも
$Bar::varはpackage Bar内の$varを参照するということになるはず。
0442540
NGNG関連サイトサイト探したのですが、リナックスの奴しか見つかりませんでした。
関連サイトありましたらおしえてください。
windows2000、自サーバです。
0443デフォルトの名無しさん
NGNG可能
> 関連サイトサイト探したのですが、リナックスの奴しか見つかりませんでした。
リナックスの奴とは?
> 関連サイトありましたらおしえてください。
ttp://www.google.co.jp
> windows2000、自サーバです。
自サーバとは?
0444デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/sql/default.mspx
0445デフォルトの名無しさん
NGNGPostgreSQL/cygwin
MySQL
FireBird
全部 Linux/Windowsで動くだろうが
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNGPPMコマンドでDBIとDBD-「ほげ」をsearch してみてください。
「ほげ」の部分はお使いのDBによって変わります。
0448デフォルトの名無しさん
NGNGパッケージ名は階層をつけることができるが、
階層の親子間では特に言語的なサポートは何もない。
階層をつけるのは作成者によるカテゴリ分けを容易にするため。
ここでいう言語的なサポートは
「継承」や「階層の親パッケージの参照」のことね。
ただしある配布パッケージが、複数のPerlモジュールを含み
それらがパッケージ階層を構成していることは珍しくない。
LWP などがそうだね。
要するに、TMTOWTDI ってこと。
0449デフォルトの名無しさん
NGNG何がいいでしょう?
調べてもキーワードが悪いので、思っている内容にヒットしません。
モジュールのサブルーチンで
my $self = shift;
$chr[0] = 'test1';
$chr[1] = 'test2';
$self->{data} = @chr;
return $self;
こんな感じにして、
呼出側で
@chr = $pkg->{data};
print "$chr[0]\n";
こんな感じでしてみましたがダメでした。
なぜダメかもわからんし……。
0450デフォルトの名無しさん
NGNG@chr = @{$pkg->{data}};
じゃないの?
0451デフォルトの名無しさん
NGNGありがとうございます。
その書き方は知りませんでした。
解決しました。
0452デフォルトの名無しさん
NGNGラクダ本のリファレンスのところは暗記するほど読んでおこうね
0454デフォルトの名無しさん
NGNGbless {
foo => undef,
hoge => undef,
},$pkg;
と定義されていて、利用するプログラムから
'foo'や'hoge'の部分の名前を知る方法はありますか?
手持ちの入門書にはここら辺の事が書かれていないので、
呼び方もわからないので巧く表現できませんがお願いします。
0455デフォルトの名無しさん
NGNG> 例えばモジュールの中で
> bless {
> foo => undef,
> hoge => undef,
> },$pkg;
> と定義されていて、利用するプログラムから
> 'foo'や'hoge'の部分の名前を知る方法はありますか?
> 手持ちの入門書にはここら辺の事が書かれていないので、
> 呼び方もわからないので巧く表現できませんがお願いします。
sub Vars {
my $self = shift;
my @vars = keys %{$self};
return wantarray ? @vars : \@vars;
}
0456455
NGNGしかも無駄に引用レスしちまった。(;´Д`)スマソ
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGパロットがv0.10だもん
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGos Windows2000 ActivePerlv5.6.1で
Perlモジュール (FFST) playSoundを使用したいのですがうまくいきません
playSound('use/mawa.wav', 120);
一応再生は出来るのですが、
PlaySoundを呼んだ時にしばらく止まってしまします
数分するとなんとか機能取り戻すのですが、
それまではタスクからも止まりません
0462デフォルトの名無しさん
NGNG環境変数を表示するperlのコードをfoo.plとでもして、chmod +xしておきました。
ファイルの先頭も#!/usr/bin/perlとだけ書いたのですが、./foo.pl として実行
しようとすると、bashがそんなインタプリタないぜ、とか言ってます。
もちろん、perl foo.plは正しく実行できますから、パスは通っています。
0463デフォルトの名無しさん
NGNGtelnetを通してシェルが操作できるサーバーを作っています。
サーバーの部分は問題なく出来たのですが、シェルを起動する部分で system('/bin/sh'); としたところ
スクリプトを起動したコンソールにシェルのプロンプトが出てしまいます。
また、telnetで接続してきたクライアントからの入力をシェルに渡す事が出来ません。
クライアントからシェルの入力を受け取りクライアントに出力を渡すにはどうやればいいのでしょうか?
0464デフォルトの名無しさん
NGNGwhich perl
とか。
0465デフォルトの名無しさん
NGNGかなりスレ違いじゃねーのかと・・・
telnetでシェル起動するサーバって・・・
telnetで接続できて、シェルが起動しないtelnetって何の価値があるのかと。
何してんだかわかねーが・・・
素直にtelnetデーモン入れろよ。
0466デフォルトの名無しさん
NGNG>telnetで接続できて、シェルが起動しない
ftpd とか httpd とか。
0467デフォルトの名無しさん
NGNGNet::Telnet とか Expect とか使えば?
と微妙なレスをしてみる。
0468デフォルトの名無しさん
NGNG単独スレ需要なし?
0469デフォルトの名無しさん
NGNG餅は餅屋。
PerlでGUIプログラムするのって間違ってる派。
GUIやりたいなら、違う言語を学べ
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG賛同者がいるかようだからスレ立ててみたら?
おれは今のところ関心無し。
0472470
NGNGここでいいんじゃねーの、数が多けりゃ別スレにでもするのがいいだろうけど
話し逸れるが、どうせ別にするならWindows を別にしてくれた方が有り難いな
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNGこのスレの中でTkしても間に合う。
俺はたまーーにTkする。
…ってもインタプリタなperl君だから自分専用作業のためのGUIしか作ったコトないけどね。
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGテンプレートエンジンがよくあると思いますが、
例えば、メールのメッセージを作成するようなケースだと、こういうタグ形式よりは、
もっと行指向ベースなテンプレートで記述したいと思うことがよくあります。
そういった用途に向いたテンプレートエンジンでお勧めなものがあれば教えて下さい。
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNGASPやJSPでもなければ普通に書こう
0481デフォルトの名無しさん
NGNG同様に、実装者 (プログラム書く) と運用者 (メール文面書く) を分担したいのです。
複雑な制御構造とかは要らないのですが、変数→文字列置換に毛が生えたくらいのが
できるようなものはないかなあと。
0482デフォルトの名無しさん
NGNGこの質問は取り下げます。
スレ汚し大変失礼いたしました。
0483デフォルトの名無しさん
NGNG後々不満だらけに成るからカスタマイズ出来ないと窓から投げたくなる
0484デフォルトの名無しさん
NGNGみたいなコードが大量にあるんだけど、ひょっとして邪道?
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNGけど
0487デフォルトの名無しさん
NGNGこうかな
0488デフォルトの名無しさん
NGNGこうか
0489デフォルトの名無しさん
NGNG全部同じ処理じゃねーか
0490デフォルトの名無しさん
NGNG0491463
NGNGえーと、telnetdとはちょっと違って接続したら認証はなくて直接シェルが出てくる感じです。
えーと、とりあえずtelnetdのソースをもう一度見てきます。
0492デフォルトの名無しさん
NGNGbashなら -lとかつけて
とか関係ないレスつけてみる。
0493デフォルトの名無しさん
NGNGsystemじゃなくて、openでパイプ
0494デフォルトの名無しさん
NGNGPerlのフォーマットとかはどうよ?
0495デフォルトの名無しさん
NGNG@queue : shared = ();
これは何をやっているのですか?
空の配列を宣言?しているのでしょうか
ただ宣言するだけでも空になると思うのですが・・・
明示的にしているとか?
ちなみにパッケージは
use threads;
use threads::shared;
です
0496デフォルトの名無しさん
NGNGなんでこれが通るんですか?
0497495
NGNG@queue : shared = ();
ではなくて
my @queue : shared = ();
でした
0498デフォルトの名無しさん
NGNGそのソースどこから落とした?
0499デフォルトの名無しさん
NGNG出来ればLinuxで。
0500デフォルトの名無しさん
NGNGコンパイル後のこの出力を理解できるようになれれば
いいんですけどね。なかなか。
0501デフォルトの名無しさん
NGNG0502495
NGNGttp://www.hyuki.com/dig/perlthread.html
0503デフォルトの名無しさん
NGNG次のスレタイ?
0504デフォルトの名無しさん
NGNGスレッドで共有する変数の宣言、および初期化
0505495
NGNGそういうことみたいですね。で、調べてみたら、
ttp://www.donzoko.net/doc/memo/perlithreads.html#note_context
Perlのスレッドシステムは「明示的な共有データ」という考えに基づく。
→デフォルトでスレッド間でデータを非共有。
これによりスレッドセーフなモジュールの開発を簡単にしてくれる。
とあるので、まさにこれがその書き方なんでしょうね。
で、これらの共有変数に対してウェイトセットに入っている
スレッドを
cond_broadcast(@queue);
として起こしてあげる、と。
なんとなく雰囲気はつかめました。
どうもありがとうございました。
0506デフォルトの名無しさん
NGNG初期化とはどういう意味があるんでしょう?
0507デフォルトの名無しさん
NGNGmy @foo = ();
上記の文については、空の初期化は無意味。my宣言したものは常に空だからね。
my @foo; # @fooは空だからね!
まぁ、こんなコメントをつける代わりに、 =()をつけていると思っていいよ。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG例えばどういうケース?
0510デフォルトの名無しさん
NGNGこれのコロンはなんていう演算子?
0511デフォルトの名無しさん
NGNGshared属性( my $var : shared )を使うことで、ある変数をコンパイル時に
共有化されたものとしてマークすることもできる。
0512デフォルトの名無しさん
NGNGトラックバックのpingを実装しようとSocketでPOSTリクエストをする
スクリプトを書きました。実際にリクエストはできるのですが、相手側からの
意図した応答が得られませんでした。リクエスト内容を教えていただけませんか?
ttp://lowlife.jp/yasusii/stories/8.html
ここのリクエスト内容を参考にしました。
ttp://www5e.biglobe.ne.jp/~halcyon/cgi-bin/tb/test.txt
書いたスクリプトです。
よろしくお願いします。
0513デフォルトの名無しさん
NGNGスレ汚しごめんなさい。
0514デフォルトの名無しさん
NGNG演算子じゃない。version5.6.0から追加された変数・関数に対するアトリビュート指定。
perldoc Attribute::Handlers
perldoc attributes
0515464
NGNGありがとうございます。
>>492
私は、基本はtcsh困った時はsh派です。と言う冗談は置いといて、
最終的にcommand.comで使うので
(MS-DOSプロンプトのバッファの少なさをtelnetクライアントのバッファで補おうかというのが目的)
その辺りはおそらく関係ないと予想されます。
>>493
という事で open(SHELL, "| $shell |"); みたいなopenをしてみたところ暴走しました。
ちょっとこっちの書き方が悪そうなので何とかしてきます。
0516464=463
NGNG0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG$Pipe = ' 2>&1 |'; # Unix,NT->' 2>&1 |' 95,98->' |'
sub ExecCommand
{
my $Msg = &CurrentDir . '> ';
if ( $FORM{'Command'} eq '' ) {
return $Msg;
}
$Msg .= $FORM{'Command'} . "\n";
open(IN, "$FORM{'Command'} $Pipe");
while ( <IN> ) {
$Msg .= $_;
}
close(IN);
return $Msg;
}
参考までに
0519デフォルトの名無しさん
NGNGおまいさんPerl云々の前にshの使い方知らないだろ?標準入力からコマンド渡してどうすんだ。
0520デフォルトの名無しさん
NGNG> for (my $i = 0; $i < 10; $i++){
> sleep 1;
> print "\x1b[A" if $i;
> print " i = $i\n";
> }
↑の "[A" について解説願います!
0521デフォルトの名無しさん
NGNG"\x1b[A"。/etc/termcap ってファイルがあったら、中を覗いて
みると、up=\E[A とか書いてあるはず。
0523デフォルトの名無しさん
NGNGANSI エスケープシーケンス(escape sequence) 。
カーソルを上に移動させるものです。
詳しくは「ANSI エスケープシーケンス」でググッて味噌。
0524523
NGNG0525デフォルトの名無しさん
NGNG別ファイルに出力したいのですが、ちょっと難問が…
ログファイルは基本的に下記のように発言者、日時、発言内容で成り立っています。
<ログの例>
山田 2004/06/28 09:12:15 ○○○○○○○○○○○○○○
佐藤 2004/06/28 09:15:58 △△△△△△△△△△△△△△
鈴木 2004/06/28 09:15:58 □□□□□□□□□□□□□□
このように1行で1人の発言内容ならば問題無くある特定の人物の発言だけを抜き取る事はできるのですが、
複数行にまたがった発言ログの場合、どのように取り出せばよいのでしょうか?
必ずしも次の行に発言が無い場合もあります。
このようなログを特定の人物のものだけ抜き出し、複数行にまたがっている発言内容は1行で出力したいのです。
<困ってるログの例1>
山田 2004/06/28 09:12:15 ○○○○○○○○○○○○○○
○○○○○○○
佐藤 2004/06/28 09:15:58 △△△△△△△△△△△△△△
鈴木 2004/06/28 09:15:58 □□□□□□□□□□□□□□
<困ってるログの例1>
山田 2004/06/28 09:12:15 ○○○○○○○○○○○○○○
佐藤 2004/06/28 09:15:58 △△△△△△△△△△△△△△
△△△△△
△△△△△
鈴木 2004/06/28 09:15:58 □□□□□□□□□□□□□□
0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG(\sが含まれる)可能性はないんですか?
なkれば、>>527 でOkじゃない?
next if /^$/; もいれれば、2つ目の困ったパターンもOk。
0529525
NGNG0530デフォルトの名無しさん
NGNG残りは内容、空行以外で名前、日付、時間に合致しないのは
続きの内容としてアペンドしていきゃいいんじゃね?
0531デフォルトの名無しさん
NGNGマッチしなければ直前の行の一部にするというようなコードにするかな。
my $NAME = '佐藤';
my $name;
my $buf;
for (;;) {
$_ = <>;
if (!defined $_ || m{^(\S+) \d{4}/\d\d/\d\d \d\d:\d\d:\d\d }) {
print $buf if $name eq $NAME;
last if !defined $_;
$name = $1; $buf = $_;
} else {
$buf .= $_;
}
}
運悪く発言内容の一部に正規表現マッチするような部分があって、それが
たまたまうまい具合に行頭にきちまうこともあるだろうけど割り切りね。
0532デフォルトの名無しさん
NGNGもしプログラムの方をいじれるならフォーマット変えた方がいいと思われ。
たとえば、発言の終了は LF で発言中の改行は CR とか。
0533デフォルトの名無しさん
NGNG今からでも遅くはない、フォーマットを変更しろ。
個人的には、\t 区切り、発言内容中の改行は<br>にでも。@テキストエディタで直接みられるように。
0534デフォルトの名無しさん
NGNGさんざん言われてるけどログの構造が間違ってるとしか言いようがない
もし発言内容に
山田 2004/06/28 09:12:15 ○○○○○○○○○○○○○○
なんてのがあったらどう?
もう手ぇ付けらんないでしょw
0535デフォルトの名無しさん
NGNGちょっとワラタ。
ところで、俺の場合ログファイルなどの区切り文字は自分でこんな感じの関数作ってる。
場合によっちゃ重いんだけど、実体には普通に全ての文字を書きたいから…。
#連結時
sub my_join ($$;@) {
my $separat = shift or return();
my $enclose = shift or return();
my @entity = @_ or return();
$separat ne $enclose or return();
map {s/($separat+)/$separat$1/go} @entity;
return( join qq[$enclose$separat$enclose], @entity );
}
#分割時
sub my_split ($$$) {
my ($separat, $enclose, $all) = @_;
my @entity = split /$enclose$separat$enclose/, $all;
map{s/$separat(?!$separat)//go} @entity;
return(@entity);
}
0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNG変数構造そんまま格納して読み込んで使ってる。
splitだのjoinだの、デリミタ何にするかとか悩まないし、すげえ便利。
0538デフォルトの名無しさん
NGNGログファイルみたいに逐次書き出しみたいなのは可能?
0539デフォルトの名無しさん
NGNG可能。
俺は150人ぐらいだけどある組織の会員データとか、
その会員向けに組織別に開設したBBSのログファイルとか
組織別に開設したMLの登録リストとかをData::Dumperで格納してる。
ついでにその変数構造をHTML::Templateのテンプレートにあわせた形にしてるので
読み込んでテンプレートに食わせるだけで表示できるようにしてる。
デリミタかませてファイルに格納したり、読み込んでsplitして変数に組み立てて、
それから吐き出し形式にしてテンプレートに渡して、とかしてない。
Storableでもいいけど、データがエディタで直接開けてデバッグに便利なので
Data::Dumperをもっぱら使ってるけど、まあこんなくらいのデータ量だから。
ただData::Dumperは自前で排他共有ロックしなくちゃ、だけど
Storableは、
lock_store \%table, 'file';
$hashref = lock_retrieve('file');
なんてそれもついでにしてくれちゃうんで便利だよね。
0540デフォルトの名無しさん
NGNGハッシュの3重ネストとか、もう処理めんどいから Storable で一発
必要になったら考えれば良いし、何より互換性は最強だしな
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGどういういみ?
0543539
NGNGStorableって互換性、最強?
ちょっと前に書いたやつ、多重ハッシュそんまま保存したくて
MLDBM使ったやつがあるんだけど、環境動かしたとき大変だった。
Storable使うように書き換えようかな
0544デフォルトの名無しさん
NGNG有用なやつで
0545デフォルトの名無しさん
NGNGCSV形式を使えばいいんじゃない
改行とかカンマが有る場合は 「"」 で囲う
で「"」内での「"」は「""」で表現する
この形式ならよく使ってるよ
0546デフォルトの名無しさん
NGNG処理速度に難有りなんだなこれが。
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGブラウザでファイルのアップロードする掲示板みたいなものがあります。
複数のファイルを送信しているのですが、ひとつずつファイルを選択してから
送信の繰り返しをしています。
何とか順次ファイルを送信したいのですが、相手のプログラムを変更したり
サーバーに直接ファイルを転送する事ができないので、Perlで自動的に
送信をするようにしたいと思っています。
受け取る側のCGIなどは見つかるのですが、送信をするにはどうしたら良いかがわかりません。
サンプルプログラムなどが載っているサイトがあれば教えてください。
0550デフォルトの名無しさん
NGNGCPANにあるlibwww-perl使うのがいいと思われる。
0551デフォルトの名無しさん
NGNGありがとうございます。
0552デフォルトの名無しさん
NGNGだな。 Data::Dumper や Storable の方が遥に高速で効率が良い。
0553デフォルトの名無しさん
NGNG> みんなが驚いたコード教えてよ
print @List[0]
0554デフォルトの名無しさん
NGNGセミコロンがなくてもいいのかーっ!!ってこと?
0555デフォルトの名無しさん
NGNGprint $List[0];
が正しいのに、思ったように動作していたこと。
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG↓
@List[0]
0558デフォルトの名無しさん
NGNGとかやるともっと驚けるかもよん。
僕が驚いたのは
@hash{qw/foo bar baz/} = qw/foo bar baz/;
かなー。目から鱗と言うか。
0559デフォルトの名無しさん
NGNGよく読むとそんなにトリッキーじゃないんだけどね
最初に見たときは小便ちびりそうになった
0560デフォルトの名無しさん
NGNGスライスで配列のメンバを一つだけ指定してると考えればなんらおかしな
ことではない。557はどうやって解釈するのか知らんけど。
0561デフォルトの名無しさん
NGNGmy %namr2index=();
my @names=qw(foo bar Hoge etc);
@namr2index{}=0..$#names;
あと@List[0]と($List[0])が同じ
0562デフォルトの名無しさん
NGNG@List2 = ('AAA','BBB');
$Scalar1 = scalar @List1;
$Scalar2 = scalar @List2[0];
print "$Scalar1, $Scalar2";
で、
1, AAA
ですが何か?
0563561
NGNG@namr2index{@names}=0..$#names;
の間違い
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNGで、これはどう解釈するんだ?
0567デフォルトの名無しさん
NGNG分かって無い奴が間違っただけだと思うからスルーするが吉な気がするのは俺だけだろうか
リファレンスでは -> 省略できるけどね (←関係ありそうで無い話)
0568デフォルトの名無しさん
NGNG俺も分からん。。。教えて!えろいひと!
0569デフォルトの名無しさん
NGNG@{av}という書き方もできるのね。
これはスライスにも適用可能。@{av[0,1]}、@{hv{1,3}}
あと、@av->[0]と関係あるかどうかは分らないけど、
av->[0]と@を省略してもOK。
0570デフォルトの名無しさん
NGNG@を省略しちゃえばavは裸の文字列定数で表されたシンボリックリファレンスに
なるからむしろわかりやすい(use strict refsすれば確認できる)のだが、
@av->[0]はやっぱり俺にはわかんね。
ラクダ本3版の3.2矢印演算子のところには、左側は(ハードでもシンボリックでも
いいけど)リファレンスじゃないとだめって書いてあるんだけどねぇ。
0571デフォルトの名無しさん
NGNGまとめてだと並び替えとか便利だけどメモリを食うと思うし1行ずつだとメモリは食わないけど並び替えとか難しそうだと思うけど
どっちでやったほうがいいんですか?
0572デフォルトの名無しさん
NGNGもう既に分かってるじゃん。
メモリ食って困るときは while で、そうでなきゃ @ で
色々なやり方がある、どれがいいかは適当に選べ
0573デフォルトの名無しさん
NGNG自分のやりたい様にやるってのPerlなのに、これだから最近の若者は
0574デフォルトの名無しさん
NGNGinput dirname: question
sh: /petit.cgi: not found.
sh[2]: /petitlog.cgi: not found.
sh[3]: /count.dat: not found.
sh[4]: /pastno.dat: not found.
sh: /past/1.dat: not found.
sh: /jcode.pl: not found.
sh[2]: /lock: not found.
と表示されて
うまくいきません。
いろいろ試してみたんですが何が悪いのか良く分かりません。。
どなたか分かる方いらっしゃいましたらご指南願います。
#!usr/bin/perl
print "input dirname: ";
$dirname = <STDIN>;
system("chmod 705 $dirname/petit.cgi");
system("chmod 606 $dirname/petitlog.cgi $dirname/count.dat $dirname/pastno.dat $dirname/past/1.dat");
system("chmod 604 $dirname/jcode.pl");
system("chmod 707 $dirname/lock past");
0575デフォルトの名無しさん
NGNGファイルが無いって怒られてんじゃん。
0576デフォルトの名無しさん
NGNG> #!usr/bin/perl
typo?
0577デフォルトの名無しさん
NGNGchomp $dirname;
っていれてごらん。$dirname に改行が入ってるからだよ。
0578デフォルトの名無しさん
NGNGという配列があったときに2番目の要素をキーとして並べ替えをするには
どのように書いたらよいでしょうか?
調べたところ、CSVライクなデータで3行目のデータをキーとして
並べ替えるときには
@new_array = sort { (split(/\,/,$a))[2] <=> (split(/\,/,$b))[2] } @array;
というのを検索して探し出しました。
しかし、今回のようにすでに二次元配列として格納されている場合には
どのように並べ替え関数を指定したらよいのか分かりません。
教えてください。
0579デフォルトの名無しさん
NGNG@new_array = sort { $a->[1] <=> $b->[1] } @array;
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG579ではないが注意点として、new_arrayの各要素を変更すると@arrayの内容も変化してしまうので注意。
コピーしているのはリファレンスであって参照先ではないので。
対策としてdcloneとか思いつくけど(逆に片方変化させるともう片方も変化する、ということを利用もできる)。
0582デフォルトの名無しさん
NGNGサンクス!試してみます!
0583デフォルトの名無しさん
NGNGドスプロンプトでハードディスクのCではなくDに格納されてる
ディレクトリを呼び出すにはどのようにすれば委員でしょうか?
0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGあの世逝け
0586デフォルトの名無しさん
NGNGインターネットショートカットファイル.urlの中身
『Modified=00276B6EEE5EC40111』
から更新日時・アクセス日時を読み取りたいと考えているのですが、可能でしょうか?
ググッた感じModified=〜のキーを解析されてる方を見つけることができませんでした。
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNGスレ違い
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG軽い方法は無いですか?
jcode.pmは重すぎて…
0591デフォルトの名無しさん
NGNG自作でパールのCGIプログラミングをこれから始めようと
思っているんのですが、少し疑問なことがあります。
CGIの中身は全て直に書き込んでいるのでしょうか?
それとも作成ソフトというものがあるのでしょうか?
もし、作成ソフトがある場合、どのような使い方になるのでしょうか?
教えて君の初心者ですが、もし宜しければ教えてください。
0592デフォルトの名無しさん
NGNG一応あるけどほとんど使ってる人はいない。
普通のエディタでガリガリ書いてる。
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGこれはどうして1000になるんですか?
0595591
NGNGレスありがとうございます。エディタだけだと知り迷いが吹っ切れました。
>>593
パール言語での作成を考えていたのでこちらでいいのかと思いましたが、
スレ違いだったようですね^^;
失礼しました。
0596デフォルトの名無しさん
NGNGint(()) は0
[1000]->[0]
[1000] '1000'という要素を一つもつ無名配列の
参照を -> によりデリファレンスして、
[0]で配列の最初の要素(ここでは1000)にアクセス。
0597デフォルトの名無しさん
NGNGJcode.pmはちゃんとコンパイルして使ってるか?
コンパイルしないJcode.pmはあくまでもコンパイラの無い環境の為の代替手段だぞ。
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNGダイナミックスコープとレキシカルスコープで調べてください。
実装の詳細を汁のは難しいです。
0600デフォルトの名無しさん
NGNG1から嫁
0601デフォルトの名無しさん
NGNGgetcってリターンを押すまで入力を受け付けないけど、
1文字何かキー押すだけで入力受け付けるようにできませんか?
cookedモードからrawモードに変えるみたいなもんです。
nethackみたいなゲーム作るにはそれができないと無理なんで・・・。
0602デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq8.html#How_do_I_read_just_one_key_witho
0603デフォルトの名無しさん
NGNGありがとうございます
use Term::ReadKey;
ReadMode('cbreak');
$key = ReadKey(0);
ReadMode('normal');
これでできました
0604デフォルトの名無しさん
NGNG$first = <STDIN>;
print $first;
$second = <STDIN>;
print $second;
とすると、入力→出力、入力→出力という動作になりません。
改善する方法はあるでしょうか。
0605デフォルトの名無しさん
NGNGprint;
}
0606デフォルトの名無しさん
NGNGラクダ本第二犯には-cオプションを指定したときでも
BEGIN,use,ENDの三つは実行されるとありますが、
ENDの出力がありません。どうしてでしょうか?
またオプションを-ecと逆にしたときは何も表示されません。
これは仕様ですか?
0607デフォルトの名無しさん
NGNGこれは当たり前でした
0608デフォルトの名無しさん
NGNGChanges5.6より:
[ 4323] By: gsar on 1999/10/09 18:48:31
Log: don't run END blocks when running under -c switch (older,
rarely useful behavior may still be obtained by putting
BEGIN { $^C = 0; exit; } at the end of the script)
0609デフォルトの名無しさん
NGNGどうもありがとうございます。
0610デフォルトの名無しさん
NGNGfor(@a){print $_->[0] . (" "x($max+1-(length $_->[0]))) . $_->[1] . "\n"}'
とすると、あるシンボルテーブルを一つのハッシュのように見ることができます。
ここで、各エントリをハッシュ値と見なして、
*::a{SCALAR,ARRAY,HASH,CODE,GLOB,FILEHANDLE,NAME,PACKAGE}に一挙にアクセスするには
どうしたらいいでしょうか?
*::a{SCALAR}と\$aは同じ意味ですので、リファレンス値のリストを取得したいと思います。
perl -e '$a="";print *::a{SCALAR}'
SCALAR(0x8181f64)
キーが一つの場合は上のようになるのですが、
スライスとしてアクセスする方法がわかりません。
perl -e '$a="";@a=();print *::a{SCALAR,ARRAY}' #ARRAYのリファレンスだけ取得できる。
perl -e '$a="";@a=();print @*::a{SCALAR,ARRAY}' #syntax error
perl -e '$a="";@a=();print @{*::a{SCALAR,ARRAY}}' #何も表示されない
0611デフォルトの名無しさん
NGNG@KeyList=(SCALAR,ARRAY,HASH,CODE,GLOB,FILEHANDLE,NAME,PACKAGE);
とでもして、それを*::a{$KeyList[$i]}とでもすれば得られます。
そうではなく、型グロブをハッシュのように操作する方法が知りたいと思っています。
シンボルテーブルを2段階のハッシュのようにみなしてアクセスすることは不可能なのでしょうか。
0612デフォルトの名無しさん
NGNGそうやってアクセスする事で何をしたいのか
さっぱり分からんのだが。
my$f="%20s %17s %16s %15s %15s %15s %s\n";
my@t=qw(SCALAR ARRAY HASH CODE GLOB IO);
printf$f,"SYMBOL",@t;
while(my($k,$v)=each%::){printf$f,$k,map*{"$v"}{$_},@t}
0613デフォルトの名無しさん
NGNGありがとうございます。
perl -e '@a;%a;my @t=map *main::a{$_},(SCALAR,ARRAY,HASH);print "@t"'
型グロブに対するスライスはちょっと無理そうなので、
このmap関数で代用するのがよさそうですね。なるほど。。。
0614デフォルトの名無しさん
NGNGglobalですかね?
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNGありがとうございます。
0617デフォルトの名無しさん
NGNG行の真ん中に表示されるようにしたいんですがどうすれば良いんですか?
つまりglobalを検索したとすると、
global SchoolNet Director
we have increased the US publics global awareness
CanWest global Communications
help address global warming issues
California Wood Use Endangers global
↑こういう風に結果を出したいんです。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNGおそらく質問が板違い
0620デフォルトの名無しさん
NGNGCGIじゃない
perlの授業で出てきた奴
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNG'global SchoolNet Director',
'we have increased the US publics global awareness',
'CanWest global Communications',
'help address global warming issues',
'California Wood Use Endangers global',
);
my $word = 'global';
my($max, @pos);
for (@line) {
my $pos = index $_, $word;
$max < $pos and $max = $pos;
push @pos, $pos;
}
print ' ' x ($max - shift @pos) . "$_\n" for @line;
0624デフォルトの名無しさん
NGNGバカは下手にでると際限なく威張りますね
わからないならレスしなくていいよ。
>>623
最初からそれを書けよ
とりあえずそれでいいよ。もらっとく。
お前らもっと初心者にやさしくしろよ。
答えられないなら黙ってろ。
0625デフォルトの名無しさん
NGNG複数含まれるときのことを考えていない。そもそも課題とは
ちがうことしてるし。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG( _,, -''" ', __.__ ____
ハ ( l ',____,、 (:::} l l l ,} / \
ハ ( .', ト───‐' l::l ̄ ̄l l │
ハ ( .', | l::|二二l | ハ こ .|
( /ィ h , '´ ̄ ̄ ̄`ヽ | ハ や │
⌒⌒⌒ヽ(⌒ヽ/ ', l.l ,' r──―‐tl. | ハ つ │
 ̄ ', fllJ. { r' ー-、ノ ,r‐l | ! め │
ヾ ル'ノ |ll ,-l l ´~~ ‐ l~`ト,. l |
〉vw'レハノ l.lll ヽl l ', ,_ ! ,'ノ ヽ ____/
l_,,, =====、_ !'lll .ハ. l r'"__゙,,`l| )ノ
_,,ノ※※※※※`ー,,, / lヽノ ´'ー'´ハ
-‐'"´ ヽ※※※※※_,, -''"`''ー-、 _,へ,_', ヽ,,二,,/ .l
 ̄ ̄ ̄ ̄ ̄ `''ー-、 l ト、へ
0628デフォルトの名無しさん
NGNGopen FILE ,'hoge.txt';
while (<FILE>) { $text .= $_ }
close FILE;
としています。
初心者的にはループが起きているので効率が悪く感じています。
これ以上にエレガントなやりかたってあるのでしょうか?
お願いします。
0629デフォルトの名無しさん
NGNGたしか最近どっかで話題になってたと思うが、perlvar(1)に例示されてる
open my $fh, "foo" or die $!;
local $/; # enable localized slurp mode
my $content = <$fh>;
close $fh;
が面倒がなくていいと思う。
0630デフォルトの名無しさん
NGNGありがとうございました!
0631デフォルトの名無しさん
NGNG>>169-170
現スレくらい検索しろや
0632デフォルトの名無しさん
NGNG、、、ふふふふふああーあーあーーあーああaaaaa\saa.a...a..a.aksskjalksksl
alsllalllalalaskls:::aaaa9)))))99)))998)((88(88(8
(perl (def((((((8 (defun perl () 8(99 )))9 ) 9))))) ))))))))SS))9)
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNGそれって嬉しいのか?
CL でもライブラリは FFI 使えばなんとでもなるし。
0636デフォルトの名無しさん
NGNG画像のアップロードを作るときとかフォームのデータや画像データを変数に格納しなきゃならないんですが
画像サイズが10MBとかになっても大丈夫ですか?
0637デフォルトの名無しさん
NGNG環境によって違うが、大抵は4GB弱だな。
最も、そんなにメモリを積んでるマシンは少ないだろうから、実際にはそのマシンのメモリ次第だが。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGWebProg板の方が詳しい人いるんじゃね?
サーバーの設定とか関わってくるのかもしれんし。
Perl的には物理メモリ+スワップ領域をこえさえしなけりゃ大丈夫だろ
0640デフォルトの名無しさん
NGNG1変数にそんな大量なデータを入れることがわかっているなら
そうならないようなプログラムにすりゃいんじゃねの?
だいたい一時期にすべての内容をメモリーにバッファリングする
必要があるの?そこから考え直したほうがいいと思うよ。
0641デフォルトの名無しさん
NGNGフォームで送信したときread(STDIN,$all_data,$ENV{'CONTENT_LENGTH'});で受け取っているんですが
送信した時$ENV{'CONTENT_LENGTH'}にフォームと画像の全てのデータが含まれているため
メモリにバッファリングしないようにすることができないんです
0642デフォルトの名無しさん
NGNGmy $len=$ENV{'CONTENT_LENGTH'};
while($len) {
my $data,$size=64*1024; # 64Kbyteづつ
$size = $len if ($len<$size);
read(STDIN,$data,$size);
print O, $data;
$len-=$size;
}
close O;
0643デフォルトの名無しさん
NGNG使わなくてもいいから読んでみれ
0644デフォルトの名無しさん
NGNGそれだと$len=$ENV{'CONTENT_LENGTH'};で$lenに10MBの
データを格納してしまっていることになるんじゃないんですか?
0645デフォルトの名無しさん
NGNG$ENV{'CONTENT_LENGTH'} には何が入ってんの?
0646デフォルトの名無しさん
NGNGかず
>>642
64kBでも大き過ぎるんちゃう?
0649デフォルトの名無しさん
NGNG$ENV{'CONTENT_LENGTH'}はフォームに入力されたデータと画像ファイルのデータ
が一緒になった長い文字列です。
それぞれboundaryという文字列で区切られています。
0651デフォルトの名無しさん
NGNGすいませんただのデータのバイト数でした
0652デフォルトの名無しさん
NGNGboundaryという文字列でsplitしなければならないのでboundaryの位置が一定じゃないので
>>642のプログラムみたいに$sizeの値を固定できないんです。
0653646
NGNG板違いだから下の方でこそこそとやる気はないのか?俺だって粘着してるし。
あと、結局これは車輪の再発明になるから素直にuse CGIするか
cgi-lib.plの2.18を拾ってきてrequireした方がいいよ。
あえて挑戦するなら$ENV{'CONTENT_TYPE'}からboundaryを取り出して
while (<STDIN>)でまわしながらboundaryかboundaryのお尻に--が付いているやつか
ヘッダかボディか調べていくのが楽でいいかなと。
どうしてもreadを使いたいならcgi-lib.plをひたすら読め。インデントを修正しながら読め。
実際有名なCGIはこれからコピペした臭いがプンプンするぞ。
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNGでもちょっとよく理解出来なかったところや、
忘れ欠けてるところがある。復習しないと。
0659デフォルトの名無しさん
NGNG大して成績のよくない奴っていたよな。
0660デフォルトの名無しさん
NGNGぱぁる
0661デフォルトの名無しさん
NGNGなにが言いたいんですか?w
暗記力のなくなった年寄りの僻みですか?ww
0662デフォルトの名無しさん
NGNGにそなえて準備をしているだけなんだよね。
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG何の略か調べたら少しは分かるんでないかな
0665デフォルトの名無しさん
NGNGお前ら、国語辞典を1ページ目から読んだりするか?
俺はPerlの辞典というような取り扱いをしてる。
「社会工学」は読んだけど、他は全部斜め読み。
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG必要になったら読み返せばいいから詳細は忘れてOK
0668デフォルトの名無しさん
NGNG英語の勉強にもなるし、いつでもどこでも読める文章だし
0669デフォルトの名無しさん
NGNG例えば、return($tt, $gg);みたいに
0670デフォルトの名無しさん
NGNGそれでできるのに聞くということは、試していない証拠だな。
0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGいあ、それやってるんだけど、呼び側の受け取り方法がわからなくて
0673デフォルトの名無しさん
NGNG($b,$n)=func;とか
0674デフォルトの名無しさん
NGNGいくら調べても分かりませんでした。
PHPで
while(true){
$a[] = $i;
$i++;
}
とすれば配列に値がどんどん入ります。
これをperlでコーディングするにはどうすれば良いでしょうか?
どこを見ても、最初に@a = (1,2,3,4);
と最初に配列の初期化をしています。初期化なしでいきなり入れ込む方法を教えて下さい。
0675デフォルトの名無しさん
NGNG$a[$i]=$i;
0676デフォルトの名無しさん
NGNGサブルーチンをコールする時に&つける時とつけないときの違いはなんですか?
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG機能上はpushだけど、
その書式はperlにも入れてほしいよね。
ものぐさ度No.1が誇りなんだから。
0679デフォルトの名無しさん
NGNGsub func{
sub subr{print +(caller)[2]," @_\n"}
&subr;
&subr();
subr;
subr();
}
0680デフォルトの名無しさん
NGNGサブルーティンは、"&" という記号を頭に付けて呼び出すことがで
きます。 Perl 5 では、"&" はなくてもよく、宣言済みのときに
は、括弧も省略できます。 (ただし、defined() や undef() の引
数として使う場合のように、サブルーティンを名指しするときには
"&" は省略できないことに気を付けてください。 また、サブルー
ティン名や、&$subref() や &{$SUBREF}() 構造を使ったリファレ
ンスでサブルーティンの間接呼び出しをするときにも省略できませ
ん。
とperlsubに書いてある。
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGm//
0683デフォルトの名無しさん
NGNG$str="foobaa hogehoge hugahuga";
if(preg_match("/hoge/i",$str)){ print "ある"; }
こうする方法が分かりません。
0684デフォルトの名無しさん
NGNG...
0685デフォルトの名無しさん
NGNG&があるとプロトタイプのチェックが行われないのは大きな違いだと思う。
sub f($) {my($x)=@_; print "$x\n"}
と定義しておいたときに以下を比べればわかるだろう。
f();
f(10);
f(10,20);
&f();
&f(10);
&f(10,20);
また&なしのときはあらかじめ宣言されていれば引数の周りのカッコを省略
できるが、&つきのときは省略できない。
f 10;
&f 10;
さらに丸カッコごと引数を省略した&<関数名>には現在の@_をまるごと渡すと
いう機能がある。&なしにはその機能はない。
sub g { &f; }
sub h { f; }
g(10)
h(10)
0686デフォルトの名無しさん
NGNG0687681
NGNGありがとうございます。
今、yahooメールを全部ローカルに保存するperlスクリプトを作っているのですが、
もしかして、すでにありますか?
yahooメールのhtmlから日付とサブジェクトと本文を抽出して、
2004-07-08-10-05-35-ひさしぶり.txt
というファイルを作って、内容に本文を入れるってのを作る予定です。
たぶん、ここに居る人たちなら、1時間ぐらいで作ってしまうんだろうなぁ。
0688デフォルトの名無しさん
NGNG>いう機能がある。
@_は他の特殊変数と同じでダイナミックスコープであり、"&f"という形で
サブルーチンを呼び出したときだけ、そのまま引き継がれるということですよね。
他の呼び出し形式の場合は関数の頭でlocal @_=(引数)として、呼び出し元の@_の値を
待避してるのと同じですね。
0690デフォルトの名無しさん
NGNGクッキーもらえばいいんじゃないの?
0691687
NGNGもう少し具体的にお願いします。
クッキーの制限に「自分で送り込んだクッキーからしかデータを取り出せない」
というものがあるので、推測ですが、ブラウザがサーバとクッキーの対応表を
持っていて、「このサーバにはこのクッキーを渡す」という処理をしているのだと思います。
という事は、今から作ろうとしているperlプログラミングはヤフーメール限定なので
「問答無用でこのクッキーを渡す」という記述ができれば、メールサーバを騙せると思います。
もしこの理解で間違いなければ、その騙す方法を教えて下さい。
0692デフォルトの名無しさん
NGNGやってみてないけど、この辺とか参考になるのでは。
0694デフォルトの名無しさん
NGNGCookieヘッダ出力する行はGETのあとにないとだめだろうな。
LWPとHTTP::Cookies使った方が楽そうな気もするけど、スクラッチで
書くのもそれはそれで勉強になるからお好みで。
0695デフォルトの名無しさん
NGNGPerl の m// に相当するのが preg_match (perl regular expression: match)なわけだが _| ̄|○
0696デフォルトの名無しさん
NGNGyahooメールは設定しだいでメル鯖と直で話せるからそっちの方が簡単かもね
http://help.yahoo.co.jp/help/jp/mail/mailsoft/mailsoft-01.html
ちなみにあなたが送受信の対象にしてるのはWeb鯖でメル鯖じゃないですよ
0697デフォルトの名無しさん
NGNG探してソースに埋め込むみたいのはどんな感じでやるのが普通なの
だろうか?
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG普通PurePerlなモジュールをプリプロセスしてインストールする、ということはしないな。
動的に探すか、ユーザーに指定させるか、~/.mymoduleconfigでも作る(こんなことするのはCPAN.pmしか知らんが)かするのが一般的。
つーわけで、どうしてもやりたいなら適当にやりたいようにやれ。
0701デフォルトの名無しさん
NGNG用いて別のページに飛ばせますか? こうするとContent-type: image/gif(jpeg)
ヘッダとLocationヘッダをひとつのスクリプトで使うことになってうまくいかないんですが・・・
0703名無しさん@そうだ選挙に行こう
NGNGprint "Location: http://www.google.co.jp/intl/ja_jp/images/logo.gif\n\n";
はページ移動ではなくHTML内の画像として表示されたけど、
print "Location: http://www.google.co.jp/\n\n";
は×マークだった。
まあ無理だろうなあ。
0704名無しさん@そうだ選挙に行こう
NGNGwhile(<FILE>){;
chomp;
$data .= $_;
}
今はこのようにしているのですが、一行でズバッと記述する方法ってないですか?
0705名無しさん@そうだ選挙に行こう
NGNGたぶんループするよりは
{
local($/);
$data = <FILE>;
}
$data =~ s/\n//gs;
の方が速いだろう。15KB,200行ぐらいのファイルで
試したけど3割ぐらい短い時間で終わったよ。
0706名無しさん@そうだ選挙に行こう
NGNG0708デフォルトの名無しさん
NGNG置換オプションの s は不要なのでは?
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGイミフメイ
0711705
NGNGはい本来は不要です。
$*に影響されるパターンかどうか気にするのメンドウだから、
複数行が含まれた文字列に正規表現使うときはsかmを必ず
つけることにしてるのでした。
0712デフォルトの名無しさん
NGNG>>169-170らへんの話とは無関係?
0714デフォルトの名無しさん
NGNGするスクリプトを作る、ただし、perlのsort命令を使わない。という
プログラムを教えてくれませんか?
バブルソートを用いたプログラムを教えて欲しいです。
0716デフォルトの名無しさん
NGNGどのように書けば夏バテし難いさっぱりとしたコードになりますか?
0717デフォルトの名無しさん
NGNGどう書いてたら夏バテしそうになったの?
0718デフォルトの名無しさん
NGNG宿題は自分でやろうな
どうしても困ったらgoogleに聞け、サンプルコードがいくらでも転がってる
0719716
NGNGmy($total, $read, $buf, $data);
$total = $read = 0; $buf = $data = '';
while($read = read(IN, $buf, 1000)) {
print "$read 読みました\n";
$total += $read;
$data .= $buf;
}
print "全部で $total 読みました\n";
なんですが、ファイルハンドルINのファイルのサイズが1000に満たないときは
どうなるか考えていたら目が夏バテしそうになりました。
0720デフォルトの名無しさん
NGNGちなみに
s/\n//g より tr/\n//d のが速いと思われ
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG1000という中途半端な数字を使うことは好ましくない
0723デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNG配列の要素1つに注目して後続の要素と値の大小を比べ、配列内の位置を交換していく手法くらい思いつくけど
ちなみにこれは何ソートと呼ばれるんだ?
0728デフォルトの名無しさん
NGNG>>722が言ってるのは1000って数字がコンピュータ的に半端な感じがするってだけかも
ひょっとしたらハードウェア的に最適な値が存在するのかもしれないが気にするほどでもないんじゃないかな
0729デフォルトの名無しさん
NGNGほとんどのOS, たいていのライブラリによる入出力、バッファリングでは
1000などという中途半端な値は使われないので
512 4096 8192, 65536 などの値を使っとけ
0730デフォルトの名無しさん
NGNGていうかファイルサイズがバッファサイズ (?) に満たなくても
>>719 で問題無いと思うのだが?
0731デフォルトの名無しさん
NGNG皆そう思っていたから、特にコメントつけないのでは?
>>729
だからといって、1000バイトで区切ってはいけないという
ことは無いはず。そんなものいちいち考えてやらんでも
よかろうに・・と思うが。なので 1000バイトで切ってイイヨ。
0732デフォルトの名無しさん
NGNG0733716
NGNG25回ループして読み込んだ後716バイトが残るじゃないですか。
こうなった場合残り716バイトに対して1000バイト読み込もうとするのは
何か都合が悪そうな気がして仕方がないのですが、どうするのがいいのでしょう?
0734デフォルトの名無しさん
NGNGバブルソート
0735デフォルトの名無しさん
NGNG君がどう思おうが perl はそういう使い方を正式にサポートしている。
http://perldoc.com/perl5.8.4/pod/func/read.html
http://flex.ee.uec.ac.jp/texi/perl/perl_90.html
サイズが分かっていて、どうせ全てを変数に入れるのなら、始めから
read IN $data, $size で一気に読み込んでしまえばいい。
0736デフォルトの名無しさん
NGNGちゃんと read の説明読んでみなよ。
その場合、716バイト読んて、戻り値に716が帰る、
もう一回 read 実行すると、 end-of-file だから0が
帰り、while から抜ける。ね、大丈夫でひょ。
0737716
NGNG0バイトしか残っていないのにreadする事があるのか。
なんかもう読み込めないのにreadするのはちょっと無駄な感じがしますね。
えーと、今回は全部読み込む事よりも1000バイトずつ区切りながら読み込む事が
重要です。
0738デフォルトの名無しさん
NGNGていうか、最初は気持ち悪いのかも知れないけど、
>>719 で定石通りなのでそのまま突き進んでよし。
C で read() 使って書くときも同じような感じで書くよ。
0739デフォルトの名無しさん
NGNGこれは違うと思うな、もうデータが無いことはどこかで検出する必要が
あるわけで、それを行っているだけと、考えれば無駄でもなんでもない。
それに0バイトをreadしにいっているわけではないことに気がつかないと。
0740デフォルトの名無しさん
NGNG最初に、 $len = -s $file; で長さを求め、
$len/1000 回と、$len%1000が0以上なら+1回読めば
いいんじゃないのか?
しかし、そんな細かい頭では、perl使ってる意味ないじゃん。
0741デフォルトの名無しさん
NGNG> どのように書けば夏バテし難いさっぱりとしたコードになりますか?
だ。
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGそんなに気になるならとりあえず、while{..} の中に、
last if ($read<1000); いれて、即刻涼め。
0744714
NGNG理解できる方、解答お願いできませんでしょうか?よろしくお願いします。
0745デフォルトの名無しさん
NGNGsub sort{
local (*a)=@_;
for(my $i=0;$i<$#a;$i++) {
for(my $j=$#a;$j>$i;$j--) {
if($a[$j]<$a[$j-1]) {
($a[$i],$a[$j])=($a[$j],$a[$i])
}
}
}
}
0746デフォルトの名無しさん
NGNG($a[$j],$a[$j-1])=($a[$j-1],$a[$j])
0747デフォルトの名無しさん
NGNG746の修正を入れれば動く。&sortとして呼ばないとシステムの
sortが呼ばれるのに気がつかずしばらく悩んだのは内緒だ。
0748デフォルトの名無しさん
NGNG例えばpingを打ちたいと思ったら
CGIだと
クライアントから要求→サーバがping実行→クライアントに実行結果を返す
ですが、HTMLの中にスクリプトを埋め込むことによって、クライアントからpingを打つことは可能でしょうか?
うまく意味が伝わらなかったらごめんなさい_no
0749デフォルトの名無しさん
NGNGまあ、>>1嫁
0750デフォルトの名無しさん
NGNGoverride する手もある罠。
0752716
NGNG自分が勝手に夏ボケしていたようです。
このまま>>719をベースにする事にします。
相手してくださった皆様どうもありがとうございました。
0755デフォルトの名無しさん
NGNGなんたらかんたら;
}
上の($a == $b && $b == $c && $c == $d)の部分を
もっと簡潔に書く方法ってありませんか?
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNG横に並べるからみっともないのであって、縦に並べると非常にわかりやすくなるです。
if (
$a == $b # 等幅フォントなら半角空白で条件式がそろえられるし、
and $b == $c # コメントを入れたりも出来るし、
and $c == $d # 修正/削除も楽だし。
){
なんたらかんたんら
}
でもって、数値比較しているんだから、
$a+$b+$c+$d == $a * 4
でもいいと思うし。
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGわかりにくそう。
0761デフォルトの名無しさん
NGNGprint 'true';
}
成功したのが3回なら、ってどう?
0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNG文字列であるとして
$a == "hoge"
$b == "hog"
$c == "ehoge"
$d == "hoge"
だったらどうなるの?
if (($a, $a, $a) == ($b, $c, $d)) {...}
0764デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGif((grep{$array[0] == $_}@array[1..$#array]) == $#array){
print 'true';
}
うーん、こっちの方が汎用性あると思うんだけどなあ、
やっぱ駄目ですか?そうですか
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNG> if (($a, $a, $a) == ($b, $c, $d)) {...}
リストってスカラコンテキストでは最後の要素を見るから、
if ($a == $d) {...}
という解釈になるんじゃないの?
0774デフォルトの名無しさん
NGNGif (($a, $a, $a) == ($b, $c, $d)) {
print 'hoge';
}
--
hoge
0775755
NGNG>>774
ホントですね・・・。
>>769さんのはちゃんとできました。
なんだか失礼な事しちゃってごめんなさい。
とりあえずは>>769さんのを使わせていただきます。
いろいろありがとうございますです。
0776デフォルトの名無しさん
NGNGわははー
orz・。
0777デフォルトの名無しさん
NGNG初心者のうちは何かと気の利いたコードを書こうとしがちですが、
後で見たときに「何してるんだろう?」と思うようなコードを書くくらいなら、
素直に
if ($a==$b and $b==$c and $c==$d) {...}
と書いた方が、後々有益だと思いますよ。
# そもそも「簡潔」な書き方を求めていたような・・・
ちなみにこのような書き方をする場合、== の左右にはスペースを
書かない方が見やすいこともあります。
0778デフォルトの名無しさん
NGNGSpace around most operators.
0779デフォルトの名無しさん
NGNG777が言ってるのは条件をたくさん並べる時の話では?
if ($a == $b and $b == $c and $c == $d) {...}
だと何だか締まりが無いが、
if ($a==$b and $b==$c and $c==$d) {...}
だとまとまりがあってすっきりする。
Cなんかでも同じだが、普段は空白入れても過剰な場合は
削るってのは当たり前だと思うが。
0780デフォルトの名無しさん
NGNG複数回処理するなら、769さんの案をサブ化して使いたい。
0781デフォルトの名無しさん
NGNG$ok{ ($a) x 4 } = 1;
if($ok{$b, $c, $d}){
# ...
}
#まッ、いろいろな方法があるって事で
0782デフォルトの名無しさん
NGNG$a == $b が真で $b == $c が真であれば $a == $c は真であると思うのだが、
その比較が無いという事は勝手に $a == $c の比較を行ってはいけないのだろう。
んー、よくわからないぞ?
&&やand演算子を使うという事はそれ以前が成立しない場合速攻で偽って事であってブツブツ...
0783デフォルトの名無しさん
NGNGあって、この程度ならば777案でいいと思う。
779も言っている通り過剰な空白は削るべきで、それは縦の空白も同じ。
横に書けるものをわざわざ縦に書いて、無駄に風通しの良いコードを
書くことに何のメリットも感じられない。
可変個数用に769案をサブ化というのは賛成。
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG0786どっちでもいいんだが
NGNGと
$a==$b and $b==$c and $c==$d
は、どっちががいいの?
自分は $a=$b=$c=$d ぽく見える後者が好きなんだが。
0787デフォルトの名無しさん
NGNGそりゃ質問した奴が一番知ってるだろ。
$b, $c, $d が $a と等しい事を伝えたいなら上、
$a が $b と等しい上に $b が $c と(以下略)なら下って感じかな。
どれが軽いかは黙ってベンチマークだろ。
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNGmap { $s{$_} = 1 } ($a, $b, $c, $d);
if (keys(%s) == 1) {
# ...
}
0790デフォルトの名無しさん
NGNGコードを読むのは人間なわけだし、一部のコード片だけ見てごちゃごちゃやるのは高速化以外の良い結果は生まないと思うなぁ
if ($a == $b && $b == $c && $c == $d){
なんたらかんたら;
}
の”なんたらかんたら”の部分によってはもっと良い方向に書ける時もあるわけだし・・・
まぁそこまで言っちゃうと質問者にとっては余計なお節介になるのかな・・・^^;
0791デフォルトの名無しさん
NGNG>>789
すいません。これ何してるのかわからないです。
どなたか解説してくれませんか?
0792デフォルトの名無しさん
NGNG嫌です
0793769
NGNG>>785
もいっこ考えてみた。
@array = ($a, $b, $c, $d);
if ($#{[ keys %{ { map{ $_ => 1 }@array }}]} == 0 ){
print 'ok';
}
無名ハッシュに入れて
そのキーを無名配列に入れて
そいつの最後の添え字が0なら(要素一個なら)
全ての値が同じ、と
どう?
0794デフォルトの名無しさん
NGNG一瞬また間違ってるお前帰っていいよと書こうと思ったが、どうやら
$a, $b, $c, $dをキーとしてハッシュに1を代入。
$a, $b, $c, $dがすべて等しい場合キーが1つしかないはずだから
keys==1で比較すればいいだろうみたいな感じだな。
0795デフォルトの名無しさん
NGNG@array = ($a, $b, $c, $d);
if ( keys %{{ map{ $_, $_ } @array }} == 1 ){
print 'ok';
}
すっきりしたべ
0797デフォルトの名無しさん
NGNGそういうお前も大丈夫か?
質問者が持ってきたコードは$a==$bでなかったらこれ以降の比較は必要なしというコードだぞ。
それをもっと簡潔にしたいといってるのになぜすべて比較しなければならなくなるんだ?
0798デフォルトの名無しさん
NGNGその話題は既に収束してて、 >>785 から題意が変わったのでは?
0799769
NGNGなるほど!そうだな、言うとおりだ。
じゃ、こんなんはどうだ?
@array = ($a, $b, $c, $d);
if(grep{$array[0] != $_}@array[1..$#array]){
print "not ok \n";
}else{
print "ok \n";
}
0800デフォルトの名無しさん
NGNG>そうだな、言うとおりだ。
とか言いながら、自信満々に全比較してるのは何故?
0801デフォルトの名無しさん
NGNG0802≠799
NGNGif ((sub{$_[0]==$_ or return for @_[1..$#_];1})->($a, $b, $c, $d)) {
# 全部等しい
}
0803デフォルトの名無しさん
NGNGこれじゃだめなの?
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNGif( judge($a,$b,$c) ){
なんたらかんたら;
}
sub judge($$$){ $_[0]==$_[1] && $_[1]==$_[2] }
って、隅の方に条件式を追い出しちゃうてのは?
調べる要素がもっと多いなら
sub judge(@){
while(@_>1){
return 0 unless(shift ==$_[0]);
}
1;
}
とかってどう?
コピーしてないので、渡された配列喰っちゃいますが。
0806デフォルトの名無しさん
NGNG>とかってどう?
うーん、無駄が多いよなぁ。
802が既に関数形してんだから、ちょっと書き換えて、
sub is_all_same { # judge じゃ何する関数か分からんので変更
my $t = shift;
$t==$_ or return for @_;
1;
}
とかした方がいいんじゃね?
0807769
NGNGおお、そかそか。
じゃ、とりあえず配列全部なめるmap grep だめジャン。
じゃ、これはどだ?
@array = (..);
foreach(@array[1..$#array]){
not_ok() if $array[0] != $_;
}
print "ok \n";
}
ま、あれだ、判定式サブルーチンに逃がすか、
偽でサブルーチンに逃げるか、って事だけど。
これならいい?
0809デフォルトの名無しさん
NGNGそんだけごてごて書いた上に、sub not_ok {...} も作れってこと?
しかも、not_ok 内で exit するか、もう1つか2つ細工しないと
結局全部比較する上に、必ず print "ok" が実行されると思うんだが。
0810デフォルトの名無しさん
NGNGトリッキーじゃなくてただの遠周りにしか思えてこないな
0811デフォルトの名無しさん
NGNGよろしくお願いいたします。
Active Perlをインストールしようとすると
There is a problem with this Windows
Installer package. A program run as part of
the setup did not finish as expected. Contact
your support personnel or package vendor.
と表示され、インストールできません。
最近購入したばかりのパソコンなのですが
パソコンに原因があるのでしょうか?
分かる方いらっしゃいましたら教えてくださいm(__)m
よろしくお願いいたします。
0812デフォルトの名無しさん
NGNG未経験なので予想で。
1.ダウンロードしたファイルが壊れてる。→再ダウンロード
2.インストール権限がない。→administratorとかでログイン
0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNG仰るとおり。
じゃ、これは?
@array = ($a, $b, $c, $d);
LABEL:{
foreach(@array[1..$#array]){
last LABEL if $array[0] != $_;
}
print "ok \n";
}
これなら可変個要素比較し、偽で処理抜けるし
0815デフォルトの名無しさん
NGNGprint (join('',@array) =~ /^$a+$/ ? 'OK' : 'NG');
0816デフォルトの名無しさん
NGNG756、763を読め。
数値限定だが、
@array = ($b, $c ...);
print join('', map "$_,", @array) =~ /^(?:$a,)+$/ ? 'OK' : 'NG';
ならOK
0817デフォルトの名無しさん
NGNG0818811
NGNG返信ありがとうございます
再ダウンロードは何度かしてみましたが
やっぱりできません。
2のadministratorとかでログインというのは
どうやればいいのでしょうか?
何も知らなくてすいませんです。
よろしくお願いします。
0819デフォルトの名無しさん
NGNGprint "ok" if all { $a == $_ } ($b, $c, $d);
0820デフォルトの名無しさん
NGNGWindowsの話だからPC初心者板かな
0821デフォルトの名無しさん
NGNGシェルでよくこのような処理をするのですが、Perlでもっと簡単にやる方法はありますか?
0822デフォルトの名無しさん
NGNG対象ファイル名を表示しなくてもいいなら
perl -i -pe 's/(?<=^typedef) */ /g' `find . -name "*.[ch]"`
0823デフォルトの名無しさん
NGNGキーボードのボタン認識ってどうするんだろう?
0824デフォルトの名無しさん
NGNG凄い!プロセス起動のコストがないので爆速ですね!!
-iオプションの威力がよく分りました。
0825デフォルトの名無しさん
NGNG親によってWinにプログラムを組み込めない処置されているってことさ
親に頼め
もしくはダウンしたファイル本当にwin用なのか?msiなら無事入れられたぞ
0826デフォルトの名無しさん
NGNG> windows98の環境にActivePerl5.6.1をインストールしようとinstmsi.exe(バージョン2.0)を入れた後、
> ActivePerlを入れると下記のようなエラーメッセージが表示されます。
> There is a problem with this Windows Installer package.A script required for this install to
> complete could not be run.Contact your support personnel or paceage vendor.
Res
> IE5.0以上が入っていないとインストール時に問題が出ると言う話は
> 聞いたことがあります。
> ご回答ありがとうございます。
> ブラウザはIE6.0 SP1 を使っています。
> DOSからインストールしたら成功しました。
> ダウンロードしたのが、msiファイルじゃなかったに違いない。(たぶん)
> MSIとAS Packegeとあったはずだけど。
> instmsi.exeを入れた意味が無いw(今後のためなら、問題無いが)
> msiファイルは
> ttp://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
> の一番上のMSIをダウンロードしたので間違いではなかったと思います(たぶん)
> 2段目のAS PackegeをDOSから入れて成功しました。
一部省略済み
0827デフォルトの名無しさん
NGNG@arrayに1〜100の数字が重複なしで20個くらい入ってまして、
その中にない数字80個くらいを配列の形で取り出したいんですけど、
どのようにすればいいのでしょうか??
0828デフォルトの名無しさん
NGNG#!/usr/bin/perl
my @array = (1,5,15,22,33,45,46,51,55,58,59,60,69,71,72,75,80,81,82,90,95,98,99);
my %Check;
@Check{ 1 .. 100 } = (1) x 100;
delete $Check{$_} foreach @array;
my @Surplus_array = sort grep exists $Check{$_}, keys %Check;
print "$_\n", foreach @Surplus_array;
0829デフォルトの名無しさん
NGNG{
my %temp;
@temp{ @array } = ();
for(1..100){
push @a, $_ unless exists $temp{ $_ };
}
}
0830デフォルトの名無しさん
NGNG827じゃないけど、deleteって何かコスト高そうでBenchとってみた。
0 代入してtrue判断するよりも、 delete/existで判断した方が早いんだな
勉強になった。
0831デフォルトの名無しさん
NGNGなかなかアイディアが浮かばずできなかったのですが、
大変参考になりました。
ありがとうございます。
0832デフォルトの名無しさん
NGNGprint "$a world";
出力: hello world
なんですが、出力をhelloworld とくっつけて表示させてい場合、
print "$aworld";
じゃ、だめじゃないですか。これってどうやって解決したらいいんですか?
0833デフォルトの名無しさん
NGNG0834833
NGNG"${a}world"
$a."world"
0835デフォルトの名無しさん
NGNGで、行けました!ありがとう833
0836デフォルトの名無しさん
NGNGprint "$aworld";
0837836
NGNGExecution of test.pl aborted due to compilation errors.
orz
0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNG@test = ("test", "test2", "test3");
に対して、
$name = "test";
という変数があったとして、
@$name[0]
のように、変数内の文字列から配列を呼び出したいのですが、
どういった方法があるのでしょうか
0842デフォルトの名無しさん
NGNGeval("@" . $name ."[0..2]");
0843デフォルトの名無しさん
NGNGどうもありがとうございます
0844デフォルトの名無しさん
NGNGhttp://namazu.org/~satoru/diary/20040716.html
という記事を参考にPARを使ってみようと思ったのですが、
nmakeを使ってのPAR-0.85のコンパイルに失敗します。
PAR-0.85を公式サイトよりDLして、解凍し、プロンプトから、
perl Makefile.pl
nmake
とすると、
NMAKE : fatal error U1064: MAKEFILEが見つかりません、またターゲットが指定されていません。
Stop.
となり、うまくいきません。他のモジュールのコンパイルはうまくいくのですが、
これは何が問題なのでしょうか?
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNGつい先日インストールしたばかりなのに。
0847デフォルトの名無しさん
NGNG$reg = "/a/";
print "Match!" if($str =~ $reg);
Match! と出力させたいのですがどうすればいいですか?
0848デフォルトの名無しさん
NGNG普通なら、
$str = "abc";
$reg = "a";
print "Match!" if $str =~ /$reg/;
とするとこだが、あくまで
$reg = "/a/";
にこだわるなら、
print "Match!" if eval("$str =~ $reg");
とか。
0849デフォルトの名無しさん
NGNGSocketを使ってWeb上のリソースを取得しようと考えているのですが、
リクエストした先のURLがリダイレクションを行った場合、そのリダイレクション
を追跡してリソースを取得することは可能でしょうか?
具体的にはSocketを使ってamazon.co.jpの検索結果を読み込みたいと
思っているのですが、amazonでは検索結果をリダイレクションして出力する
ためか、Perl側で何も取得できないようです。
たとえばAという人のBというアルバムを検索すると
GET exec/obidos/external-search/?mode=music-jp&keyword=A B
該当するAという人のBというアルバムのページがあった場合、
exec/obidos/ASIN/B00005LN4Q/qid%3D109042..../250-5281286-9396....
といったURLにリダイレクションして出力される
Google等で検索してみたんですが、どうも分からなかったので、ご質問させて
頂いた次第です。何卒、ご教授を・・・。
0850デフォルトの名無しさん
NGNGAmazonの検索を使いたいならAWSを使えといってみる
0851デフォルトの名無しさん
NGNGありがとうございます!
Amazon Web Serviceですか。こういうのがあったとは知りませんでした。
SOAPを使うようですね。
これならリダイレクション云々に悩む必要もなさそうです。
世間知らずで恥ずかしいばかりです・・・。
0852デフォルトの名無しさん
NGNGなんか、$strまで展開されそうな気もしますが。
と思ったけど、evalって都合よく解釈してくれるのね。
でも
print "Match!" if eval("$str =~ $reg");
じゃないとMatch!とは表示しないような気がする。
0853852
NGNG$str = "abc";
$reg = qr/a/;
print "Match!" if($str =~ $reg);
もあったね。require 5.006 っぽいけど。
0854デフォルトの名無しさん
NGNG展開されても問題ないじゃんじゃんー
0855デフォルトの名無しさん
NGNG$b="*5";
$c=$a $b;
これで$cの値が20になってくれと言っているようなものだ。
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGGLIBC_2.0 {
global:
__sigaction;
_IO_adjust_column; _IO_clearerr; _IO_default_doallocate;
_IO_default_finish; _IO_default_pbackfail; _IO_default_uflow;
_IO_default_xsgetn; _IO_default_xsputn; _IO_do_write;
このような構造のファイルからシンボル名だけを抜き出したいと思います。
正規表現を使ってスペースと";"の間の文字列を取り出す方法はないでしょうか?
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNGこれでおっけーでした。どうもありがとうございました。
0861デフォルトの名無しさん
NGNGSOAPつか、Net::Amazonモジュールで一発
0862デフォルトの名無しさん
NGNGのものを-Fpattern -ane'......'
という形でやる方法はありますか?
0863デフォルトの名無しさん
NGNGqr// の事なら require 5.005 。
http://perldoc.com/perl5.8.4/pod/perl5005delta.html#New-qr---operator
>>862
まず自分で pattern を考え、試してみよう。
うまくいかなかったら出力とにらめっこして、
pattern のどこが悪いのか考え、修正して
またトライしよう。
0865デフォルトの名無しさん
NGNG> administratorとかでログインというのはどうやればいいのでしょうか?
「教えてクン」は、孤高の戦士である。
相手のことを考えるようでは教えてクン失格というものだ。
以下のような行動が、望ましい。
初心者であることを高らかに宣言し、初心者向けの丁寧で分かりやすい説明を強要する。
専門用語の使用を禁じておくとさらに効果的である。
簡潔な説明を禁じられたヲタクどもは、同じ内容を説明するのに、何倍もの労力を強いられる。
自分は努力せず、相手には多大な努力をさせることこそが「教えてクン」の真骨頂である。
マルチポストも有効である。そのBBSを信用していないことを明確に示せる。
「どうせ、お前らじゃ分からんだろう。」という意志表示として高く評価できる。
もちろんマルチポストの非礼をあらかじめ詫びてはならない。
それでは、単なる「急いでいる人」になってしまう。
それは、教えてクンではない。質問のタイトルは、「教えてください。」で良い。
タイトルを読んだだけでは「何に関する質問」か全く分からない。
そういう努力は、答える人間にさせれば良いのだ。
とにかく、答える人間が答えやすいように気を使って質問してはならない。
傲慢で不遜な態度が必須である。「聞きたいことがあります。」など、プロの仕事であろう。
最後に、言うまでも無いことだとは思うが、答えてくれた人達に礼の言葉を返すなど言語道断である。
せっかく「教えてクン」を貫いてきたのに、最後にお礼を言っているようでは、画竜点睛を欠いていると言わざるを得ない。
質問だけしておいて、後はシカトが基本である。
上級テクニックとして、「そんなことはもう試しました。」とか、「そこまで初心者じゃありません。」などと言って、回答者の神経を逆なでしておけば完璧である。
以上のことを踏まえて質問すれば、君も立派な「教えてクン」である。
ビバ!教えてクン! 教えてクンに栄光あれ!!
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG回答の中に分からない用語があってももちろん検索しない。その場で全部聞く。
あと質問の内容が分かりにくくすればもっと完璧。
それと微妙にスレ違いにするともっと味が出る。
「CGIでファイル読みこんでて500エラーが出るんですけどなんででしょう?」
すごい。この質問完璧。非の打ち所がない。
もしスレ違いや検索を指摘されてもかまわずに質問を続ける。
「そんな事言うならあなたには答えてもらわなくてけっこうです」
とか言って適当にかわす。
もし「その質問だけじゃ分からないからもっと詳しく書いてくれない?」
って言われたら、関係ありそうで実は全然関係ない事をたくさん書く。
ここまで来ればもう教えて君のエキスパート。実績第1位。
最後には、「うまく行きませんでした。perlのバグかなぁ?」
とか言ってなんか他のシステムのせいにしてしまえばもう神。
さぁみんなもがんばれ。
0868デフォルトの名無しさん
NGNG2ch初心者です。
言ってることがわからないので、初心者にも分かるように説明してくれませんか??
0869デフォルトの名無しさん
NGNGprint "\x07";
でならせるんですが
目覚ましみたいに一定秒間鳴り続ける
コマンドはないでしょうか?
0870デフォルトの名無しさん
NGNG0872◇eUm.g33.8M
NGNG0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNG0875 ◆eUm.g33.8M
NGNGご教授おねはいします
for($i = 0 ; $i < 5 ; $i++) {
print "\x07";
sleep 2
}
0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNG断続的に鳴るプログラム探します
0878デフォルトの名無しさん
NGNG試したけど、
スクリプト実行開始してから10秒間無音で、
終了時に一瞬だけ音がでました。
0879デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq5.html#How_do_I_flush_unbuffer_an_outpu
0880デフォルトの名無しさん
NGNGCOM2 にモデムが繋がってるなら、
open(COM, "> /dev/cuaa1");
print COM "ATD117\m";
sleep 10;
close(COM);
みたいなのはダメ?
0881デフォルトの名無しさん
NGNGありがとうございます!!
下のようにしたらうまくいきました!!
#!/usr/local/bin/perl
$| = 1;
for($i = 0; $i < 5; $i++){
print "\x07";
sleep 2;
}
0882デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq8.html#How_do_I_read_and_write_the_seri
0883デフォルトの名無しさん
NGNGどーすりゃいいですかい?
0884デフォルトの名無しさん
NGNGですね^^;
0885デフォルトの名無しさん
NGNGPerlと全然関係ないね。
nulを使え。
0886デフォルトの名無しさん
NGNG無理やりperlで答えると、File::Specのdevnull使え。
devnull
Returns a string representation of the null device.
$devnull = File::Spec->devnull();
0887885
NGNGああ、そんなのがあったんだ。
移植性を高めるためか。
0888 ◆eUm.g33.8M
NGNGありがとうございますその方法で試してみます
0889デフォルトの名無しさん
NGNGfor ($i=0;$i<length($nextDQN);$i++) {
++substr($nextDQN,$i,1);
}
print "Next $DQN is $nextDQN.\n";
Perlだからできるネタだな。
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNGみんな独学じゃねーのか・・・?
0893デフォルトの名無しさん
NGNGPerl入ってるんじゃない?基本だけだと思うけど。
他は、講座とか教室とか。
http://www.miesc.ne.jp/msc/it-p.htm
探せばある筈。
まぁ、独学が一番だと思うがな。
0894デフォルトの名無しさん
NGNG公式と本と実践の連打で…
0895デフォルトの名無しさん
NGNGよく数字の桁を揃えるのに
$data=sprintf("%07d", 123); # 結果:0000123
などとやりますよね、しかし”0”でなくスペースにしたいので
$data=sprintf("% 7d", 123);
と、やってみたのですがダメでした。なぜ?
多分私は何か勘違いしているのでしょうが、どうにも分かりません。
どなたかこんなバカな私にご教授ください。
0896デフォルトの名無しさん
NGNGには
printf '<%6s>', 12; # prints "< 12>"
なんて例が載ってます
0897デフォルトの名無しさん
NGNG0898895
NGNG$data=sprintf("% 7d", 123);
これはちゃんと機能しておりました、問題はこの後の出力部でした。
$data=~ s/ /\ \;/g;
これを間に入れて解決しました。
大変お騒がせ致しました。
>>896 、 >>897 お二人さんありがとうございました。
0899895
NGNG$data=~ s/ /\&nbsp\;/g;
&nbsp は本当は半角(言うまでもないですよね^^;)
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG% 7dでも一応動くみたいだけど、正しくは%7dだ。
0902デフォルトの名無しさん
NGNGありがとうございます。
独学でやりたいと思います。
プログラム初心者がPerlを勉強するのに
適した本などありましたら教えて下さい。
0903デフォルトの名無しさん
NGNG目的というか用途は?
A. プロフェッショナル
A-1. プログラマ
A-1-1. 一般Web
A-1-2. 組み込み機器向けWeb Interface
A-1-3. host-opensys間などのglueな処理用
A-1-4. その他
A-2. 非プログラマ
A-2-1. 経理関係の雑務的データ処理
A-2-2. 各種コンサルティング業務におけるよろず統計処理・科学計算
A-2-3. 新言語など、IT系の基礎的な分野における新技術に対する評価業務の初歩の素養として(VC業務など)
A-2-4. その他
B. アマチュア(非プロフェッショナル)
B-1. 趣味
B-2. その他
0904デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/php/1030209573/
http://pc5.2ch.net/test/read.cgi/tech/1089492835/
0905デフォルトの名無しさん
NGNG他人が読む可能性が高いコードを書こうとしているので、
既存のもので一番使われているモジュールを使おうと思って
AppConfigを選択したんだけど、この選択って正解ですかね?
それとも別のものを使ってますか?
他の候補は
Config::Simple、Config::General、Config::IniFiles、(番外としてGetopt::ArgvFile)
あたりかと思うんですけど、AppConfigは頑張ってるわりにはイマイチな気も…。
もっと単純なものでもいいかな。
設定ファイルで配列や連想配列が扱えると嬉しいんだけど、
自前でやってもいい気もするし…。どんなもんでしょ?
御意見ください。よろしくおねがいします。
0906デフォルトの名無しさん
NGNGお好きなように。
でいーんじゃないかな?
ただし、独自機能として組み込むと汎用性がややもすると低くなる「かも」。
0907905
NGNGそらまあそうなんですが、
自分の好き嫌いより他人の好き嫌いに頼りたいなあ、と。
AppConfig::Getoptにバグを見つけちゃったんで、
選択ミスったかな、と不安になったものですから。
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG俺はAppConfigが嫌いだが?
と言えば採用止めるのか?
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG同じ枠組みで扱えるところが便利なんだよな。907によれば
バグってるらしいがオレはまだ幸いにしてあたってない。
とはいえめんどくさいから特に自分用だとdoで済ませちゃう
ことも多いね。
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNGありがとうございます。
�@用途はtxtの文字列処理です。
�ACSV形式のファイルの操作です。
生物学のデータを処理のため
プログラムを知る必要がでてきました。
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNGご参考まで。
0916デフォルトの名無しさん
NGNG既出
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNGハァ?
バージョン下がっとるやん。
0920デフォルトの名無しさん
NGNGマジレスすると次期安定版は5.10.xとなる。
時期は知らん。
個人的にはassertionsが楽しみ。
0921907
NGNGAppConfig:Args使ってますか?
AppConfig:Getoptがhashを扱えないんですが、
ちょっとコードを変更したら扱えるようになったんで、
仕様かもしれないけどパッチ送りつけよう、と思ってます。
Getopt使ってる人って少ないのかな…。
0922デフォルトの名無しさん
NGNG[] は何を表しているか分かる方教えてください。
() は空リストですよね?違いが分かりません。
push @x , [] ;
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGへのリファレンス
0925デフォルトの名無しさん
NGNGpush(@x, []);
やったあとに
print $x[0] とかやってみればわかる。たぶん。ちなみに
@x = ();
push(@x, [68, 69]);
print "$x[0][1]\n";
やれば、もうすこし理解が深まるじゃろうて。
0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNGどういったものなのでしょう?
PerlじゃなくPearlということなので相当古いと思うのですが。
0929デフォルトの名無しさん
NGNGGIFなどの画像データの生成ではなくて、窓を開いてそこに直接点を打ったり線を引いたりするものは
ないでしょうか?
0930デフォルトの名無しさん
NGNGPerlにそんなのあったかなと思ってぐぐったが、それJudea Pearlって
いう人の名前だよ。その人が1984年に書いた論文か本にそういうのが
あるんじゃないのかね? ということで多分スレ違い。
0931デフォルトの名無しさん
NGNGWIN32API使えばいい。
方法は今月号のCマガジンに載っているらしいし。
0932デフォルトの名無しさん
NGNGkkkk@kkkk
Cc: hogehoge@aiueo
Subject: harahetta
という文字列から、メールアドレスを抜き出して
リストに入れるのにはどういうやりかたが正攻法ですか?
0933デフォルトの名無しさん
NGNGhttp://www.din.or.jp/~ohzaki/perl.htm#Mail
0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNGテキトーでよければ、メアドにマッチするような正規表現を作って
while ($x =~ /(...)/g) { push @addr, $1; }
みたいな感じでいいと思う。
しかしヘッダはかなり飾りをつけられるので、単純な場合はそれで
いいとしても、複雑な場合にもうまく動く正規表現を書くのは大変
だろう。丸カッココメントのネストを考えると完全なものを正規表現
で書くのは一般には無理ってのもあるしね(笑)。
そこまでやるならMail::Addressに食わしたほうが楽だろうな。
0937デフォルトの名無しさん
NGNG模範回答だな(w
0938929
NGNGありがとうございました。
0939デフォルトの名無しさん
NGNGより詳細な解説があるURL貼るのと、どっちが有用よ?
0940デフォルトの名無しさん
NGNG質問内容に対して的外れなら、いくら詳細な解説がある URL でも有用じゃないでしょ。
>>934 なんかはともかく、 >>933 よりは >>936 の方がずっと有用に思えるよ。
0941デフォルトの名無しさん
NGNGするURL貼ってるのが問題なんじゃねーの?
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNGせっせと書く方針でいきましょう
0944デフォルトの名無しさん
NGNGハッシュの使い方を教えてください。URIは書かないでね♪
0945デフォルトの名無しさん
NGNG%83%4F%81%5B%83%4F%83%8B%82%C5%8C%9F%8D%F5%83%8F%81%5B%83%68%A2%83%6E%83%62%83%56%83%85%82%CC%8E%67%82%A2%95%FB%A3%82%C5%89%B1
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG何をもって的外れと言っているのか知らないが、知ってて損な情報じゃないだろ
なんで教えて君に懇切丁寧に答えてやらなきゃならないんだ?
0949929
NGNG>>929の質問をしたところ>>931の回答を頂いたので、早速今月号のCマガジンを読んでみましたが、
ヴァージョンなどの情報のコンソール表示やWORD・EXCELのデータの読み書きについてしか書いていませんでした。
いくらググってもperlでグラフィックを扱う方法が見つかりませんでした。
日本語だけでなく英語のページも探してみましたが、それらしいページは見つかりませんでした。
結局、perlでグラフィックを扱うことは出来ないのでしょうか?
何故perlに拘るかというと、インタプリタが無料でダウンロード出来て手元にあるからなのですが・・・・・・。
0950デフォルトの名無しさん
NGNGぐぐりかたが悪いとしか思えないな。フツーにやればWin32::GUIや
Perl/Tkぐらいにはあたりそうなものだ。
0951デフォルトの名無しさん
NGNGWin32::APIからSusieプラグインでも使えばいいんじゃないの?
0952デフォルトの名無しさん
NGNGhttp://search.cpan.org/modlist/Graphics
http://search.cpan.org/~lukka/Graphics-Simple-0.04/
一口にグラフィックと言っても色々あるから、君が何を作る為に
「窓を開いて線を引く」という事をしたいのか説明してくれないと、
適切な答は返ってこないよ。
開発環境を無料で用意したいだけなら C/C++ でも Java でも
揃うしね。
0953デフォルトの名無しさん
NGNG0954929
NGNG単純に"perl""Win32API"とかでぐぐってみたのですが、もう少し工夫すべきだったでしょうか。
Win32::GUIやPerl/Tkですか。ありがとうございます。ぐぐってみます。
>>951
Susieプラグインですか?ありがとうございます。ぐぐってみます。
>>952
URLありがとうございます。
具体的には、オセロなどのゲームプログラムをWindows環境で作りたいのです。
DOS環境やUNIX環境で作ったことがあるので、アルゴリズムは分かるのですが、
ウィンドウ・グラフィック・マウスのイベント処理が分からなくて挫折していました。
C/C++やJavaも無料で開発環境が揃うんですね。
皆さん本当にありがとうございますm(_ _)m
ぐぐっても挫折したらまた質問させて頂きます(汗
0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
NGNG0957929
NGNG953ですか?失礼しました(;・∀・)
参考にさせて頂きます。
0958929
NGNG953ですか?→953さんですか?
0959デフォルトの名無しさん
NGNGなんか前どっかのスレでDOS環境で作ったオセロのログファイルが何たらって質問してたやつがいたな。
まあ、それはおいといて。
趣味でプログラムやってますって程度ならお前さんの場合HSPあたり使ったらいいんじゃないか?お前さんの場合それが最善の道な気がするぞ。
コンソールプログラムでオセロ作れたからって一足飛びでGUIプログラムかけるようにはならんて。
0960954=929
NGNG一応コンピュータ専門です(汗
HSPをぐぐったら、BASICのようなインタプリタ言語で、結構使いやすそうでした。
でも、出来れば思考プログラムまで作りたいので、インタプリタだと実行速度が心配です。
オセロが作れたからGUIプログラムが直ぐに作れるわけではないというのは、おっしゃる通りだと思います。
0961デフォルトの名無しさん
NGNGPerl もインタプリタだ、実行効率はインタプリタの中でもいい方だけど。
Delphiとか使ってみたら?
0962デフォルトの名無しさん
NGNG実行速度が心配な部分だけC++でDLL作れ。
0963960
NGNG確かにPerlもインタプリタでした(汗
Delphiの方が初心者向けみたいですけど、有料でした・・・。
personalとそれ以上の値段の差が激しいですね。
>>962
そうしてみます。
DLLプログラミングの勉強は、これからです(汗
0964デフォルトの名無しさん
NGNGなにも一から全部HSP(あるいはPerl/Tk)で書けってんじゃない。その思考ルーチンの部分はCで書けばいいじゃないか。
要は、君はGUIのオセロが作りたいわけで、そしてそのオセロの思考ルーチンをこそ作りたいわけで、
別に「GUIプログラミングするためのイベントドリブン云々とかを研究する」が今の目的じゃないだろ?
それなら、その本筋とは関係ない"障害"をなるべく回避できるように努めればいい。
目的のために今何が必要で何が不必要か見極めれ。
# で、GUIプログラミングのほうがメインというなら、オセロ云々は君にとって今はそれは最終目的地であって、
# まずはメッセージボックス出すところからでもはじめなさいってこった。
0965960=949の人
NGNGまさにご指摘の通りです。
非常に適切なアドバイスをありがとうございますm(_ _)m
とりあえずDLLとかの形でGUI部分と演算部分を分けた方が良さそうですね。
がんがります。
0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNG0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNGVB屋?
0971デフォルトの名無しさん
NGNG下手なC/C++屋なんて目じゃないって奴が時々いる
0972965
NGNGというかDOS時代からC使いでした。
ゐんどうずはDOSと比べて難しすぎます・・・。
0973デフォルトの名無しさん
NGNGあんた、ブランク長い?
浦島太郎みたいな感じだよ
0974972
NGNGゐんどうずのプログラムはVisualBasicで組んでます。
後はUNIX環境でCとかPerlとかmatlabとかMathematicaとか使えば済んでしまうので、
あまりゐんどうずのプログラムは勉強して無かったです・・・。
0975デフォルトの名無しさん
NGNG○ か ×か、さぁどっち!
0976デフォルトの名無しさん
NGNG画像がどうしてもキャッシュから参照して古い画像が表示されてすまいます。
アップ後の画像ファイル名を変えずにブラウザに画像をキャッシュさせない方法知りませんか?
イメージとしてはperlで利用できるHTTPヘッダーとか利用して何とかなりませんかね。。
▼これはためしてみましたが駄目でした。
●pragma: no-cacheを画像のヘッダーにつけてファイルを閉じる
→画像が表示されない。。
いいほうほうがありまたら、どなたかおしえてくださりませんか。。
0979デフォルトの名無しさん
NGNG正直、リファレンスで構造体を返す事もできる。
答えは、どんな形でも返せる。
0980デフォルトの名無しさん
NGNG>>978
あ、いい忘れたけど。
特別な方法を取らなくても配列なら戻り値にできるから。
じゃ。
0981デフォルトの名無しさん
NGNG@a = &arrayfunc(10);
foreach (@a){
print "$_\n";
}
exit(0);
sub arrayfunc()
{
local($num) = @_;
for($i = 0; $i < $num; $i++){
$result[$i] = $i * 2;
}
return @result;
}
0982デフォルトの名無しさん
NGNG●pragma: no-cacheを画像のヘッダーにつけてファイルを閉じる
をするのと、さらに cgi から直接 jpg/gif 等のバイナリを出力する方法があるので、
画像へのリンクとはせずに cgi へのリンクを開くようにさせればよい。
0983デフォルトの名無しさん
NGNGなぜlocalを使う。
レキシカルだろ。普通。
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNGたとえば
<img src="/cgi-bin/imageout.cgi" border="0">
としておいて、
--------
$size = -s $file;
$buf = '';
if(!(-e $file)){
print "Content-Type: image/jpeg\n";
print "Content-Length: $size\n";
print "pragma: no-cache\n";
print "\n";
open(INF, $file);
binmode(INF);
binmode(STDOUT);
read(INF, $buf, $size);
print $buf;
close(INF);
}
0986デフォルトの名無しさん
NGNGごめん my にするつもりでうっかり…
0987デフォルトの名無しさん
NGNGこうですか?
sub arrayfunc()
{
local($num) = @_;
for($i = 0; $i < $num; $i++){
$result[$i] = $i * 2;
}
return wantarray ? @result : undef;
}
0988デフォルトの名無しさん
NGNG>>983
0989デフォルトの名無しさん
NGNGそれは、配列じゃなくてリストが返されてると思いますが・・・
0990デフォルトの名無しさん
NGNGsub arrayfunc($){
wantarray ?
map{
$_ * 2;
# ここにつらつら
}0..$_[0]
: '';
}
0991デフォルトの名無しさん
NGNGひっかけ問題。
サブルーチン側がリストを返そうとしていても
呼び出し側のコンテキストがスカラーコンテキストの場合
リストの要素数が返ってしまう。
0992デフォルトの名無しさん
NGNG配列そのものは返せないだろ
0993デフォルトの名無しさん
NGNGと聞いているから、呼ぶ側の条件は
無視していいだろ?
0994デフォルトの名無しさん
NGNG>●pragma: no-cacheを画像のヘッダーにつけてファイルを閉じる
画像ファイルにこれ書き込んだの?ファイル壊してるだけだよ^^;
imgタグのsrcに書くパスの最後に ? を付け加えて味噌
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNGアップローダって事は、 CGI ですね。
994 氏と似通っていますが、たとえば参照したい画像のファイル名が 0123.jpg でしたら、
0123.jpg?適当な文字列
を出力すると桶です。
凡例:
sprintf qq|<img src="$Image_Filename?%d">|, time;
0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。