Perlについての質問箱 23箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/03/07(火) 23:48:21"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
http://www.perl.org/get.html
● 2006/01/29現在の最新版: 5.8.8
● 2006/01/29現在の開発版: 5.9.3
リンク集は>>2-3
過去スレは>>4-5
0002デフォルトの名無しさん
2006/03/07(火) 23:49:12Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.8/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0003デフォルトの名無しさん
2006/03/07(火) 23:50:07CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2006/03/07(火) 23:50:511 http://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 http://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 http://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 http://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 http://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 http://pc2.2ch.net/test/read.cgi/tech/1068051036/
8 http://pc2.2ch.net/test/read.cgi/tech/1074151549/
9 http://pc5.2ch.net/test/read.cgi/tech/1079114157/
0005デフォルトの名無しさん
2006/03/07(火) 23:51:5811 http://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 http://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 http://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 http://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 http://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 http://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 http://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 http://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 http://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 http://pc8.2ch.net/test/read.cgi/tech/1131286411/
21 http://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 http://pc8.2ch.net/test/read.cgi/tech/1138519327/
0006デフォルトの名無しさん
2006/03/07(火) 23:59:360007デフォルトの名無しさん
2006/03/08(水) 00:11:283連乙
0008デフォルトの名無しさん
2006/03/08(水) 12:08:19オライリーでは何も情報がないのですか?
0009デフォルトの名無しさん
2006/03/08(水) 12:19:36あるけど?
http://www.oreilly.co.jp/catalog/soon.html
0010デフォルトの名無しさん
2006/03/08(水) 13:26:40firefox1.5.0.1でそのページを見ていたのですが、なぜか表示されないんですよね。
近刊書籍の部分だけ・・・
IEで見たらちゃんと表示されました。いったいなぜなんだー
両方のブラウザでページのソースみてみたら、
firefoxの方では、近刊書籍のリストの部分がごっそり欠如していました。
広告削除拡張入れているわけでもないので、欠如する理由がわからない。
なんだよオライリーはIEびいきかよ
0011デフォルトの名無しさん
2006/03/08(水) 14:11:43相変わらずオライリー高いなあ……と思ったら、
第1版 4500円じゃん?!
0012デフォルトの名無しさん
2006/03/08(水) 14:14:14親分格の Mozilla Suite 1.7.12 では正常。
0013デフォルトの名無しさん
2006/03/08(水) 14:20:480014デフォルトの名無しさん
2006/03/08(水) 14:51:44もとの本がAdvaced Perlとかいう本らしいし
0015デフォルトの名無しさん
2006/03/08(水) 17:39:04なに弱音を吐いてるんだッ!!
この本は君のようなAdvanced Perlerのために書かれた
本じゃないかッ!!!
0016デフォルトの名無しさん
2006/03/08(水) 17:49:37ティム・オライリー乙
0017安西先生
2006/03/08(水) 18:43:13諦めたらそこで試合終了だよ
,.‐- 、
廴ミノ
///¨' 、
y':;:;:;:/⌒i!
�J:;:;:;:;};:;:/;},
;il||||li' t`'---‐';:;:;:l
,.r'"''、,┘ 7;:;:;:;:;:;:;:;「
ノ4 (⌒i .}:;:;:;:;:;:;;/
/..,__彡{, | `i:;:;:;:;:;}
( .ミi!} l、 .」:;:;:丿
クュ二二`Lっ) `==='
0018三井クン
2006/03/08(水) 18:50:47,.‐- 、
廴ミノ �J ブーン
⊂二二///¨' 二二二つ
y':;:;:;:;:;::;;;}
(:;:;:;:;;:;:;:;::;;},
t`'---‐';:;:;:l
(´ .___ノ
\\ \\
レ' \\ 三
レ'
;il||||li' ブーン
⊂二二二'"''、,┘二二⊃
ノ4 /
/..,__彡/
( ヽノ
ノ>ノ
三 レレ
0019デフォルトの名無しさん
2006/03/08(水) 18:52:430020デフォルトの名無しさん
2006/03/08(水) 19:13:01unlink
0021デフォルトの名無しさん
2006/03/08(水) 20:51:28再起動
0022デフォルトの名無しさん
2006/03/08(水) 21:14:53flock(FH,1);
@d=<FH>;
close(FH);
flock(FH,8);
foreach $data (@d){
($q,$a)=split(/=/,$data);
printf("問題:$q\n解答例:$a");
}
0023デフォルトの名無しさん
2006/03/08(水) 21:34:29/=/,
printf ("問題:%s\n解答例:%s\n", $`, $');
}
printfの使いかた違うし。
0024デフォルトの名無しさん
2006/03/08(水) 21:35:03002522
2006/03/08(水) 21:54:59Cが入った
0026デフォルトの名無しさん
2006/03/08(水) 21:58:11安くなったのは多分、内容が入れ替わって本自体が薄くなったから。
洋書置いてる本屋なら Advanced Perl 2nd Edition 売ってるよ。
0027デフォルトの名無しさん
2006/03/08(水) 22:28:16または
print "問題:$q\n解答例:$a\n";
か、律儀に
print '問題:', $q, "\n", '解答例:', $a, "\n";
0028デフォルトの名無しさん
2006/03/08(水) 23:10:41どの辺が入れ替わったの?
0029デフォルトの名無しさん
2006/03/08(水) 23:29:45ほとんど全部(マジで)…。
0030デフォルトの名無しさん
2006/03/08(水) 23:35:48ttp://www.oreilly.co.jp/books/4900900826/toc.html
Advanced Perl Programming, 2nd Edition
ttp://www.oreilly.com/catalog/advperl2/toc.html
この違いを見よ(笑)
0031デフォルトの名無しさん
2006/03/08(水) 23:40:57完全に別物だね。
第1巻、第2巻という風にしてもよさそうなもんなのに。
0032デフォルトの名無しさん
2006/03/09(木) 00:18:59送信できるYO!とあったのですが、やってみてもどうしてもメールの送信すらできません。
これはどのようにコードを改良すればできるのでしょうか?
use Net::SMTP;
my $from_address = 'sender'.'@'.'provider.com';
my $sender_name = "Any Name";
my $to_address = 'recipient'.'@'.'destination.com';
my $subject = "nurupo";
my $message = "";
my $filename = 'c:\tools\perlmail\msg\alert.txt';
open(INFILE, $filename);
my $mail_server = "outgoing.verizon.net";
$smtp = Net::SMTP->new($mail_server, Debug=>1);
die "Couldn not connect to server" unless $smtp;
# Authenticate the user
$smtp->auth ('sender', 'password');
# Prepare for sending
$smtp->mail($from_address ); # use the sender address here
$smtp->to($to_address); # recipient address
$smtp->data(); # Start the mail
$smtp->datasend("To: $to_address\n");
$smtp->datasend("From: $from_address\n");
$smtp->datasend("Subject: $subject\n");
$smtp->datasend("\n");
while () {
chop;
$message = "$_\n";
$smtp->datasend($message);
}
# Terminate
$smtp->dataend(); # Finish sending the mail
$smtp->quit; # Close the SMTP connection
0033デフォルトの名無しさん
2006/03/09(木) 00:21:12でも 2nd Edition も有用(というか現代的)なので買ってそんはしないよ
Perl Best Practice とセットで買え
0034デフォルトの名無しさん
2006/03/09(木) 00:24:060035デフォルトの名無しさん
2006/03/09(木) 00:31:54元のファイルをそのままコピーしたもので。。。スマソ
0036デフォルトの名無しさん
2006/03/09(木) 00:33:00undef $scalar;
とすれば、undef値がスカラー変数に入ると思いますが、
undef @array;
や
undef %hash;
とやるとすべての要素にundef値が入るってことなのでしょうか?
それともメモリ開放ですか?
0037デフォルトの名無しさん
2006/03/09(木) 00:39:01解放です
0038デフォルトの名無しさん
2006/03/09(木) 00:41:170039デフォルトの名無しさん
2006/03/09(木) 00:43:05perlは未定義値を入れるということはできないので。
Rubyのnilみたいな
004036
2006/03/09(木) 00:43:58じゃあスカラー変数に対するときだけ、undef値代入ってことですね。
0041デフォルトの名無しさん
2006/03/09(木) 00:44:540042デフォルトの名無しさん
2006/03/09(木) 00:54:02身近なのでJavaScriptの if (huga == false) {}みたいな
違うか。
004332
2006/03/09(木) 09:40:280044デフォルトの名無しさん
2006/03/09(木) 10:18:42エラーメッセージとか何か出てない?
どこまで正しく処理できててどこでどんなふうにコケたかとか、
状況が良くわからないとなんとも。
0045デフォルトの名無しさん
2006/03/09(木) 10:36:31SMTPの窓が開き、認証は終わり、こちらのメールアドレスを送信し終わったところで
止まります。
たぶん、
>$smtp->mail($from_address ); # use the sender address here
か
>$smtp->datasend("To: $to_address\n");
のどちらかだと思うのですが。
本文の送信部分までは至らないです。
0046デフォルトの名無しさん
2006/03/09(木) 11:14:53いや。できるって。
$a = undef; は可能。
@a = (undef, undef, undef); みたいなのも可能。
但し @a = undef; とやると @a = (undef); になってしまうので
undef(@a); とは意味が違う。
0047デフォルトの名無しさん
2006/03/09(木) 11:17:34my $a = undef;
if ($a == undef) {
print "これは出来るんだが…。\n";
}
でも SQL の is null みたいに undef かどうかは defined() で
別途判別するのがいいような気がする。
0048デフォルトの名無しさん
2006/03/09(木) 12:14:06MAIL FROM:<XXXX>
RCPT TO:<YYYY>
のそれぞれに対する応答はどんなのが返っている?
0049デフォルトの名無しさん
2006/03/09(木) 13:11:44while () {
まさかここに条件が入ってないまま実行してたりしないだろうね。
これそのままだと無限ループだぞ・・・
0050デフォルトの名無しさん
2006/03/09(木) 13:24:14ところが、それは
my $foo = "";
if ($foo == undef) {
print "true¥n";
}
でも trueになってしまうので defined 使うしか無いんだよね。
0051デフォルトの名無しさん
2006/03/09(木) 13:38:20<INFILE> が、投稿時に消されてしまったのではないかと思われ。
0052デフォルトの名無しさん
2006/03/09(木) 13:51:41引数と同じ? でも入りません。Linux なんですが。
別のプロセスでロックを掛けておいて
use Fcntl;
$b = pack('s2l3', F_WRLCK, SEEK_SET, 0, 0, 0);
fcntl(F, F_GETLK, $b);
をしても $b に変化がない。
C言語で同じやつを作ると l_pid にちゃんとPIDが入って来ます。
0053デフォルトの名無しさん
2006/03/09(木) 13:52:36そうだったのか。orz
0054デフォルトの名無しさん
2006/03/09(木) 14:39:16分裂病?
0055デフォルトの名無しさん
2006/03/09(木) 14:57:09どういう意味?
0056デフォルトの名無しさん
2006/03/09(木) 15:21:26SQLみたいに抽出できないんですか?
foreach $line(@lines){
@data=split(/,/,$line);
if($data[1] eq "BBB"){
$title=$data[3];
last;
}
}
print "$title"
(CSVファイルのデータ)
番号,名前,メール,タイトル,本文
1,AAA,,無題1,本文1
2,BBB,,無題2,本文2
3,CCC,,無題3,本文3
.
.
.
200,AAA200,,無題200,本文200
0057デフォルトの名無しさん
2006/03/09(木) 15:25:33> PerlでCSVファイルから名前がBBBのタイトルを抽出する場合って下記のように一行ずつ調べていくやり方しかないんでしょうか?
そんな事はない。工夫次第。
0058安西先生
2006/03/09(木) 15:32:12>> PerlでCSVファイルから名前がBBBのタイトルを抽出する場合って下記のように一行ずつ調べていくやり方しかないんでしょうか?
>そんな事はない。工夫次第。
でもまあ、普通はそんな感じ。
0059デフォルトの名無しさん
2006/03/09(木) 16:37:51仮にSQLが使えたとしても、SQLの内部動作はそれとほぼ同じになると思う。
(実際には構文解析とかもあるのでもっと複雑)
その他、予め全部読んでおいてキーとなる項目をハッシュに
入れておくという方法がある。これはデータを何度も検索する
場合は都合が良いが、ファイルを一回読んで一回しか処理しない
という場合は(全部読んで保存しておく必要があるため)無駄が
多いと思う。
# 予めこんな風にしてハッシュを作る。
for (@lines) {
@d = split /,/;
$h{$d[1]} = [@d];
}
# 検索はこれだけで済む。
if (defined($h{'BBB'})) {
$title = $h{'BBB'}[3];
}
0060デフォルトの名無しさん
2006/03/09(木) 16:49:12とっても回りくどいやり方。
http://search.cpan.org/~jzucker/DBD-CSV-0.22/lib/DBD/CSV.pm
0061デフォルトの名無しさん
2006/03/09(木) 17:05:44その行を切り出して目的の行か調べる。というのもかなり速げ。
0062デフォルトの名無しさん
2006/03/09(木) 18:44:13それぞれのメールアドレスがきちんと表示されてます。
>>49>>51
えっ?そのままですが・・・・・?
そのままだとファイルの中身をすべて送ってくれると思っていたのですが。
元々の引用元もそうだったので。。。
も、もしかして私、一人漫才やってますか?(汗)
試しに>>51さんの発言を中に入れてみたのですが駄目でした。
0063デフォルトの名無しさん
2006/03/09(木) 19:27:070064デフォルトの名無しさん
2006/03/09(木) 21:18:28そんなにギッタンギッタンにしてくれなくてもいいんですけど。
0065デフォルトの名無しさん
2006/03/09(木) 21:56:330066デフォルトの名無しさん
2006/03/09(木) 22:29:50味噌汁で顔を洗いなおしてテンプレサイトで勉強してきます。
ありがとうございました。
0067デフォルトの名無しさん
2006/03/09(木) 22:32:590068デフォルトの名無しさん
2006/03/09(木) 22:45:13Perlプログラミングでも使いまくりですよ。
0069デフォルトの名無しさん
2006/03/09(木) 22:48:580070デフォルトの名無しさん
2006/03/09(木) 23:31:23どうやって解決したかくらい言ってくれても罰は当たりませんよ。
0071デフォルトの名無しさん
2006/03/09(木) 23:49:46<>が全角だっただなんて、ぐぐっても出てこないDQNミスは味噌汁で顔を洗うことぐらいしかお詫びできないかと思いまして・・・o...rz
0072デフォルトの名無しさん
2006/03/10(金) 00:07:47ワカメ入りの味噌汁で洗っておくれ。そんでもって、写真うp
0073デフォルトの名無しさん
2006/03/10(金) 01:04:22メールは正しく送信されるのですが、意味の分からないところで固まってしまい、あたふたしています。
以下が問題の部分なのですが、
&ProgramAccessTimeOut('Line : 734');
&jcode'convert(*emails,'jis');
&ProgramAccessTimeOut('Line : 736');
if(open(MAIL,"| $sendmail $mailto")){
print MAIL "$emails";&ProgramAccessTimeOut('Line : 738');
close(MAIL);&ProgramAccessTimeOut('Line : 739');
&ProgramAccessTimeOut('Line : 740');return true;
}else{
&ProgramAccessTimeOut('Line : 742');return false;
}
で、ProgramAccessTimeOutは
sub ProgramAccessTimeOut{
my $md = $_[0];
my $sa = time - $ProgramAccessTimeOut_StartTime;
if($sa > 20){&Error('Time Out');}
open(IPR,">>prosess.txt");
print IPR "$md\n";
close(IPR);
return;
}
となっています。これはプログラムの動きを見るために付けたものです。
prosess.txtに保存されている最後の内容が、Line : 738で、print MAIL "$emails";までは正しく働いていることが確認できるのですが、何故か
close(MAIL)で固まってしまっている様子です。エラーの内容は、「OUT OF MEMORY!」でした。
全く歯が立たないため解決方法をお願いしたいのですが、お願いできませんでしょうか、お願いいたします。
0074デフォルトの名無しさん
2006/03/10(金) 01:20:520075デフォルトの名無しさん
2006/03/10(金) 01:21:25デバッグのやり方、考え直した方がいいと思う。
sendmailにおくるとき、末尾の改行の数厳密だったっけ?最後"\n\n"になってる?
0076デフォルトの名無しさん
2006/03/10(金) 01:28:21$emailsの内容も1KB未満で、$mailtoに入っているメールアドレスにも受信ができたので正しくメールは送信されています。
その他の部分はif文やfor分だけなので特に干渉している部分も無く、エラー部分がclose処理なので、エラーに心当たりが無い感じです。
0077デフォルトの名無しさん
2006/03/10(金) 01:29:10eval{}で囲んで例外キャッチするべきではないか。
0078デフォルトの名無しさん
2006/03/10(金) 01:30:44use strict
0079デフォルトの名無しさん
2006/03/10(金) 01:35:07末が\nだったので\n\nに修正したところ正しく動作しました。
今まで\nでも正常にcloseの動作がしていたため全く気付きませんでした、ありがとうございます。
正しいデバックの方法を知らないため、あんなことしてます。すいません。
>>77
STDERRをファイルに出力しているため、エラーを取得できました。
evalの使い方はまだ習得していないため分からない感じです。すいません。
ありがとうございました。
0080デフォルトの名無しさん
2006/03/10(金) 01:41:39"\n\n"は覚えておいて損はないよ。
use strict; は早めに覚えておいた方がいい。
0081デフォルトの名無しさん
2006/03/10(金) 01:50:51了解です
>>79で解決したかに見えましたが、プログラムを何も変えずに再度実行したところまたエラーが発生しました。
やはり、エラー箇所はclose(MAIL)のようです。申し訳ないです。
0082デフォルトの名無しさん
2006/03/10(金) 02:07:12どこぞのサンプルコード張っただけで動くか確認してみれば?
008373
2006/03/10(金) 02:19:28まずLinux治します。しばらく消えます。
008473
2006/03/10(金) 02:41:35require './jcode.pl';
$sendmail='/usr/sbin/sendmail';
$subject = 'testmail';
BEGIN{
$| = 1;
open(STDERR, ">&STDOUT");
}
print time ."...Start\n";
$mailto = '[email protected]';
$emails = "To: $mailto\n";
$emails .= "From: $mailto\n";
$emails .= "Subject: $subject\n\n";
$emails .= 'あかさたな'."\n\n";
print time ."...\$emails input\n";
&jcode'convert(*emails,'jis');
print time ."...jcodeconvert\n";
if(open(MAIL,"| $sendmail $mailto")){
print time ."...if(open(MAIL))\n";
print MAIL "$emails";
print time ."...\$emails\n";
close(MAIL);
print time ."...close(MAIL)\n";
}
exit;
008573
2006/03/10(金) 02:42:231141925875...Start
1141925875...$emails input
1141925875...jcodeconvert
1141925875...if(open(MAIL))
1141925875...$emails
1141925889...close(MAIL)
closeするのにえらい時間がかかっていることが確認されました。原因は不明です。
008673
2006/03/10(金) 02:42:36008773 ◆KmJI5XgmH6
2006/03/10(金) 02:43:530088デフォルトの名無しさん
2006/03/10(金) 02:45:45「&jcode'convert(*emails,'jis'); 」って。。。。wwww
&によるサブルーチン、'によるパッケージ修飾、型グロブ渡し・・・
10年以上前、Perl4時代のコーディングスタイルだよ。
Linuxが直ったらとりあえずそこらで適当にここ1〜2年で刊行された
Perl本を買ってきて読め。マジで。
008973 ◆KmJI5XgmH6
2006/03/10(金) 02:48:201年前1冊買った本見ながら最近やり始めたとこなのに・・・orz
その辺りはネットで漁ってみます。問題はclose処理に10秒以上も掛かっている部分なんです・・・
009086
2006/03/10(金) 02:48:210091デフォルトの名無しさん
2006/03/10(金) 02:51:57Linuxが不安定なら、ビルド失敗してるとかじゃないの?
とりあえず、Linux安定させないと問題の切り分けができませんよ。
009273 ◆KmJI5XgmH6
2006/03/10(金) 03:00:01SendmailやPerlは元々入っていたので全くもって無知ですが・・・。
0093デフォルトの名無しさん
2006/03/10(金) 03:02:550094デフォルトの名無しさん
2006/03/10(金) 03:06:50自然言語にクォートの概念はいらないって意味合いですか?
0095デフォルトの名無しさん
2006/03/10(金) 03:13:14> closeするのにえらい時間がかかっていることが確認されました。原因は不明です。
うちのFreeBSDでは
1141927843...Start
1141927843...$emails input
1141927843...jcodeconvert
1141927843...if(open(MAIL))
1141927843...$emails
1141927843...close(MAIL)
だったヨ。
DNSクエリかな?
0096デフォルトの名無しさん
2006/03/10(金) 03:15:31すまん、酔っぱらって帰ってきたんでアレなんだがどこらへんが裸語句?
009794
2006/03/10(金) 03:34:160098安西先生
2006/03/10(金) 04:35:57use constant つかったんじゃないのか?
use constant true => 1;
use constant false => 0;
print "true:", true, ", false:", false, "\n";
# => true:1, false:0
いや、俺もconstant使ったことないから知らんけどさ。
0099デフォルトの名無しさん
2006/03/10(金) 04:42:080100デフォルトの名無しさん
2006/03/10(金) 09:36:07> そろそろBenchmarkぐらい教えてあげようよ。
指示するな。
0101デフォルトの名無しさん
2006/03/10(金) 16:52:55やり始めで気づいてよかったな。
0102デフォルトの名無しさん
2006/03/11(土) 14:45:380103デフォルトの名無しさん
2006/03/11(土) 15:10:290104デフォルトの名無しさん
2006/03/11(土) 15:51:53$ENV{HTTP_USER_AGENT}の文字列の中身をみて判断するんだろうが、
PerlではなくCGIの質問なのでWebProg板にでも行ってきなさい。
0105デフォルトの名無しさん
2006/03/13(月) 02:49:10教えてください。
0106デフォルトの名無しさん
2006/03/13(月) 03:33:30ホストで判別ってのは??
if($host=~/ezweb\.ne\.jp|docomo\.ne\.jp|vodaphone\.ne\.jp/i){$type ='Phone';}else{$type = 'PC';}
とかで。
0107デフォルトの名無しさん
2006/03/13(月) 06:26:20そこまで厳格化する必要はないだろうけどUA全部調べるのは大変だし。
0108デフォルトの名無しさん
2006/03/13(月) 06:54:160109デフォルトの名無しさん
2006/03/13(月) 07:23:30扱うだけなら特別何かする必要は無い。
弄りたいならcookie_jarメソッドを呼び出して、帰ってきたHTTP::Cookiesオブジェクトを操作汁
0110デフォルトの名無しさん
2006/03/13(月) 07:41:00gonzuiのCPANサーチ
http://cpansearch.bulknews.net/
もいろいろ使えるね。
0111デフォルトの名無しさん
2006/03/13(月) 12:01:07my $cookie_jar = HTTP::Cookies -> new (file => 'file.cook', autosave => 1);
$cookie_jar -> add_cookie_header ($request);
$ua -> cookie_jar ($cookie_jar);
0112デフォルトの名無しさん
2006/03/13(月) 22:26:35適当なファイルを作成し0バイトで無ければ処理へという方法以外に何かスマートな方法は
ありますでしょうか?
0113デフォルトの名無しさん
2006/03/13(月) 22:43:420114デフォルトの名無しさん
2006/03/13(月) 22:54:30作ってみてエラーになるかチェックするのが必要十分にて一番スマートな方法。
ファイルシステムにもよるし、quotaの設定にもよるし、自分がrootかもしれないし、
nfsかもしれないし…と、汎用的な事前チェック方法は無いと思ったほうが良い。
0115デフォルトの名無しさん
2006/03/13(月) 23:16:430116デフォルトの名無しさん
2006/03/13(月) 23:20:11テスト書込から実際に書き込むまでの間にdisk fullになる可能性もありlockと似たような
問題が生じる事があるんですよね。
取りあえずテンポラリファイルに実際の内容を書込をしてサイズが0で無ければ
元ファイルを削除→テンポラリファイルをrenameといった手法でいこうと思います。
awstatsもこの方法でサイズ0問題を回避してますね。
0117デフォルトの名無しさん
2006/03/13(月) 23:22:25openでは捕捉出来ないと思います。
コンソールだとエラーメッセージは表示されます。
0118デフォルトの名無しさん
2006/03/14(火) 00:21:14あと、 Windows は知らんけど、 UNIX なら「元ファイルを削除」は要らんよ。
0119デフォルトの名無しさん
2006/03/14(火) 08:48:58[[1,1,1],[11,11,11]],
[[22,22,22],[222,222,222]].
[[33,33,33],[333,333,333]],
);
という配列の中にあるそれぞれの配列の要素数を知るには
どうしたらよいのでしょうか?
0120デフォルトの名無しさん
2006/03/14(火) 09:00:440121デフォルトの名無しさん
2006/03/14(火) 09:00:58> print $#{$a[1][0]};
> 2
> print "@{$a[1][0]}";
> 22 22 22
0122119
2006/03/14(火) 10:08:01>>120
何も出力されません。
>>121
-1 になってしまいます。
Perl のバージョンは
>perl -v
This is perl, v5.8.7 built for MSWin32-x86-multi-thread
です。
0123デフォルトの名無しさん
2006/03/14(火) 11:24:30@a=(
[[1,1,1],[11,11,11]],
[[22,22,22],[222,222,222]]. ←
[[33,33,33],[333,333,333]],
);
0125デフォルトの名無しさん
2006/03/14(火) 11:34:25二行目(22,22がある行ね)って , じゃなくて . になってるのは間違え?
0126デフォルトの名無しさん
2006/03/14(火) 11:35:270127デフォルトの名無しさん
2006/03/14(火) 11:37:200128デフォルトの名無しさん
2006/03/14(火) 11:38:160129デフォルトの名無しさん
2006/03/14(火) 11:52:22わからんし、$self->{hoge}のチェックにもならん罠。
後者はuse fieldsでなんとかなるのかな〜。まだ使ってないけど。
0130デフォルトの名無しさん
2006/03/15(水) 10:58:17---test.plの始まり---
#!/usr/bin/perl
use Data::Dumper;
use subs qw(exit);
$Data::Dumper::Indent = 0;
Valiable->new(our $val = {});
require "./test2.pl";
hoge::hoge();
print "main : ", Dumper($val) . "\n";
Valiable::valiable($val);
exit;
package Valiable;
sub new {
my ($class, $dbg) = @_;
*::exit = sub {
valiable($dbg);
CORE::exit;
};
}
sub valiable { print "val : ", ::Dumper(shift) . "\n"; }
---test.plの終わり---
---test2.pl---
package hoge;
sub hoge { $::val->{hoge} = 'hage'; }
1;
---test2.plの終わり---
0131デフォルトの名無しさん
2006/03/15(水) 10:58:53main : $VAR1 = {'hoge' => 'hage'};
val : $VAR1 = {'hoge' => 'hage'};
val : $VAR1 = {'hoge' => 'hage'};
perlcc -B test2.pl -o test2.pl
-test2.plをバイナリコードへ変換した後のtest.plの結果
main : $VAR1 = {'hoge' => 'hage'};
val : $VAR1 = {'hoge' => 'hage'};
val : $VAR1 = {};
Segmentation fault
どちらも同じ結果になるのを期待しています。
perlのversion This is perl, v5.8.6 built for i386-linux-thread-multi
perlccのversion # Version 2.04, Enache Adrian,Fri, 18 Jul 2003 23:15:37 +0300
os fedora core4
バイナリコード変換後の動作でここ以外の処理は問題無かったのですが
ここだけ互換性がありませんでした。
0132デフォルトの名無しさん
2006/03/15(水) 12:53:010133デフォルトの名無しさん
2006/03/15(水) 16:08:45perlcc関連の資料をググってると日本では間違ったイメージを持ってる人が多いと思います。
1,perlccで作ったバイナリはまともに動かない
2,perlccでコンパイルするとC並の動作速度が期待出来るが生成されるコードは実用に耐えない
1に関して-Bオプションを使用した場合、Cコードは生成されず、通常Perlが踏むバイナリコードへの
変換だけ行われ、非常に高いレベルで動作します。
2に関してはperlccのソースを見る限りperlコードをCのコードへ変換しているわけではなく
ネイティブで実行出来るインタプリタにバイナリコードへ変換したソースをくっつけているだけで
バイナリコードの変換とローダ部分のコストぐらいしか軽減されず例え動作に成功しても
10%ぐらい高速化するのがせいぜいだと思います。
0134105
2006/03/15(水) 21:10:03どうも有難うございました。
無事Cookieを受け入れてくれました。
ところで、HTTPサーバからCookieを要求された場合、特別何かしなくても
WWW::Mechanize->new() で生成されたユーザエージェントがサーバにCookieを送信してくれるのでしょうか?
0135デフォルトの名無しさん
2006/03/15(水) 22:27:36ググったところhttp://par.perl.org/にてそのソフト入手できるとのこと。
しかし、もうそのURLは存在せず、いろいろ辿って見つけた
http://www.activestate.com/Products/Perl_Dev_Kit/については、
Turn your Perl programs into ready-to-run executables for AIX, HP-UX, Linux, Solaris, and Windows.
とあるものの有料。
フリーなものはないですか?
やりたいこととしては、実行形式にしたファイルに、処理対象のテキストファイルを
ドラッグドロップで入力し、出力結果として別のテキストファイルを作成というもの。
0136デフォルトの名無しさん
2006/03/15(水) 22:44:15Cookieを要求された場合って何?
Cookieというのはサーバが要求するものじゃなくて、
対象のDomainかつPathなら常にヘッダに付けて送られ続けるものだよ。
そしてそう動作するかは実験してみりゃわかるじゃないか。
漏れが試した限りでは何もしないでもちゃんと送られた。
>>135
PARはCPANにある
ttp://search.cpan.org/~smueller/PAR-0.92/
ActivePerlならppmでインストール汁
現在の最新版はBdPのリポジトリにある模様。
ttp://www.bribes.org/perl/ppmdir.html
0137デフォルトの名無しさん
2006/03/15(水) 22:46:53PARなら
ppm install PAR
で入ったような気がする。
>>133
PARはどーよ?
0139133
2006/03/16(木) 00:17:18目的はソース隠蔽なのでPARは向かないのです。
それとバイナリコードではなくバイトコードの誤りでした。
中間コードではある程度復元出来てしまいますが--)
namespaceを越えてアクセスすると発生するようなのでコーディングスタイル
を変更することで対応したいと思います。
Perl6ではこの辺りのことも触れられているようなので期待しています。
0140デフォルトの名無しさん
2006/03/16(木) 03:16:09> やりたいこととしては、実行形式にしたファイルに、処理対象のテキストファイルを
> ドラッグドロップで入力し、出力結果として別のテキストファイルを作成というもの。
それだったら、実行形式にする必要ないんじゃないの?
0141デフォルトの名無しさん
2006/03/16(木) 03:21:000142デフォルトの名無しさん
2006/03/16(木) 04:42:13linuxは普段使ってないから、(knoppixで)軽く確認した程度だが...
セグメンテーションフォルトは、requireされた側でByteLoader.pmの読み込み
が発生したときに起こっていた。
つまり、読みこみ側(test1.pl)が使わないByteLoaderを読まれる側(test2.pl)が
使っているのが原因。
現状で唯一の対策はByteLoaderを使わない事。
また、表示内容の不一致は、$valではなく$dbgを表示している為。
バイトコード化されたtest2.plをrequireした時点で、$valと$dbgは別物になる。
確認は、こんな感じで。
#!/usr/bin/perl
our $val = {'dummy'=>''};
my $dbg=$val;
print "-initial\nval($val)=[",join(',',keys $val),"]\n";
print "dbg($dbg)=[",join(',',keys $val),"]\n";
require "./test2.pl";
print "-Required\nval($val)=[",join(',',keys $val),"]\n";
print "dbg($dbg)=[",join(',',keys $dbg),"]\n";
hoge::hoge();
print "-hoged\nval($val)=[",join(',',keys $val),"]\n";
print "dbg($dbg)=[",join(',',keys $dbg),"]\n";
exit;
初期化される変数の一覧は、バイトコード化されたモノをvi等で見ればわかる。
ここまで書けば、解決方法は解るよね?
正攻法以外に、嫌な方法や汚い方法があるけど、嫌な方法が手軽でPerlらしいと思う。
>>133
ここに書いた程度しか理解してないのに言うのも何だけど、perlccは実験段階だろ。
0143デフォルトの名無しさん
2006/03/16(木) 10:24:26丸コピーしてeditせずに継承とかそんな感じのメカニズムでうまく
やる方法はないだろうか?
具体的にはNet::POP3をPOP3 over SSL対応させたるために
IO::Socket::INETのかわりにIO::Socket::SSLを使いたいのです。
0144デフォルトの名無しさん
2006/03/16(木) 11:56:250145デフォルトの名無しさん
2006/03/16(木) 13:38:22ああそうかと思って試しにやってみた。今回は単純なので
package Net::POP3::SSL;
use strict;
use IO::Socket::SSL;
use Net::POP3;
use vars qw(@ISA);
@ISA = qw(IO::Socket::SSL Net::POP3);
1;
とするだけでなんとかなる感じ。(IO::Socket::SSLもすこし直さないと
だめだったが。)
継承関係が複雑だとこんなにすんなりとはいかないかもな。
多重継承で後のクラスのメソッドを前ので置き換えてる場合など
順序に意味があると単純に前後にくっつけりゃいいわけじゃない
ので難しそうだ。上のもNet::POP3とIO::Socket::SSLの順序いれかえ
るとNGだし。
0146デフォルトの名無しさん
2006/03/16(木) 16:22:21use Net::POP3;
@Net::POP3::ISA = qw(Net::Cmd IO::Socket::SSL);
てのはどうだろう。強引だが。
0147デフォルトの名無しさん
2006/03/16(木) 16:32:22試したらそれでも動きました。いろいろ書き方あるもんだね。
0148デフォルトの名無しさん
2006/03/16(木) 17:41:31APIは使わずに(getLogicalDrives等)取得する方法はありますでしょうか?
0149デフォルトの名無しさん
2006/03/16(木) 18:43:29最終的にはAPI使わないと無理だと思うがなぜ?
全26ドライブレターについてopendirしてみるって手はあるかもね。
でもFDDドライブなんかがあるとそこでダイアログが出て止まるよ。
0150149
2006/03/16(木) 18:49:55フロッピーディスクドライブドライブ…orz
0151デフォルトの名無しさん
2006/03/16(木) 19:03:570152デフォルトの名無しさん
2006/03/16(木) 20:00:03激ありがとうございます!!
不思議に思っていた点が全て合点しました。
Segmentation faultもtest.plをバイトコード化することで回避出来ました。
ちなみにPerl5.8.8でバイトローダーが0.5から0.6に上がっていたので試してみたのですが
結果は同じでした。中間コードでもバージョンの違いで動かないのはまだしも
プラットフォームが違っても動かないようですーー;
で解決法は
・引数で渡す
・一つのファイルにまとめる
・{ local $::val; require './test2.pl'; };
・変数宣言時の直後にrequireする
ぐらいしか思いつきませんでした。
現在のスクリプトでは動的にrequireするのと「$::」でアクセスするのは$::dbgに適当に変数を
入れて最後にDumperで表示するデバック目的とクエリを格納した$::form{name}なんかにアクセス
するのに使っているので変更が少なく実用的なのは3番目かな。
0153デフォルトの名無しさん
2006/03/16(木) 22:39:48なんとなく余計なモジュールは使いたくなかったんです
すみませんありがとうございました
0154デフォルトの名無しさん
2006/03/17(金) 03:27:57普通に @ARGV を見ればいいんじゃない?
0155デフォルトの名無しさん
2006/03/17(金) 12:43:070156デフォルトの名無しさん
2006/03/17(金) 12:51:43Magick
これは読めるよな?あとは繋げるだけだ。
0157デフォルトの名無しさん
2006/03/17(金) 12:54:000158デフォルトの名無しさん
2006/03/17(金) 13:14:53「Magick」が読めません(´・ω・`)
0159デフォルトの名無しさん
2006/03/17(金) 13:16:160160デフォルトの名無しさん
2006/03/17(金) 13:16:590161デフォルトの名無しさん
2006/03/17(金) 13:23:480162デフォルトの名無しさん
2006/03/17(金) 13:32:500163デフォルトの名無しさん
2006/03/17(金) 13:33:04マジック
0164デフォルトの名無しさん
2006/03/17(金) 13:35:35震えるぞハート、燃え尽きるほどヒート、刻むぞ血液のビート!
オーバードライブドライブ!
0165デフォルトの名無しさん
2006/03/17(金) 13:35:410166デフォルトの名無しさん
2006/03/17(金) 14:31:57具体的にはCombinePathが使いたいです。
CombinePath($buf, "c:\\windows\\System32", "..\\notepad.exe");
buf eq "c:\\windows\\notepad.exe"
とかしたい
0167デフォルトの名無しさん
2006/03/17(金) 14:47:29CPANで Win32で調べれ
0169デフォルトの名無しさん
2006/03/17(金) 15:49:50そりゃどこの国の読み方だ?
0170デフォルトの名無しさん
2006/03/17(金) 15:50:43ピール
ま、しかし、 Pearl にしようと思ったら既にあったから Perl ってのも何とも言えない命名。
0171デフォルトの名無しさん
2006/03/17(金) 17:16:05この程度、File::Specで済みそうなもんだが・・・
use File::Spec;
$buf = File::Spec->catdir("c:\\windows\\System32", "..\\notepad.exe");
print $buf; # C:\windows\notepad.exe
0172デフォルトの名無しさん
2006/03/17(金) 18:53:23# 他にもTCP/1Pになってたり
0173デフォルトの名無しさん
2006/03/17(金) 18:56:490174デフォルトの名無しさん
2006/03/17(金) 22:54:300175デフォルトの名無しさん
2006/03/17(金) 23:03:51自分の頭では[\d\D]しか考えつきませんでした。
0176デフォルトの名無しさん
2006/03/17(金) 23:11:550177デフォルトの名無しさん
2006/03/17(金) 23:30:040178デフォルトの名無しさん
2006/03/17(金) 23:32:430179デフォルトの名無しさん
2006/03/18(土) 00:46:14いや、>>175のでいいと思うんだが。
>>176は5.8でUnicode使ってるとだめぽ。
0180135
2006/03/18(土) 01:49:23自分のPCにはActivePerlがインストールしてあるんだけど
他の人のPCで自分の作ったスクリプトを簡単に動かしたくて。
# まだPAR試してない…
0181デフォルトの名無しさん
2006/03/18(土) 08:21:54temp フォルダへの展開に激しく時間がかかるな。
自分自身を圧縮等して antivirus soft による検出を逃れようとする virus も
多いから仕方ないのかもしれんが…。
0182デフォルトの名無しさん
2006/03/18(土) 10:39:43\Sではダメか?
0183http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:19:55もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0184デフォルトの名無しさん
2006/03/18(土) 20:06:24ム板のどのスレ行っても貼ってあるんだがw
0185デフォルトの名無しさん
2006/03/18(土) 20:08:55微妙に変わってたりするから手動のような気がする
スクリプト言語のスレに貼っても意味ないだろうにw
0186デフォルトの名無しさん
2006/03/19(日) 02:12:251. 作者に言え
2. ネイティブ対応にする意味ねぇだろ。普通に使えりゃ。
釣られてスマソ
0187デフォルトの名無しさん
2006/03/19(日) 15:26:23いーよいーよ!
ガンガン釣られちゃえよ!
Σ∩
.(ヨ ∧∧
\(゚∀゚)
ヽ E)
0188デフォルトの名無しさん
2006/03/20(月) 16:21:19複数行に分けるにはどうしたらいいんですか?
0189デフォルトの名無しさん
2006/03/20(月) 16:52:02……分けたいところにカーソルを置いて、リターンキーを押します。
0190デフォルトの名無しさん
2006/03/20(月) 17:24:05きっと今までVBとかそういうのを使ってたんだろうなぁ
0191デフォルトの名無しさん
2006/03/20(月) 17:32:490192デフォルトの名無しさん
2006/03/20(月) 17:57:490193デフォルトの名無しさん
2006/03/20(月) 18:26:35ああすいません
僕がばかでした
正規表現で長い文字列を使いたいんですけど
余計な変数とか使わないで書くにはどうしたらいいんですか?
今
if(/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/)
って感じなんで
if(/xxxxxxxxxxxxxxxxxxxxx\
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/)
こんな風にならない
0194デフォルトの名無しさん
2006/03/20(月) 18:35:45x オプションを使えばあるいは。
if (m{
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}x)
0195デフォルトの名無しさん
2006/03/20(月) 18:47:25できなす・・・
0196デフォルトの名無しさん
2006/03/20(月) 18:50:56何所で詰まってるかわからないんだけど、
分割して一つづつやることはできるの?
基本的なところミスってたりしてない?
0197デフォルトの名無しさん
2006/03/20(月) 18:56:33分割してもできるんですけど
ファイルから一行ずつ呼んで
if(/xxxx/){
}elsif(/xxx/){
}elsif(/xxx/){
}elsif(/xxx/){
}
って感じで正規表現で分けて処理してるうちのひとつなんで
変数使いたくないっていうだけです
0198デフォルトの名無しさん
2006/03/20(月) 19:50:220199デフォルトの名無しさん
2006/03/20(月) 21:38:40x を付けるとパターン中の空白文字を単純に読み飛ばすから、
マッチ対象にしたい空白文字はクォートしないと駄目だぞ。
x 付けて任意の位置で改行できないなら... もしかしてPerl4?
0200デフォルトの名無しさん
2006/03/20(月) 22:07:40そんな回答しかできないんだけど。
0201デフォルトの名無しさん
2006/03/21(火) 00:10:10は
if(/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/)
でいいんじゃねーの?
なにが不満?
0202デフォルトの名無しさん
2006/03/21(火) 00:14:17別ファイルに正規表現だけ入れて
変数に読み込ませるのが良いんじゃないかな
0203デフォルトの名無しさん
2006/03/21(火) 00:23:300204デフォルトの名無しさん
2006/03/21(火) 00:26:59@tmp = ($a, $b, $c);
$data{$key} = @tmp;
print $data{$key}[0] . "\n";
これで上手くいかないのはなぜ?
0205デフォルトの名無しさん
2006/03/21(火) 00:28:00つperllol
$data{$key} = \@tmp;
0206デフォルトの名無しさん
2006/03/21(火) 00:31:39うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
できたあああああああああああああああああああああああああああああああ
2時間悩んだけど聞いてよかったあああああ
ありがおつ
まじありがとう
ありがおつたりがおつありがおつ!!!!くぁwせdrftgyふj
0207デフォルトの名無しさん
2006/03/21(火) 00:36:21使い方には注意点があるから使用の際にはperlrefやperllolをよく読んだほうが良いよ。
例えば、
for $i (0..2){
@tmp = ($i);
$arr[$i]=\@tmp;
}
print $arr[0][0], "\n";
とかやると2になってしまう。
my @tmpとしてレキシカルスコープ変数にしないと,、
実体が同じだからこういうことになるわけ。
0208デフォルトの名無しさん
2006/03/21(火) 00:45:02リファレンスなんだね!
気をつけてやってみます.
ありがとう
0209デフォルトの名無しさん
2006/03/21(火) 00:50:11例えば「ABC DEF GHI JKL "○○○" PKR STU VWX YZ」という文字列があるとします。
それで""で囲まれた文を抜き出すにはどうすれば良いでしょうか?
""の間は決まった文字列ではありません。
0210デフォルトの名無しさん
2006/03/21(火) 00:51:57「perl 正規表現」でぐぐると幸せになれる
0211デフォルトの名無しさん
2006/03/21(火) 00:54:57また、ハッシュのキー、値を対応付ける => は , のシンタックスシュガーであるから。
%data = ( $key => ($a, $b, $c) ); と
%data = ( $key => $a, $b => $c); は等価となってしまう。
でも、これだと、$data{$key} の値が矛盾する。前者は($a, $b, $c)であり後者では $a
結局、配列のネストは平たく、括弧は減らす方向に展開されるのがperl流なので、構文解釈上は
後者になってしまう。だから、配列の中に、他の要素と混ざらないように配列を入れるには、それ
自体スカラであるリファレンスを使い、配列によって実装されるハッシュもまた、同様の方法を使う
ことになる。
0212デフォルトの名無しさん
2006/03/21(火) 00:58:17見事な解説乙
しかし回答速いな一分台
0214デフォルトの名無しさん
2006/03/21(火) 00:59:190215デフォルトの名無しさん
2006/03/21(火) 01:00:16$hoge =~ /"(.*?)"/;
print $1;
0218デフォルトの名無しさん
2006/03/21(火) 12:31:31$hogehoge =~ s/<table>.*<\/table>//g;
と記述したのですが、期待通りに動きません。どうしたらよいでしょう orz
0219デフォルトの名無しさん
2006/03/21(火) 12:50:500220デフォルトの名無しさん
2006/03/21(火) 13:06:30$hogehoge =~ s/<table>(.|\s)*?<\/table>//g;
ありがとうございました。
0221デフォルトの名無しさん
2006/03/21(火) 13:14:05多分、選択より文字クラスを使った方が速いから (.|\s) より [\S\s] の方が良さげ。
0222デフォルトの名無しさん
2006/03/21(火) 13:38:210223デフォルトの名無しさん
2006/03/21(火) 14:53:260224デフォルトの名無しさん
2006/03/21(火) 22:59:38どうすればいいのでしょうか?
0225デフォルトの名無しさん
2006/03/21(火) 23:07:29つperlvar
@ARGV
0226デフォルトの名無しさん
2006/03/21(火) 23:31:490227205=225
2006/03/21(火) 23:41:48漏れは他の言語の勉強の合間で、十分二十分おきくらい、のつもり…
>>224
ついでだから言い忘れたことを。
Getopt系のモジュールを使うと引数の解析を楽できるよ。
ttp://search.cpan.org/search?query=getopt&mode=module
0228デフォルトの名無しさん
2006/03/21(火) 23:52:40$ perldoc Getopt::Std
$ perldoc Getopt::Long
0229デフォルトの名無しさん
2006/03/22(水) 00:27:14すみません。できの悪いおいらには難しいみたいなので、サンプルコード探してきます。
ありがとうございました。
0230デフォルトの名無しさん
2006/03/22(水) 01:28:03perlってどこがいいんだろ?
最近わからんくなってきたよ。
0231デフォルトの名無しさん
2006/03/22(水) 01:29:070232デフォルトの名無しさん
2006/03/22(水) 01:31:46スマソわがんね
0233デフォルトの名無しさん
2006/03/22(水) 01:44:55昔からそうだけど、何でもありな所
何でもくっつけちゃう糊(glue)言語
コードが汚かろうが何だろうがお構い無しで、やるべき事をやる
0234デフォルトの名無しさん
2006/03/22(水) 01:49:31ちょっと分かった。アリガト
使い捨て感覚で気軽に作れるしね。
0235デフォルトの名無しさん
2006/03/22(水) 01:50:41そういう議論するまえに動くスクリプトが出来てしまうことだろうね。
Larryが認めるようにC,sed,awk,shから多くを「盗用」したあげく、
「やりかたは何通りもある」ので、そのあたりの言語経験者なら
初期学習コストはないに等しい。
仕様を実装する言語でなく問題を解決する道具なんだな。
それが利点であり欠点。
0236デフォルトの名無しさん
2006/03/22(水) 01:53:04オレは今欠点が目に付くんだろうな。アリガトオヤスミ。
0237デフォルトの名無しさん
2006/03/22(水) 01:53:31言語仕様的な良さとは違うかもしれないが、
個人的にPerlを使い続ける大きな理由としては「CPANがあるから」というのもある。
0238デフォルトの名無しさん
2006/03/22(水) 02:43:04これも利点と欠点を同時に持ってるけど。
>>233
汚くすればなんぼでも汚く出来るし、
綺麗にしようと思えば、なんぼでも綺麗にできる。 (なにが綺麗かは個人の差あり)
これも利点と欠点が同時に…。
共同開発に向かない言語ってのはよく聞くけど、
それは俺も賛成。
0239デフォルトの名無しさん
2006/03/22(水) 02:58:470240デフォルトの名無しさん
2006/03/22(水) 03:03:34>>1
> "There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
ってことだから良いんじゃなかろか
0241デフォルトの名無しさん
2006/03/22(水) 08:53:42TMTOWTDIの謎を探る ttp://www.netfort.gr.jp/~kiyoka/tmtowtdi/tmtowtdi.html
Perlの自然言語原理 ttp://chasen.org/~daiti-m/text/natural-ja.html
0242デフォルトの名無しさん
2006/03/22(水) 11:39:38ファイル指定でも、標準入力からパイプで流し込んでも、
while(<>)
だけでテキスト処理できるのはパールだけ。
正直、これだけのためにperl 使うといっても過言ではない。
0243デフォルトの名無しさん
2006/03/22(水) 11:41:150244デフォルトの名無しさん
2006/03/22(水) 15:28:17while {|l|}
0245デフォルトの名無しさん
2006/03/22(水) 15:37:100246デフォルトの名無しさん
2006/03/22(水) 18:35:180247デフォルトの名無しさん
2006/03/22(水) 21:14:16sed, awk, sort, uniq, ...
0248デフォルトの名無しさん
2006/03/23(木) 00:44:47どこでも使えるのは魅力だよね。
ウェブサーバ付いてればGUIも作って遊べるし。
0249デフォルトの名無しさん
2006/03/23(木) 00:56:510250デフォルトの名無しさん
2006/03/23(木) 17:33:43CGIの間違いか?
あ、いけね。ここは見て見ぬふりしないとまずかったか?
0251デフォルトの名無しさん
2006/03/23(木) 18:40:010252デフォルトの名無しさん
2006/03/23(木) 18:45:510253デフォルトの名無しさん
2006/03/23(木) 23:39:38いまだに
#!/usr/bin/perl
と書いてあるのを見ますが、
これって
#!/usr/env perl
とした方がよくありませんか?
それともenvを使うのは何かまずい点でも
あるのでしょうか?
0254デフォルトの名無しさん
2006/03/23(木) 23:41:22> #!/usr/env perl
/usr/env
/usr/env
/usr/env
/usr/env
/usr/env
0255デフォルトの名無しさん
2006/03/23(木) 23:41:55/usr/env が無い環境もある
0256デフォルトの名無しさん
2006/03/23(木) 23:46:420257デフォルトの名無しさん
2006/03/23(木) 23:56:590258デフォルトの名無しさん
2006/03/23(木) 23:58:53サブルーチンを呼び出し、サブルーチンの戻り値でマッチした箇所を書き換えたい
のですが、とりあえず以下のものは失敗でした
# fooにマッチした箇所すべてをhogesubサブルーチンの戻り値で
#書き換え
$hoge =~ s/foo/&hogesub/g;
やりたいことはお察しいただけるとおもいますが、うまくいく方法があれば
おしえてもらえないでしょうか?
0259デフォルトの名無しさん
2006/03/24(金) 00:07:22つperlop
$hoge =~ s/foo/&hogesub/eg;
0260デフォルトの名無しさん
2006/03/24(金) 00:12:52とperlopをみないでeg先に付与してやってみました。
本当にありがとうございました。
0261253
2006/03/24(金) 00:13:29○ /usr/bin/env
ごめん。ずっとshebangをシェバングって読んでて
最近シェバンと読むのだと知って天狗になってました
0262デフォルトの名無しさん
2006/03/24(金) 00:21:34POD 完備の PBP スタイルの綺麗な Perl と,やっつけ仕事の一行スクリプトの
両方を書けるやつとなら Perl で協同開発してもいいと思う
0263デフォルトの名無しさん
2006/03/24(金) 00:30:150264デフォルトの名無しさん
2006/03/24(金) 00:32:11setuidビットをセットするとenvだと動かなかった。
0265デフォルトの名無しさん
2006/03/24(金) 00:35:31PNGはピングと読むのが多くないか?
公式見解ではpingと同じ発音だそうだが。
0266デフォルトの名無しさん
2006/03/24(金) 00:43:51キンコン
0267デフォルトの名無しさん
2006/03/24(金) 01:15:31kwsk!!
0268デフォルトの名無しさん
2006/03/24(金) 01:16:14すみません。
0269デフォルトの名無しさん
2006/03/24(金) 01:25:23不具合が起こることがあるね。
0270デフォルトの名無しさん
2006/03/24(金) 01:27:08kwskって言われても書いたままだが。
Debianでperl-suidを入れて、setuidしたperlスクリプトを動かそうとしたのだが、
shebangがおかしいと言われて動かなかった。
まあ、セキュリティ上の配慮なんだろうと思うが。
0271デフォルトの名無しさん
2006/03/24(金) 01:38:260272デフォルトの名無しさん
2006/03/24(金) 02:42:01日本語のンって鼻音である事以外指定してないんだよな。
n でも m でも ng でもンになるし
逆に言えば、その3つのどれでも無い鼻音もンで表せる。
っつーか、スレ違いだな。
0273デフォルトの名無しさん
2006/03/24(金) 10:02:09>>270
ありがとお
0274デフォルトの名無しさん
2006/03/24(金) 10:45:47これは何をやっているの?
0275デフォルトの名無しさん
2006/03/24(金) 10:58:290276デフォルトの名無しさん
2006/03/24(金) 11:04:080277デフォルトの名無しさん
2006/03/24(金) 11:13:26有名なワザ。しかし普通の変数を埋め込むのに使うのははじめて見た...
0278デフォルトの名無しさん
2006/03/24(金) 11:42:52>変数じゃない式でも文字列に埋め込む
え、それどういうの?具体例挙げておしえてください。
0279デフォルトの名無しさん
2006/03/24(金) 12:27:10print "sub hogeの結果は";
print &hoge;
print "です。";
#ってのが
print <<EOF;
sub hogeの結果は@{[&hoge;]}です。
EOF
#で済ませられるって事?
0280デフォルトの名無しさん
2006/03/24(金) 12:47:500281デフォルトの名無しさん
2006/03/24(金) 13:34:050282デフォルトの名無しさん
2006/03/24(金) 13:37:11有名だったのか。知らなかった。
しかし、どういう時に使うんだ? リストの区切りを別に設定して
そのまま文字列に入れたいときとか? (区切り変えなくてもいいか)
でも全部定数ならそのまま書けばいいような…。
0283デフォルトの名無しさん
2006/03/24(金) 15:30:26を配布スクリプトに含んでいるのをけっこうみかけるけど、
これって本来デバッグ用途じゃないの?
パフォーマンス的にみたら、
配布時には当然けずるべきだと思うんだけど
みなさんはどうしてまつか?
0284デフォルトの名無しさん
2006/03/24(金) 16:00:32俺はそのまま。
でもパフォーマンスは大差ないのでは? 最初のコンパイルにちょっと
時間が掛かるだけで動いてしまえば変わらないと思うが。
0285デフォルトの名無しさん
2006/03/24(金) 16:18:56my @a = (1,2,3,4,5);
foreach(@a){
print $_;
sleep(1);
}
出力先が標準出力だと,5秒待ったあとに1〜5が同時にprintされてしまいました.
出力先を標準エラー出力に変えると思い通りの動作をしたのですが,標準出力では
このようなプログラムは書けないのでしょうか?
0286デフォルトの名無しさん
2006/03/24(金) 16:28:210287283
2006/03/24(金) 16:39:30れすさんくす
でもmod_perlとかfastcgiとか使っていないサーバで
たくさんアクセスされるcgiスクリプト置いてたりしたら
結構深刻なのかなと思って。
Javaのassertみたいにコンパイルオプションで
オンオフを切り替えられたらいいのに。
0288デフォルトの名無しさん
2006/03/24(金) 16:46:49> みなさんはどうしてまつか?
use strict;
↓
#use strict;
0290デフォルトの名無しさん
2006/03/24(金) 17:18:03CGIで耐えられる程度しかアクセスがないなら気にする事はないし、
mod_perlだのfastcgiだの使ってるならどうせ最初だけだから
気にする必要はない。いちいち外すのメンドイ。
0291デフォルトの名無しさん
2006/03/24(金) 17:33:39そもそも2ちゃんで「けずるべきだと思うんだけど」なんて情けない質問はしない。
0292デフォルトの名無しさん
2006/03/24(金) 18:19:58え!ちがうの!?
0293デフォルトの名無しさん
2006/03/24(金) 18:21:01本当に use strict; を付けなくても安全なプログラムが書けるようなスキルの奴は
ちゃんと use strict; を付けてる。
0294デフォルトの名無しさん
2006/03/24(金) 18:41:32当然いつでも書きっぱなし。
理論上実行速度は速くなりますが、それはどうでもいいかな。
0295デフォルトの名無しさん
2006/03/24(金) 18:44:36use strictで書けないがuse strictをコメントアウト出来る奴は
少しの知識と自分で努力するという気持ちを持っている。
本来はデフォでuse strictにして明示的にuse indulgeするべきだと思う。
0296デフォルトの名無しさん
2006/03/24(金) 18:56:56まあ、香港は英語では Hongkong と書くが g は読まない、というのと似ている。
0297デフォルトの名無しさん
2006/03/24(金) 19:03:07まあどっちの発音しても大体通じるからどっちでもいいんじゃね?
0298デフォルトの名無しさん
2006/03/24(金) 19:08:080299デフォルトの名無しさん
2006/03/24(金) 19:29:250300デフォルトの名無しさん
2006/03/24(金) 19:38:14いろいろぐぐったのですが、どうしても分かりませんでした。
すみませんが、hoge.exeにabcと123を送るサンプルコードを書いてもらえないでしょうか。
馬鹿と言われるのは承知ですがどうか。。。
0301デフォルトの名無しさん
2006/03/24(金) 19:40:36どういう状況で何がしたいんだおまいは?
0302デフォルトの名無しさん
2006/03/24(金) 19:44:52え?ということはuse strict;したら
逆に速度が上がるってこと?
どうしてそうなるの?
0303デフォルトの名無しさん
2006/03/24(金) 19:44:54use indulgeって何かと思ったらstrictの逆という事ね
>>300
それ「Perlのプログラムに」じゃなくて「Perlから他のプログラムに」だから( ´д`;)
それなら@ARGVは違う。
色々方法はあるけれど簡単にやるならsystemの第二引数以降にでもつければOK。
system 'hoge.exe', 'abc', '123';
ところでActivePerl5.8付属のPPM3.4になってなんか使い勝手変わった?
どうもモジュール名で検索するとヒット率が落ちた気がする。
ディストリ名で検索すれば出てくるんだけどさ…今までもそうだったっけ?
0304デフォルトの名無しさん
2006/03/24(金) 20:05:34それだけなら
print "@ARGV¥n";
だけで分かるはずだけど…。
0305デフォルトの名無しさん
2006/03/24(金) 22:12:12ご、ごめんなさい。Perlのプログラムにパラメーターを送るです。。。。。
首を吊るべき間違いですが、どうか。。。
0306デフォルトの名無しさん
2006/03/24(金) 23:32:240307デフォルトの名無しさん
2006/03/24(金) 23:58:25ん?だから system 'hoge.exe', 'abc', '123'; じゃなくて?
「Perlのプログラムにパラメーターを送る」?意味わからんがな。
0308デフォルトの名無しさん
2006/03/25(土) 01:31:04日本語でおk
0309デフォルトの名無しさん
2006/03/25(土) 01:31:51KingKongもキンコンと読みます
0310デフォルトの名無しさん
2006/03/25(土) 02:31:03他のプログラムhoge.exeからPerlのプログラムにパラメーターを送って、
Perlのプログラムでhoge.plでパラメーターを受け取る方法です。。。
あるいはファイル名を指定して実行でperl c:\hoge.pl abc 123でパラメーターを受け取るプログラムを
作りたいのです。
>>308
ジュワッジュワワジュワジュワッ?ジュワワ。m(._.)m
0311デフォルトの名無しさん
2006/03/25(土) 02:47:15perlにパラメータ送る方法は>>303に書いてあるだろ。無視すんな。
hoge.exeってのはperlで書かれたプログラムなのか?
0312デフォルトの名無しさん
2006/03/25(土) 02:50:35#!/usr/bin/perl
print "argv is $ARGV[0],$ARGV[1]";
結果
argv is abc,123
これでも分からなければ父さんお手上げ
0313デフォルトの名無しさん
2006/03/25(土) 04:00:03'表と'いう文字が、原因だと思いますが、
このディレクトリ名をかえるしかないでしょうか?
いい方法があったら教えてください。
# 末尾に'表'というディレクトリ名があるか判定する。
mkdir("ペケペケ表\");
if (-d "ペケペケ表\") {
print "ある\n"; # 本来はこっち
} else {
print "ない\n"; # でもこっちがよばれる
}
OS : Windows2000 SP4
Perl : v5.8.8 built for MSWin32-x86-multi-thread
0314デフォルトの名無しさん
2006/03/25(土) 04:10:110315デフォルトの名無しさん
2006/03/25(土) 04:31:360316デフォルトの名無しさん
2006/03/25(土) 04:38:26if(-d "\x83\x79\x83\x50\x83\x79\x83\x50\x95\x5c"){ print 'Success'; }else{ print 'Error'; }
でもエラーになるのはどうしてwhyなぜ
0317デフォルトの名無しさん
2006/03/25(土) 05:32:180318デフォルトの名無しさん
2006/03/25(土) 06:01:48ありがとうございます。
存在チェックはWin32API(GetFileAttributes) をつかって判定することにしました。
ディレクトリ内のファイル一覧取得は、
DIRコマンドをパイプで取得することにしました。
0319デフォルトの名無しさん
2006/03/25(土) 07:52:50これ欲しいな
0320デフォルトの名無しさん
2006/03/25(土) 08:56:560321デフォルトの名無しさん
2006/03/25(土) 10:40:130322デフォルトの名無しさん
2006/03/25(土) 12:21:18審査ザルだから学生のうちにとっておくことをすすめる
0323デフォルトの名無しさん
2006/03/25(土) 13:29:41つ JCB J-1カード
0324デフォルトの名無しさん
2006/03/25(土) 15:38:100325デフォルトの名無しさん
2006/03/25(土) 16:11:010326デフォルトの名無しさん
2006/03/25(土) 18:08:190327デフォルトの名無しさん
2006/03/25(土) 18:50:11既に解決しているようだけど、winなら
-e join('/',$dirname,'nul');
が使える気がする。
DOS時代の記憶なので、2000だと駄目かもしれん。
mkdir "ペケペケ表\";
print "ある\n" if -d "ペケペケ表\" || -e "ペケペケ表\/NUL";
0328デフォルトの名無しさん
2006/03/25(土) 22:07:130329デフォルトの名無しさん
2006/03/26(日) 01:03:39.bat ファイルって、LFだとダメだったっけ?
0330デフォルトの名無しさん
2006/03/26(日) 01:15:35うちのmeさんではダメですた……
0331デフォルトの名無しさん
2006/03/26(日) 07:06:37そこで Perl ですよ!
……あれ?
0332デフォルトの名無しさん
2006/03/26(日) 07:43:360333デフォルトの名無しさん
2006/03/26(日) 19:54:50CSVを分解するのにsplitを利用したのですが、連続するデリミタやスペースを
一纏めにデリミタ扱いするにはどうするのでしょう?
この例だと、タブ文字とカンマが連続するからカラ配列が途中に入ってしまって。
初歩的な内容ですよね?
$readline ="16\t,130118\t,05,12,13,29,34,35,30,";
#$readline ="16,130118,05,12,13,29,34,35,30,";
open(DST ,">./test.txt" ) or die "file open error DST : $!\n";
@readarray = split(/\s|,/ ,$readline);
# 第n回。
$top = shift(@readarray);
# 日付。
$day = shift(@readarray);
# 末尾。
$ende = pop(@readarray);
for($i =0; $i < @readarray; $i++ )
{
# body.
print DST " $i:$readarray[$i]";
}
print DST "\n";
exit;
0334デフォルトの名無しさん
2006/03/26(日) 20:23:37つ \s*
0335デフォルトの名無しさん
2006/03/26(日) 21:11:17- @readarray = split(/\s|,/ ,$readline);
+ @readarray = split(/\s*,\s*/ ,$readline);
これでどうでしょ?
0336デフォルトの名無しさん
2006/03/26(日) 21:21:37環境 perl-5.8.5 mod_perl-1.99_16-3 httpd-2.0.53 fedora3
use lib 'ore/lib';
とした場合、Apacheプロセスに読み込まれる初回起動時は正常にlibが読み込まれ
@INCにore/libが入ります。また%INCにlib.pmがロードされます。
2度目のアクセス時にはmod_perl時にはBEGINは初回にしか実行されずlib.pmは既にロード
されているので実行されずに@INCにore/libは追加されません。
初めに全てのモジュールを読み込むのであればこの挙動で問題ないのですが
処理によって動的にモジュールを読む場合、不具合が出てきます。
$INC{'lib.pm'}を消して強制的に読み直す、Setenv PERL5LIBを設定する、use libではなく
unshift @INC, 'ore/lib'とする等、いくつか解決法はありますがしっくりきません。
元々こういった用途ではuse libを使うのは好ましく無いのでしょうか。
0337デフォルトの名無しさん
2006/03/26(日) 22:05:14>>335
うわ、解決しました。
ありがとうございます!
でも、理解出来ていない漏れ┐(´∀`)┌
もっと場数経験します。
0338デフォルトの名無しさん
2006/03/26(日) 22:06:03http://pc8.2ch.net/test/read.cgi/prog/1138882234/
0339デフォルトの名無しさん
2006/03/26(日) 22:13:40・pugs が使える
・エディタ SciTE が使える
・GDライブラリがはじめから入っている
程度でしょうか?
ActivePerlから乗り換えるメリットはあるでしょうか?
0340デフォルトの名無しさん
2006/03/26(日) 22:40:32素直にText::CVSとか使えば?
>>336
mod_perl使うならstartup.plとかでuseしておきなよ。
libもそうだけど、必要なモジュールはできればstartup.plで読み込んでおいたほうがメモリの節約になるでよ。
>>339
個人的にはppmを使いたいのでActivePerl使ってる。
Win32でコンパイル環境あればCPANでいいんだけどね……。
0341デフォルトの名無しさん
2006/03/26(日) 22:50:45Text::CVS
Text::CVS
Text::CVS
Text::CVS
0342333
2006/03/26(日) 23:42:56この通り正規表現も満足に扱えていない初心者ですが、
扱いは容易なのでしょうか?
ググってみたら類似情報釣れましたけど、まだリファレンスも分かっておりませんで。
主にラクダ本2版で学習していますが、早く3版2冊欲しいなあ。
0343デフォルトの名無しさん
2006/03/27(月) 01:13:27> この通り正規表現も満足に扱えていない初心者ですが、
> 扱いは容易なのでしょうか?
> ググってみたら類似情報釣れましたけど、まだリファレンスも分かっておりませんで。
1,2,"white gyouza", 3
のようなのを処理する必要があるのなら使った方がいいね。
> 主にラクダ本2版で学習していますが、早く3版2冊欲しいなあ。
第2版があるなら、第3版いらないじゃん。
0344デフォルトの名無しさん
2006/03/27(月) 01:22:550345デフォルトの名無しさん
2006/03/27(月) 02:13:23ここで学んでいるのですが"未定義"という表現がよくわかりません
Perlにおいての未定義とはどういうことですか?
0346デフォルトの名無しさん
2006/03/27(月) 02:52:32$sample = 170;
@data = <<DATA_END;
43<>48
90<>110
160<>199
DATA_END
$ans = "範囲外です";
foreach (@data) {
($a_1,$a_2) = split(/<>/,$_);
if (($sample >= $a_1)&&($sample <= $a_2)){
$ans = "範囲内です";
}
}
print $ans # この場合は2行目の範囲内なので"範囲内です"と表示したいのですが・・・
上記のスクリプトは
@dataの各行毎に<>で挟まれた値の範囲に$sample値が存在するかどうかを判定する目的で
上記のようなプログラムを書いてみたのですが@dataの一行目しか参照してくれません
よろしければどなたかおかしな所と正しい書き方を指摘していただけませんでしょうか
宜しくお願いいたします。目標は@dataと$sampleの範囲を下記のようにを2次元的なものに広げて
$sample = '100_48'
@data = <<DATA_END;
43<>48/73<>115
90<>110/45<>50
160<>199/0<>255
DATA_END
(この場合$sampleは@dataの2行目に該当するように)
のようなデータの処理を行いたいと思います。
0347デフォルトの名無しさん
2006/03/27(月) 03:09:27> よろしければどなたかおかしな所と正しい書き方を指摘していただけませんでしょうか
おかしな所: まったくデバッグしていない所
0348デフォルトの名無しさん
2006/03/27(月) 03:11:44データの読み込みで、
必要になったときのみファイルから読み込んで実際にデータを扱う、
ということをしたいのですが、どういう形で実現するのがよいでしょうか。
データを利用する側から、いちいちデータを読み込むタイミングを指定してやるのも
変ですし・・・・。
微妙にperlから質問がずれていますが、
分かる人いたらお答えお願いできませんか?
0349デフォルトの名無しさん
2006/03/27(月) 03:22:04変数とはつまりデータの入れ物なんだけど、そこに何も入っていない状態、それが未定義。
もしCやJavaをやっていればNULLポインタに近いものといえばわかってもらえるだろうか…
>>346
配列に改行の入った文字列を入れようとしても自動で行ごとには分かれない。
多分<>をみて出来ると思っちゃったんだろうけど、これはコンテキストによって
動作が変わるように作られてるから特別だと思ったほうが良い。
逆に言えば<>でファイル等から読み込んでやろうとすればちゃんと動くはずだよ。
@data = split /\n/, <<DATA_END;
43<>48
90<>110
160<>199
DATA_END
>>348
必要になったときに読み込めばいいんじゃないかな:-p
もっとどういう物を作っているかとか構造だとか
インターフェイスとか詳しく書いてもらえないと解らん。
もしくはエスパーを待て。
0350デフォルトの名無しさん
2006/03/27(月) 04:51:04宣言の基本なんだけど。
そりゃ明示的にstrictしたらPerlも断定して処理する。
プログラマも断定して読めるから読むのが速くなるのと同じ。
変なコト起きれば実行もせずコンパイルフェーズでエラー吐いて終わるだけ。
>>345
未定義は数値か文字かリファレンスか分からない状態、またはそれ以前の値。
ブールで偽になる値だけど、数値としての偽でもなく、文字としての偽でもない。
何も無いの偽って感じ。
例えば、一度も使ってない変数名だけ書いたらこの状態になるし、
関数とかから未定義値が返ってくることもある。
サブルーチンなら return(); って書いたら未定義値が返る。
変数を数値型や文字型にフォーマットするには
$hoge = 0;
$hoge = "";
とか書いておく。(これで分かりやすいし-wなどの警告も出なくなる)
関数などの戻り値が未定義がどうか知りたいなら
definedを使う。
>>346
ちゃんと読んでないから知らんけど
@data = (
'43<>48',
'90<>110',
'160<>199',
);
こうじゃないんだろうか。
配列の中身くらい出力で確認し(ry
>>348
'ファイル読み込み' if(必要で真);
0352デフォルトの名無しさん
2006/03/27(月) 13:34:26「未定義」という表現は、確かに分り難い。
見た感じ「未定義値」の事だと思うので、未定義値について。
未定義値は「未定義である事を表す値」で、数値演算分野のNaN(非数)と似た概念。
未定義値には専用の(内部的な)型がある。
つまり、Perlの未定義値は、値であると同時に(未定義型という)型でもある。
Perlの型は、必要に応じて文字列,数値,論理値に自動的に変換されるが、
「未定義型」は空文字列,0,偽に変換される。
全ての変数は初期値として「未定義(型|値)」を持つ。
そして、(明示的な|暗黙の)代入によって他の型(値)になる。
また、(明示的な|暗黙の)代入によって、「未定義(型|値)」にする事もできる。
ま、「未定義という特別な値(型,状態)がある」程度の感覚で構わないのでは?
0353デフォルトの名無しさん
2006/03/27(月) 14:30:33print 1;
というようなスクリプトを作って、
.plファイルをダブルクリックすると、
コマンドプロンプトが開いて、
一瞬のうちに閉じてしまいますが、
これを閉じないようにするにはどうすればよいでしょうか?
0354デフォルトの名無しさん
2006/03/27(月) 14:56:210355デフォルトの名無しさん
2006/03/27(月) 15:53:530356353
2006/03/27(月) 16:33:17ありがとう。なるほど、確かにこれならできますね。
ただ、ちょっとしっくりきませんが。
>>355
!!!!!うまくいった。ありがとう。
でもCHECEなんて初めて見たよ。
日本のgoogleで「perl chece」で検索してもヒットしないよ。
らくだ本に載っていますか?
よかったらちょこっとだけ説明してくれませんか?
0357353
2006/03/27(月) 16:37:04らくだ本みても索引に載っていなかった。
一体何なのCHECEって?
0358デフォルトの名無しさん
2006/03/27(月) 17:45:15$ cat x
#!/usr/bin/perl
print "aaa\n";
CHECE { `pause` }
$ perl x
aaa
Can't locate object method "CHECE" via package "pause" (perhaps you forgot to load "pause"?) at x line 3.
$
Windows 用 Perl だけの機能かもね。
0359353
2006/03/27(月) 18:15:59grepかけてみたけどヒットせず、
海外でぐぐってもそれらしいページにヒットせず
なんなんだ〜
0360デフォルトの名無しさん
2006/03/27(月) 18:30:07たんに`pause`だけが聞いてるような希ガス
0361デフォルトの名無しさん
2006/03/27(月) 18:32:090362デフォルトの名無しさん
2006/03/27(月) 18:32:460363353
2006/03/27(月) 18:45:19自分のあほさ加減にいやけがさしました。
`pause`ってバッククォータだったのですね。
'(シングルクォータ)とみまちがえてました。
pauseはDOSのコマンドだったのですね。
お騒がせしました。
バカな僕を許して下さい。すんません。
0364デフォルトの名無しさん
2006/03/27(月) 18:47:37CHECE { }
ってのは一体何だったのか、
これがCHECKのtypoだとしたら、
なぜわざわざCHECKブロックでpauseする必要があるのか
わかりませんが。
print 1;
`pause`;
だけで期待の動作になるのですが、、、
0365デフォルトの名無しさん
2006/03/27(月) 18:49:080366デフォルトの名無しさん
2006/03/27(月) 18:49:55読んだ方おられますか?
どうでしたか?
0367デフォルトの名無しさん
2006/03/27(月) 18:53:470368デフォルトの名無しさん
2006/03/27(月) 19:07:410369デフォルトの名無しさん
2006/03/27(月) 19:20:19俺は.plの関連付けをPerl.exeへの中継batにして、その中で
pauseするようにしてる。
0370デフォルトの名無しさん
2006/03/27(月) 19:54:31それどうやるの?
perl
pause
っていうバッチファイルつくって関連付けしても
当然うまくいかない。
実行したperlスクリプト名がバッチファイルから
わかればいいんだけど、やりかたがわからない
0371酩酊 ◆TWARamEjuA
NGNG0372デフォルトの名無しさん
NGNGperl %1
echo.
pause
これでどうよ
0373371
2006/03/27(月) 20:11:32ごめんおれが悪かった馬鹿だった
>>372
できた
%1でショートカット元のファイル名が
取得できるのね、というか
バッチファイルへの第一引数が取得できるのね
ありがとう!!
0374デフォルトの名無しさん
2006/03/27(月) 20:41:210375デフォルトの名無しさん
2006/03/27(月) 21:33:45$SIG{'INT'} = 's';
while (1) {A:}
sub s {
print "トラップしました";
goto A:
}
実行したスクリプトに対してC-cを発行して、そのSIGTERMを
受けても終了しないようなものを作りたいのですが
上記のスクリプトは実行してC-cを押すと
Can't find label A
となってしまいます
どこがまずいのでしょうか?
あとgotoはできるだけ使うなとの情報があったのですが
gotoを使わずにINTから抜ける方法ってないでしょうか?
sub s {
print "トラップしました";
}
だけにすると何も受け付けなくなります
0376デフォルトの名無しさん
2006/03/27(月) 21:55:16「トラップしました」を表示する必要はないんだよな?
$SIG{INT} = 'IGNORE';
とやったらどうなる?
> sub s {
> print "トラップしました";
> }
> だけにすると何も受け付けなくなります
漏れの環境(perl5.8.7のcygwinおよびperl5.8.5のLinux2.6(CentOS))では再現しないな。
ちゃんと元のループに戻ってくる。環境は?
テストに使用したコード:
perl -e '$SIG{INT} = \&t; while(1){print scalar <>}; sub t{print "Traped!\n"}'
0378デフォルトの名無しさん
2006/03/27(月) 22:37:47> gotoに関してのみの質問に変更させてください
gotoを消せばよい。
0379デフォルトの名無しさん
2006/03/27(月) 23:51:06Perl 5.8.7 の perlwin32.pod には
Signal handling may not behave as on Unix platforms (where it
doesn't exactly "behave", either :). For instance, calling C<die()>
or C<exit()> from signal handlers will cause an exception, since most
implementations of C<signal()> on Win32 are severely crippled.
Thus, signals may work only for simple things like setting a flag
variable in the handler. Using signals under this port should
currently be considered unsupported.
と書かれている。
使って駄目だったのなら、gotoも(win32だと)ハンドラ内では使えない機能なのだろう。
0380デフォルトの名無しさん
2006/03/28(火) 01:05:20発売と同時にゲットした俺がきましたよ.
現代的内容つーか別の本になってた.著者もちがうし.
Tk とかもうありません.CPAN ネタが増えました.
XS はちょろっとでてくるけど Inline のほうが比重が多いです.
0381デフォルトの名無しさん
2006/03/28(火) 02:22:50ウィンドウズでperlを使っています。
カレントディレクトリから一つしたのフォルダに
テキストファイルを出力しようとして
open(OUT, ">card/$filename.txt");
#$filenameにはファイルの名前が入っています
と書いて、一つ下のフォルダ(card)にテキスト
ファイルができることはできるのですが$filename
が展開されず、消えてしまって.txtというファイルが
出力されてしまいます。
open(OUT, ">card\\$filename.txt");とか
open(OUT, ">card\$filename.txt");とか
open(OUT, ">card\\.\\$filename.txt");とか
open(OUT, ">card/"."$filename".".txt");とか
いろいろやってみたのですがうまくいきません。
自分では/と$filenameが重なるのが原因で思った
通りに動かないと思うのですが、解決できませんでした。
どうすれば一つ下のフォルダに変数が展開された状態
でテキストファイルを作ることができるでしょうか?
0382デフォルトの名無しさん
2006/03/28(火) 02:28:07> open(OUT, ">card/$filename.txt");
に問題はないよ。
本当にちゃんと$filenameにファイル名が入っているのか確認した?
0383デフォルトの名無しさん
2006/03/28(火) 03:02:25あ、ありがとうございます!解決しました!
本当に恥ずかしい限りです。
my関数をよくわかってないせいで
sub xxx{
while(1){
my($filename)="aaa";
last;
}
open(OUT, ">card/$filename.txt");
}
というように無限ループの中でmyを使って初期化ていたのですが
これが原因でした。my($filename)="aaa";を無限ループの前か
後ろに書いたらうまくいきました。
冷静に考えれば.txtというファイルできたということは$filenameがundefの状態で
展開されたということですよね、本当にありがとうございました!
0384デフォルトの名無しさん
2006/03/28(火) 03:12:05この辺りを読んでおくことをお勧めする。
myがどういうものなのか解りやすく解説されてる。
ttp://www.graco.c.u-tokyo.ac.jp/~nishi/programming/perl/my.html
ttp://www.futomi.com/lecture/local/index.html
0385デフォルトの名無しさん
2006/03/28(火) 03:26:53すみませんわざわざ!読んでだんだん精進していきます。
0386デフォルトの名無しさん
2006/03/28(火) 08:29:19二進数として識別する簡単な方法はないでしょうか?
0387デフォルトの名無しさん
2006/03/28(火) 09:40:28http://mikeneko.creator.club.ne.jp/~lab/perl/numerical_transform/#h3
0388デフォルトの名無しさん
2006/03/28(火) 09:41:03辛抱たまらず買うことにしました
ありがとう
0389デフォルトの名無しさん
2006/03/28(火) 10:21:33とアパッチエラーなのかな?がでまくっています。
これメモリ異常っぽいんですが、どういうことやってると起きやすいですか?
perlだからメモリを確保・開放なんてやってないのにな…
0390デフォルトの名無しさん
2006/03/28(火) 10:50:47APTの3番とRPPの5番あたりがよく問題を起こすらしい。
0391デフォルトの名無しさん
2006/03/28(火) 11:43:32"_ABV_DEF_GHI"と変換する簡単な方法はありますか?
0392デフォルトの名無しさん
2006/03/28(火) 11:46:37$a = "_ABV_DEF_GH";
0393デフォルトの名無しさん
2006/03/28(火) 11:56:03$str =~ s/B/V/g;
$str =~ s/I//g;
>>392
変数に $a や $b を使うなと習ったろうがこのバカチンが。
0394391
2006/03/28(火) 11:59:47でも、
$str =~ s/([A-Z][a-z]+)/"_".uc($1)/ge;
で一発でした。ありがとうございます。
0395デフォルトの名無しさん
2006/03/28(火) 12:00:470396デフォルトの名無しさん
2006/03/28(火) 12:06:50print "ち$sこ\n";
0397デフォルトの名無しさん
2006/03/28(火) 15:51:05Error: Runtime exception
てでますた。これナニ?
0398デフォルトの名無しさん
2006/03/28(火) 16:01:190399デフォルトの名無しさん
2006/03/28(火) 16:19:19飛躍的に多くなったらこうなりますた
0400デフォルトの名無しさん
2006/03/28(火) 16:39:290401デフォルトの名無しさん
2006/03/28(火) 16:49:020402デフォルトの名無しさん
2006/03/28(火) 16:53:37「これナニ?」って聞かれたら、実行時エラーです、としか答えようがないな。
他に質問があれば何でも聞いてくれたまい
0403デフォルトの名無しさん
2006/03/28(火) 17:04:270404デフォルトの名無しさん
2006/03/28(火) 17:05:52error = 誤り
runtime = 実行時
exception = 例外
0405デフォルトの名無しさん
2006/03/28(火) 17:07:180406デフォルトの名無しさん
2006/03/28(火) 17:15:03お前優しすぎ
0407デフォルトの名無しさん
2006/03/28(火) 17:18:04ナゾナゾですか?! よーし負けねーぞー
0408デフォルトの名無しさん
2006/03/28(火) 17:20:37http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%22Error%3A+Runtime+exception%22+jperl
とりあえずこのスレの過去ログに同じ質問があると教えてくれたので貼っとく。
http://pc5.2ch.net/tech/kako/1060/10606/1060689008.html#R65
0409デフォルトの名無しさん
2006/03/28(火) 17:36:290410デフォルトの名無しさん
2006/03/28(火) 18:51:53fool = 馬鹿
0411デフォルトの名無しさん
2006/03/28(火) 18:53:070412デフォルトの名無しさん
2006/03/28(火) 18:55:26◎ foolish
0413デフォルトの名無しさん
2006/03/29(水) 11:33:11どうしてですか?
sortのときに使う$aや$bは局所化されてる
から問題ないと思うんだけど
他に理由があるの?
変数の中身が判別しにくいという視認性
の問題以外に。
0414デフォルトの名無しさん
2006/03/29(水) 12:27:190415デフォルトの名無しさん
2006/03/29(水) 12:28:35そんな変数名をつける奴はプログラミングはやめとけ。
0416デフォルトの名無しさん
2006/03/29(水) 12:31:080417デフォルトの名無しさん
2006/03/29(水) 12:31:540418デフォルトの名無しさん
2006/03/29(水) 12:37:40より
「
そしてこれは、open呼び出しの必要を削除した、そのコードの変形です:
my $text = do { local( @ARGV, $/ ) = $file ; <> } ;
$fileの中のファイル名はローカル化された@ARGVに設定され、
nullのファイル・ハンドルは@ARGVの中のファイルからデータを読み込むために使われます。
スカラーに代入する代わりに、上記の丸呑み全てを配列に代入することができます。
そしてそれはファイルを取得しますが、($/が行の終わりの印として使われて)行に分割されます。
」
my $text = do { local( @ARGV, $/ ) = $file ; <> }
っていう便利なコードで、openも使わずに$fileの内容を一気読みで丸呑みして$text
に代入できるというのはわかったのですが、
そのあとの
「スカラーに代入する代わりに、上記の丸呑み全てを配列に代入することができます。」
「行に分割されます」
というのがわからない。
上記で取得した$textに対して
@list = $text;
としたって
$textの内容が$list[0]に代入されるだけで行には分割されない
$textの内容が
a
b
c
だったとしたら、$list[0]=a,$list[1]=b,$list[2]=cとはならない。
どうして?
0419デフォルトの名無しさん
2006/03/29(水) 13:37:54# @fileで指定した複数のファイルがファイル毎に@textの要素として読まれる
とか
@text = do { local(@ARGV) = $file; <> };
# $fileが行ごとに@textに読まれる
のような使い方を言ってるんだと思うが、書いた奴に聞かないと
よくわからんね。
0420デフォルトの名無しさん
2006/03/29(水) 13:51:26> 「スカラーに代入する代わりに、上記の丸呑み全てを配列に代入することができます。」
> 「行に分割されます」
>
> というのがわからない。
分からないなら原文に当たれ。
酷い訳だな。
0421デフォルトの名無しさん
2006/03/29(水) 14:43:06原文あたったけどよくわかんなかったので訳を責めるのはかわいそう。
Instead of assigning to a scalar, all the above slurps can assign to an
array and it will get the file but split into lines (using C<$/> as the
end of line marker).
ttp://search.cpan.org/src/URI/File-Slurp-9999.12/extras/slurp_article.pod
0423デフォルトの名無しさん
2006/03/29(水) 15:24:27いや、ひどい訳だろう。
0424デフォルトの名無しさん
2006/03/30(木) 00:22:000425どうぞ叩いてください
2006/03/30(木) 03:17:17メッセージ届いたときの「カッコー!」って音が大好き。
携帯メールの着信音もあの音にしちゃったよw
0426デフォルトの名無しさん
2006/03/30(木) 03:26:18> ICOについて語りませんか?
ゲーム板行け!!
0427デフォルトの名無しさん
2006/03/30(木) 05:21:38それは流石に古くないか?
0428デフォルトの名無しさん
2006/03/30(木) 19:00:350429デフォルトの名無しさん
2006/03/30(木) 21:36:54ORA-01000が出るんですが、原因がわかりません。
常に出るわけではなく、なにをきっかけにしているのか
ずーっと悩んでいます。
Class::DBIを使った場合、カーソルが開く(もしくは閉じる)タイミングというのは
いつになるんでしょうか?
なにかヒントのようなものでもよいので
お願いします。
0430デフォルトの名無しさん
2006/03/30(木) 22:55:190431デフォルトの名無しさん
2006/03/31(金) 02:01:300432デフォルトの名無しさん
2006/03/31(金) 08:00:19IPAもアイパなんだろうか
0433デフォルトの名無しさん
2006/03/31(金) 12:07:070434デフォルトの名無しさん
2006/03/31(金) 13:26:510435デフォルトの名無しさん
2006/03/31(金) 13:59:220436デフォルトの名無しさん
2006/03/31(金) 16:33:28Wikipediaみてみそ
俺も驚いた
0437デフォルトの名無しさん
2006/03/31(金) 17:41:54くわしくplz
0438デフォルトの名無しさん
2006/03/31(金) 17:48:20写真みて、へぇ、女の人だったんだとおもたよ。
これからもよろしくね、鳳たん。
0439デフォルトの名無しさん
2006/03/31(金) 22:59:48blogの方には臍出し写真も… (;´Д`)ハァハァ
0440デフォルトの名無しさん
2006/03/31(金) 23:02:07呼ばねーよw
0441デフォルトの名無しさん
2006/03/32(土) 00:27:08> 昔はCDライティングを「磯焼き」と呼んだものだが
10年くらい前、そう呼んでたね。
0442デフォルトの名無しさん
2006/03/32(土) 02:10:49マルチ乙
0443デフォルトの名無しさん
2006/03/32(土) 19:01:53.netapiは使えないのでしょうか?
0444デフォルトの名無しさん
2006/03/32(土) 19:10:19オライリーをリストラされたってのは本当?
0445デフォルトの名無しさん
2006/03/32(土) 20:36:54生活費を稼ぐべき時間をPerlの開発に充当するんだったらね。
0446デフォルトの名無しさん
2006/03/32(土) 21:58:090447デフォルトの名無しさん
2006/03/32(土) 22:07:21俺のような認識でこの質問が出たのかも知れんけど。
0448デフォルトの名無しさん
2006/03/32(土) 22:18:030449デフォルトの名無しさん
2006/03/32(土) 23:07:20異常なんですけどコードに問題ありますか?
DOS窓開いてperl timer.plで起動すると問題ないんですけどアイコンの
ダブルクリックで起動してDOS窓からフォーカスが外れると
CPU使用率が100%になるんですけど。
$| = 1;
$time = time + 3 * 60;
while (1) {
if (time <= $time) {
printf "%05d\r", $time - time;
} else {
print "\a";
}
sleep 1;
}
0450デフォルトの名無しさん
2006/03/32(土) 23:58:50YAPCいってきたなら、ちょっとくらい感想を述べてくれもていいじゃない
誰のどんな発表がすごかった?
(個人的にはDANがどうしてあんなにえらそうなのか知りたいが)
0451デフォルトの名無しさん
2006/04/02(日) 00:05:44すいません。笑わせてもらいました。
0452デフォルトの名無しさん
2006/04/02(日) 00:09:01ちょw
ワロタw
0453デフォルトの名無しさん
2006/04/02(日) 00:24:03ちょw、それ永久ループw
0454デフォルトの名無しさん
2006/04/02(日) 01:43:50時間がきたら1秒に一回ビープ鳴らすんだよね?
sleepしてるし、なんで100%になるんだろう。
0455デフォルトの名無しさん
2006/04/02(日) 05:14:39448じゃないけどDamian Conwayにサインもらった俺が来ましたよ。
> 誰のどんな発表がすごかった?
Damian に 「sensei」と呼ばれた高橋会長の発表といったら怒る?
まじめに言うと、すごいというのとはちょっと違うけど、Damianの
初日の発表は大学の講義でも受けているようで印象に残った。
スライドはまだのようだけど、MP3の録音データは公開されてるから
よかったら聞いてみそ。
まあPerl Best Practice を買っていながらちゃんと読んでいなかったせいも
あるんだろうけど。
あとは Audrey Tangの発表といいたいところだけど、基本的には
ほかのカンファレンスなんかで発表したのを手直しして使っていた
ようで、彼女のblog追いかけていれば見覚えがあるようなものだった。
> (個人的にはDANがどうしてあんなにえらそうなのか知りたいが)
まあそれはねえ。
0456デフォルトの名無しさん
2006/04/02(日) 06:36:47どんな思想を持っていようと金が必要なことには変わりない。
0457デフォルトの名無しさん
2006/04/02(日) 07:15:36うちの環境だと100%にならないな
0458デフォルトの名無しさん
2006/04/02(日) 09:43:08もう少しコードを細かく切って、
どこが原因か調べてみたら?
コード的にはおかしくない気がするから、449 の環境の問題なのかも。
0459デフォルトの名無しさん
2006/04/02(日) 16:17:04どんなやつかと思って検索してみたら・・・・・・
トランスジェンダーしちゃった人なのね・・・
なるほど、これは確かに、ねたになるというか、
強烈というか、いやね、写真みたんですよね。彼女のblogの
いやね、反則だろ、おいと。
0460デフォルトの名無しさん
2006/04/02(日) 16:32:42実行はしてないけど…。
俺は昔、win98で \a を使った瞬間落ちたことがある。
それ以来winで \a は使ってない。
たぶん永久ループは関係ないと思う。
0461デフォルトの名無しさん
2006/04/02(日) 16:37:40> WindowsXPでActivePerl5.8.8.816に上げたら俺様のスペシャルラーメンタイマーが
う〜ん、むかしWin95 + Perlで、やっぱり「フォーカス外れると」100%で難儀した記憶が
あるようなないような……
0462デフォルトの名無しさん
2006/04/02(日) 18:00:40それ気持ちよさそうだな
0463449
2006/04/02(日) 18:21:47インストールしなおしたり環境変えたりいろいろやってみたんですが
原因わからず、マニュアルのperlfuncのリンクが変になっていたこともあり
5.8.7にして解決しました。ありがとうございました。
インストーラーなんだから俺様のナウでヤングなスピリッツにオプティマイズした
コンピューターにあわせろってんだよ>ラリー
0464デフォルトの名無しさん
2006/04/02(日) 18:52:250465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
2006/04/02(日) 19:00:420467デフォルトの名無しさん
2006/04/02(日) 19:42:570468デフォルトの名無しさん
2006/04/02(日) 20:54:11「ななめ」と書いて変換すると「\」になるw
0469デフォルトの名無しさん
2006/04/02(日) 21:07:56例えばCですとcharは1バイトと規定されてますが、Perlはどうなのでしょう
0470デフォルトの名無しさん
2006/04/02(日) 21:16:130471デフォルトの名無しさん
2006/04/02(日) 21:18:37デフォルトでは数値は倍精度浮動小数点型
(これはperlの内部的にはNVと呼ばれる)の表せる精度まで。
5.8ではuse bigint;
とすると多倍長整数を使用するようになって上限は無い、はず。
5.6でもプラグマが無いだけでMath::BigIntを使えば出来る。
参考: perlguts
0472デフォルトの名無しさん
2006/04/02(日) 21:19:13数字の場合はどうでしょうか
0473デフォルトの名無しさん
2006/04/02(日) 21:20:41リロードしろよ俺orz
参考になりましたありがとうございます
0474デフォルトの名無しさん
2006/04/02(日) 21:29:34> > (個人的にはDANがどうしてあんなにえらそうなのか知りたいが)
> まあそれはねえ。
くわしく
0475429
2006/04/02(日) 21:30:10じゃあどこに質問するのが
一番よいのでしょうか?
0476デフォルトの名無しさん
2006/04/02(日) 22:17:34do{ .... }while(1);
この時 ....の部分で last if(条件);としdo-whileから抜けようとしますとエラーが出てしまいます。
ただし普通のwhile(1){ .... }ですと問題がないようです
これは仕様ですか?
Perlのバージョンは確か5.8.8〜です
0477デフォルトの名無しさん
2006/04/02(日) 22:29:37仕様です。ラベルつきブロックで囲んで対処
ttp://www.kt.rim.or.jp/~kbk/perl5.005/perlsyn.html#Simple_statements
0478デフォルトの名無しさん
2006/04/02(日) 22:47:24doブロックがwhileブロックの中にあると解釈されるからだろうね
わざわざブロックの末尾でwhile(1)使うより、redo使ったほうが自然じゃない?
0479デフォルトの名無しさん
2006/04/02(日) 22:48:290480デフォルトの名無しさん
2006/04/02(日) 23:09:56@INCから/\Q.pm\E$/なファイルを漁ればよろし。
このモジュールがやってくれる模様。
ttp://search.cpan.org/~zefram/Module-List-0.000/lib/Module/List.pm
>>475
マルチというのは何所に質問するかが問題じゃなくて
複数箇所に同じ質問をすることなんだが…
でも、漏れはマルチポスト先見てない…他に何所に質問したのよ一体
>>442
マルチを見つけたならもう一箇所のURLも書いていただけるとありがたい。
本当か判断しかねるじゃないか…
0481デフォルトの名無しさん
2006/04/02(日) 23:15:32my $img = Image::Magick->new(
size=>'128x128',
colorspace=>'RGB',
depth=>'8',
);
$img->Read('fileName.raw');
$img->Write('fileName.jpg');
こんな感じでやると420エラーが出てしまいます。
コマンドのconvertで同様に行なうと変換出来ています。
どこかにサンプルコードありませんでしょうか?
0482デフォルトの名無しさん
2006/04/02(日) 23:59:45ttp://studio.imagemagick.org/script/formats.php
対応フォーマット一覧を見るとRGBがそれっぽいのでRGBフォーマットと指定して読み込み。
$img->Read('rgb:fileName.raw');
で行けるみたい。
# 資料がなかなか見つからなくて苦労した…
0483455
2006/04/03(月) 00:14:46いや漏れも付き合いがあるとかネタをにぎってるとかいうわけじゃなくて、
伝え聞く中学生以降の人生(笑)とか見ていると、他人になめられたくないとか、
自分を大きく見せたいという気持ちが常に表に出ちゃうんじゃないかなあ
ということ。
ま、生まれ(育ちか?)がそーなのよ。
つーことで。
0484デフォルトの名無しさん
2006/04/03(月) 00:19:11自己レス、発見
http://pc8.2ch.net/test/read.cgi/php/1015943725/200
>>429
ttp://www.ippo.ne.jp/g/53.html
0485デフォルトの名無しさん
2006/04/03(月) 00:21:47Perl実行時にもし望まれない引数が指定された場合コンパイラがエラーを吐くようなプログラミングをしたいのですが
(C言語ライクに int hogehoge(int a)関数があってhogehoge("ぬるぽ")としたらコンパイル時にエラーを吐くような)
これはdie関数などを用いてサブルーチン内で実装するしかないのでしょうか?
0486デフォルトの名無しさん
2006/04/03(月) 00:53:52オブジェクトのメソッド呼び出しについては無視されるが、
引数の数だけならプロトタイプ宣言で出来る。
ttp://www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html#Prototypes
しかし、変数の中身については基本的に不可能。
実行時にマッチングするくらいしかない。
FilterやAttributeを駆使すれば、不可能とも
言い切れないんじゃなかろうかと思ったりもするけど。
0487481
2006/04/03(月) 01:54:31ありがとうございます。
ファイル名をfileName.rgbに変えたらすんなり出来ました。
0488デフォルトの名無しさん
2006/04/03(月) 13:54:47教えてください。
0489デフォルトの名無しさん
2006/04/03(月) 14:19:43>>488
おっしゃってる意味が全くわかりません。
特にPerlはネットワークを介さずに実行できる仕組みになっております。
0490デフォルトの名無しさん
2006/04/03(月) 14:19:53Sys::Hostname
0491デフォルトの名無しさん
2006/04/03(月) 14:49:35あんたの言ってることの方が、全くわからん。
0492デフォルトの名無しさん
2006/04/03(月) 16:11:43日本語でおk
0493デフォルトの名無しさん
2006/04/03(月) 19:40:51perldoc -q hostname
0494デフォルトの名無しさん
2006/04/03(月) 21:33:27どのモジュールもgccよりccを見に行ってコンパイルできません。
その他のオープンソースはコンパイルできる環境はあるのですが、
同様の現象ってありますか?
0495デフォルトの名無しさん
2006/04/03(月) 21:55:050496デフォルトの名無しさん
2006/04/03(月) 21:56:34それは試したのですが駄目でした。
0497デフォルトの名無しさん
2006/04/03(月) 22:40:320498デフォルトの名無しさん
2006/04/04(火) 11:44:10演算子のオーバーロードしたくて以下のスクリプトを書いたんですが…
package Num;
use overload {
'cmp' => \&compare
};
sub new {
my $classname = shift;
my $t = {};
$t->{'value'} = shift;
bless $t, $classname;
}
sub compare {
my ($x, $y)=@_;
$x->{'value'} <=> $y->{'value'}
}
package main;
my @l = (new Num(1), new Num(4), new Num(2), new Num(3));
foreach (sort {$a cmp $b} @l) {
print $_->{'value'}, ', ';
}
エラーはでないですがソートできません。比較するサブルーチンの内容に問題
がありそうな気はしてるんですが、そもそもNum::compareが呼ばれてないみたい
なんですけど、何が間違ってるんでしょうか。
0499デフォルトの名無しさん
2006/04/04(火) 12:20:16overloadに渡すのはリファレンスじゃない
use overload (
'cmp' => \&compare
);
0500デフォルトの名無しさん
2006/04/04(火) 12:47:390501デフォルトの名無しさん
2006/04/04(火) 13:52:22ありがとうございます!できました!
ドキュメント見てたつもりだったんですが何故か{}を使う
と思い込んでてそこは再チェックしてませんでした…
0502デフォルトの名無しさん
2006/04/04(火) 14:29:47それガチだな
0503masaki
2006/04/04(火) 14:43:41WindowsXP Pro
Eclips3.1.1(日本語化済)
ActivePerl-5.8.8.817 + padwalker
でPerlをデバック実行したいのですが
ブレークポイントではとまりますが
変数を覗いたりできません。
デバッカーとエディターがリンクしていない感じです。
こんな変な状況になった人いますか?
解決法を教えてください。
0504デフォルトの名無しさん
2006/04/04(火) 15:22:33メモリ256Mしかありましぇん字もうてましぇん
0505masaki
2006/04/04(火) 15:23:43クローズさせてください。
0506デフォルトの名無しさん
2006/04/04(火) 19:43:27plファイルを追加する方法がわからない
0507デフォルトの名無しさん
2006/04/04(火) 20:59:370508デフォルトの名無しさん
2006/04/04(火) 22:07:03perl -e 'print "Hello.\n";
を実行すると、
Can't find string terminator "'" anywhere before EOF at -e line 1.
というエラーがでます。
なぜでしょうか?
教えて下さい。
OS win2000
perl This is perl, v5.8.6 built for MSWin32-x86-multi-thread
0509デフォルトの名無しさん
2006/04/04(火) 22:11:550510デフォルトの名無しさん
2006/04/04(火) 22:24:16ワンライナでは極力""を使わないほうが賢明。
q{}オペレータが便利。
perl -e "print qq[Hello.\n];"
ちなみに癖ってのはこういうのをやってみればわかる。
perl -e "print \"|\";"
原因はDOSシェルは\によるエスケープを解釈してないからの模様。
0511508
2006/04/04(火) 22:25:36でも、実行すると、
C:\myPerl>perl -e "print "Hello.\n;"
HelloSCALAR(0x1624f80)
となります。
なんででしょう?
0512デフォルトの名無しさん
2006/04/04(火) 22:43:29DOSのコマンドライン解釈はよくわからんが、perl処理系には
print Hello.\n;
というプログラムが渡っているのだろうと思われる。文字列定数がベアワードに
なっているが、quoteを補うと
print 'Hello' . \ 'n';
0513508
2006/04/04(火) 23:07:31>512
ありがとう。
皆さんは、perlをどんな環境で使っていますか?
私は、win2000+ACTIVESTATE社のperlを
DOS上で使っています。
0514デフォルトの名無しさん
2006/04/04(火) 23:09:590515デフォルトの名無しさん
2006/04/05(水) 00:45:22いやさ q{}とかはいいんだけどさ。
お前さんシングルクォート閉じてない・・・
0516デフォルトの名無しさん
2006/04/05(水) 03:49:13共有するにはどのような手段があるでしょうか?
多段になっている配列やハッシュ変数の内容を子スレッド側で変えたいと思っています。
use strict;
use threads;
use threads::shared;
my @s : shared;
main();
sub main {
my $th = threads->new( \&thr );
$th->join;
print "in main: @s\n";
}
sub thr {
@s = ( 1, 2, 3 ); # OK
# @s = ( 1, [2, 3] ); # NG
print "in thr @s\n";
}
threads::shared のドキュメントを読んで、こういうことはできなそうだと分かったのですが、
スカラー変数などに詰め込んで渡して、親スレッド側で展開等しかないのでしょうか・・。
0517デフォルトの名無しさん
2006/04/05(水) 04:27:27> Due to problems with Perl's prototyping, if you want to share a newly created reference, you need to use the &share([]) and &share({}) syntax.
threads::sharedのPODに書いてあったよ
確認してないけどこうじゃない?
@s = ( 1, &share([2,3]) );
0518デフォルトの名無しさん
2006/04/05(水) 05:11:34ありがとうございます。
@s = ( 1 );
$s[1] = &share( [] );
@{$s[1]} = ( 2, 3 );
でいけました。
0519デフォルトの名無しさん
2006/04/05(水) 10:34:57さんすこ
0520デフォルトの名無しさん
2006/04/05(水) 22:57:25でperl debugger使おうとしてるけど
デバッグしようとしたとたんに
Failing to create PerlDB-Interface !!!
とか
Error within Debug UI:
と出てうまくいきません。
日本語の情報は皆無でした。
英語でぐぐってもさっぱし
Interpreter typeもちゃんとCygwinになってるし
Perlのパスもきちんとcygwin\binに通ってるし
mountコマンドもcygwinに入ってる。
上でperl debugger動いている人いたけど
どうやったの〜?
0521デフォルトの名無しさん
2006/04/06(木) 00:05:29Cygwinで普通に動くが…。
setup.exeで普通にダウンロードしたわけだが。
0522デフォルトの名無しさん
2006/04/06(木) 01:23:50opendir my $dh, $dirname or die "#!";
#.や..以外のファイルを取得
@filelist = grep { !m/^(\.|\.\.)$/g } readdir $dh:
c;psedir $dh;
とやってるのをみかけたのだが
これって
@filelist = readdir $dh;
shift(@filelist);shift(@filelist);
とやっちゃまずいの?結果は同じでこっちの方が処理速度速いと
思うんだけど
あと
grep { !m/^(\.|\.\.)$/g } の正規表現の中の最後のgっていらなくね?
0523デフォルトの名無しさん
2006/04/06(木) 01:35:570524デフォルトの名無しさん
2006/04/06(木) 01:37:24@filelistの最初に . と .. が…でおk
0525デフォルトの名無しさん
2006/04/06(木) 04:02:19↓このエラーが出ます。
Can't locate loadable object for module Encode in @INC ・・・
助けて下さい!!
0526デフォルトの名無しさん
2006/04/06(木) 04:34:59速いけど環境依存になる可能性あるな。
特定の環境でのみ実行ってのならよさそう。
0527デフォルトの名無しさん
2006/04/06(木) 07:03:27大元のファイルからrequireされたファイルに
グローバル変数を渡す時はourが必要になるんだけど、
requireされたファイルではuse strictが無視されてるみたいなんですけど。
0528デフォルトの名無しさん
2006/04/06(木) 07:23:21ほとんどのpragmaはレキシカルスコープ(myと同じ)です。
詳しくはperldoc perlmodlibのPragmatic Modulesを参照。
0529デフォルトの名無しさん
2006/04/06(木) 09:20:05そりゃ無理だろうな。Encode.pmはビルドしないと使えないXSモジュールだ。
ちゃんとsshでログインしてビルドすれ。
0530デフォルトの名無しさん
2006/04/06(木) 09:41:23俺もいろいろ悩みましたが
結局各バージョンの相性でした。
eclipse3.1.X以上は難しいと思います。
俺の成功例は。。。
ActivePerl-5.8.8.817 + padwalker(ppm install padwalker)
eclipse-SDK-3.0.1-win32 + NLpack-eclipse-SDK-3.0.x-win32
EPICは http://e-p-i-c.sf.net/updates よりインスコ
で動きます。
0531デフォルトの名無しさん
2006/04/06(木) 17:33:36system('rm -f /foo/bar &');
で可能でしたがwindowsの場合はどうやるのでしょうか。
上記のような感じでやると起動したプログラムが終了するまでコンソールに帰ってきません。
fork以外の方法で出来ればと思います。
0532デフォルトの名無しさん
2006/04/06(木) 19:09:420533531
2006/04/06(木) 19:32:02wperlという物を初めて知ったのですがperlと1バイトしか相違点がないんですね。
0534デフォルトの名無しさん
2006/04/06(木) 19:44:20fork と同じようなことだけど、
use threads;
threads->new( sub { 'rm -f /foo/bar &' } );
とかどうかな。
バックグラウンド実行に比べればかなーりアレだけど・・。
0535デフォルトの名無しさん
2006/04/06(木) 21:30:01投げっぱなしではないけど、手軽なのはopenかな。
投げっぱなしが希望なら、CMD.EXEのSTARTコマンド経由。
別ウィンドウを開くのと、NT系のみが欠点。
もし、(OS/2のCMD.EXEにあるような)DETACHコマンドが(NTのCMD.EXEにも)あるなら、
(STARTのかわりに)それを使うのが楽そう。
0536デフォルトの名無しさん
2006/04/06(木) 21:30:02複数のファイルを一遍にopenする事ってできますか?
0537デフォルトの名無しさん
2006/04/06(木) 21:47:12openした後どうやって処理するつもりなの?
0538デフォルトの名無しさん
2006/04/06(木) 21:52:58open(IN,"cat file1 file2 file3|");
0539デフォルトの名無しさん
2006/04/06(木) 22:02:47たとえば
$str = 'foobarbazhogeほげホゲ';
$pat ='hoge';
があったとして、その前後2文字 'az', 'ほげ'にマッチさせたいのですが。
0540デフォルトの名無しさん
2006/04/06(木) 22:08:33マルチバイト文字を考慮するとなると、マルチバイト文字にマッチする
正規表現を使う等の工夫が必要。
(Perl 5.8 なら、そうしなくてもできる方法があるのかな)
( $a, $b ) = $str =~ /(..)$pat(..)/;
0541デフォルトの名無しさん
2006/04/06(木) 22:18:570542デフォルトの名無しさん
2006/04/06(木) 22:21:49早速試してみます。
0543デフォルトの名無しさん
2006/04/08(土) 21:03:24漢字の検索ができずに困っています。
どなたか対処方法をご教授願います。
if($_=~ m/漢字/) {
print "hit\n";
}
0544デフォルトの名無しさん
2006/04/08(土) 21:13:250545デフォルトの名無しさん
2006/04/08(土) 21:51:54>>3 の[テクニック]あたりに答が!!
0546デフォルトの名無しさん
2006/04/08(土) 22:24:53スクリプトの文字コードがshifjisなら
use encoding "shiftjis";
でOK
0547デフォルトの名無しさん
2006/04/08(土) 22:26:30いまだにスクリプトをeuc-jpで書けってとこで
アドバイス止まってない?
euc-jpで書いても日本語処理は完璧じゃないのに
0548デフォルトの名無しさん
2006/04/08(土) 22:39:52実は $_ はwebからgetしたデーターです。
制御コード等が入っているためだと思いますが、
英数字、漢字以外の文字を削除する方法がいまいち
わからなくて。
use LWP::Simple;
$_=get("http://quote.yahoo.co.jp/q?s=5401");
0549デフォルトの名無しさん
2006/04/08(土) 22:54:18Y!はeucだからソースをeucで書けば、普通に漢字でマッチできるはず。
shiftjisで書いて<<546のプラグマを使うのなら、
Encode.pmのdecode関数でutf化する必要がある。
0550デフォルトの名無しさん
2006/04/08(土) 23:09:08ありがとうございました。
eucでファイルセーブしただけでマッチするようになりました。
ただし今度は漢字のprintが文字化けますが、とりあえずは
次に進めます。
0551デフォルトの名無しさん
2006/04/08(土) 23:46:240552デフォルトの名無しさん
2006/04/08(土) 23:55:15だとしたら5.8.8にすると解決。
0553デフォルトの名無しさん
2006/04/09(日) 00:48:04スクリプトがeuc-jpならprintの出力もeuc-jp
windowsの文字コードはshiftjis
したがってもしコマンドプロンプトにそのまま出力
したら化けて当然
0554デフォルトの名無しさん
2006/04/09(日) 18:56:30複数ファイルを一気に置換したいのですが、
perl -pi.bak -e 's/<FONT COLOR="white">/<FONT COLOR="blue">/g' *.html
これはWINじゃダメみたいです。
WINでやりたいのですがどうすればいいでしょうか?
ご教授お願いいたします。
0555デフォルトの名無しさん
2006/04/09(日) 19:34:191. Windowsのシェルではシングルクォーテーションは解釈されない
2. sh系ではワイルドカードの展開をシェルが行うが、
Windowsのシェルでは呼ばれたソフト側が面倒を見ないといけない
ttp://search.cpan.org/~sburke/Win32-Autoglob-1.01/Autoglob.pm
ということで
つ perl -MWin32::Autoglob -pi.bak -e "s/<FONT COLOR=\x22white\x22>/<FONT COLOR=\x22blue\x22>/g" *.html
# 素直に\"としてないのは漏れが510だから。
0556デフォルトの名無しさん
2006/04/09(日) 19:52:57おー早速ありがとうございました。
0557556
2006/04/09(日) 20:15:550558デフォルトの名無しさん
2006/04/09(日) 22:10:55速度面で一時ActivePerlにしたがそんなに違わなかったのでCygwin-Perlに
戻して、Utf8-TeratermSSH組み込みのCygtermで使ってます。
もうコマンドプロンプトに戻れない。
0559デフォルトの名無しさん
2006/04/10(月) 00:39:02ふつー ck
0560デフォルトの名無しさん
2006/04/10(月) 16:58:48Mon, 10 Apr 2006 07:28:55 GMT
これを秒数の整数値に変換する方法ってないでしょうか?
GNUのdateコマンドで
$date --date='Mon, 10 Apr 2006 07:28:55 GMT' +%s
というものなんですが、データの量が膨大なのでPerl内でこれをやりたいです。
0561デフォルトの名無しさん
2006/04/10(月) 17:14:29つ HTTP:Date
0562デフォルトの名無しさん
2006/04/10(月) 17:29:14ありがとう!!
0563デフォルトの名無しさん
2006/04/11(火) 09:03:020564デフォルトの名無しさん
2006/04/11(火) 09:41:24MIME::Base64 is up to date (3.05).
Digest::MD5 is up to date (2.33).
Running install for module URI
The module URI isn't available on CPAN.
Either the module has not yet been uploaded to CPAN, or it is
temporary unavailable. Please contact the author to find out
more about the status. Try 'i URI'.
LWPをインストールしようとすると、こんなの出るんですが、これなんでしょうか?
0565デフォルトの名無しさん
2006/04/11(火) 11:29:57多分、ダウンロードに失敗している。ミラーを設定してみたらどう?
設定の仕方はo conf urilist辺りでググってくれ
0566デフォルトの名無しさん
2006/04/11(火) 12:03:53@i = shuffle 1..500;
ってやってみたんだが
いくつか数字が欠けてる
0567566
2006/04/11(火) 12:27:510568デフォルトの名無しさん
2006/04/11(火) 12:29:28% perl -e 'use List::Util qw(shuffle); for (1..10000) { my @i=shuffle 1..500; my %i; @i{@i}=(); for(1..500){exists $i{$_} or warn $_}}'
とやってみたがなんともなかったな。
0569デフォルトの名無しさん
2006/04/11(火) 16:55:340570デフォルトの名無しさん
2006/04/11(火) 17:31:10> perlの連想配列はハッシュインデックスを使ってるんですか?
それはあなたが「ハッシュインデックス」と呼称しているものが何かによる。
0571デフォルトの名無しさん
2006/04/11(火) 17:49:490572デフォルトの名無しさん
2006/04/11(火) 18:13:30データベース管理システムに「インデックス」と呼称されるエンティティがあって、
それの種別を表すのに、「ハッシュ」とか「ツリー」とかが前置されるようだね。
0573デフォルトの名無しさん
2006/04/11(火) 18:34:37アルゴリズムとデータ構造とかからちゃんと勉強してる Perl 使いって少ないのか?
0574デフォルトの名無しさん
2006/04/11(火) 18:36:110575デフォルトの名無しさん
2006/04/11(火) 18:51:07と今日SICPの原書を買った漏れが言って見るテスト
0576デフォルトの名無しさん
2006/04/11(火) 19:00:10で、その「インデックス」は「クラスタ」と置換可能らしい。
「インデックス」自体もデータベース用語なんだろうね。
0577デフォルトの名無しさん
2006/04/11(火) 19:22:07> perlの連想配列はハッシュインデックスを使ってるんですか?
以上を踏まえると、Perlの連想配列はハッシュテーブルですが、しかし
「ハッシュインデックスか?」と聞かれると質問の意味が良く分からないと
答えざるを得ないということですね。
0578デフォルトの名無しさん
2006/04/11(火) 20:07:57てか、UNIXとかなら最初からライブラリあるし、ライセンスの都合で使いたく
ないにしても変な実装はしないんじゃないかなあ。
0579デフォルトの名無しさん
2006/04/11(火) 20:58:48引数の指定が1つでなかったらスクリプトを終了させる
記述ってどうすれば良いですか?
0580デフォルトの名無しさん
2006/04/11(火) 21:11:40引数の数を調べて、1以外の時にはexitする。
0581デフォルトの名無しさん
2006/04/11(火) 21:12:500582デフォルトの名無しさん
2006/04/11(火) 21:19:50hv.c や hv.h 見たけど、ライブラリは使ってなかった。
複数の単方向リストがあり、ハッシュ値(32bit)を元にリスト自体を選んだ後は
リストを辿りながらキーを捜してるっぽい。
これって、ハッシュ値重複が前提の直接ハッシュ法??
よくわかりません。
>>579
$#ARGV == 0 or die "引数が...";
$#ARGV != 0 and die "引数が...";
die "引数が..." unless scalar @ARGV == 1;
die "引数が..." if scalar @ARGV != 1;
たぶん、どれもこれも駄目な記述。
0583デフォルトの名無しさん
2006/04/11(火) 21:29:36みなさまありがとうございます。
0584デフォルトの名無しさん
2006/04/11(火) 21:41:52perl自体をコンパイルしてインストールしたいと思ったときに、
CPAN上で提供されているパッケージが含まれてしまうのですが、
これを除外 or その一覧を取得する方法って無いでしょうか?
0585デフォルトの名無しさん
2006/04/11(火) 21:48:17だからといって $hoge[0]のかわりに$hoge[$[]とは書かないダブルスタンダードな俺。
0586デフォルトの名無しさん
2006/04/11(火) 22:02:38ハッシュはまんま実装してあるね。
今のソースは知らないけど、前はラリーウォールの名前入りの
かなり古いソースが長い間使われていた。
確か、バケット占有率だけ見て
リスト長については目をつぶるタイプのハッシュだったと思う。
アルゴリズムの本読めば分かる程度の、普通の(難しい事抜きの)実装だった。
0587デフォルトの名無しさん
2006/04/11(火) 22:28:43そうすると、今、普通のコンパイラ、インタプリタは、なんと言う名前なのでしょう??
0588デフォルトの名無しさん
2006/04/11(火) 22:50:22ていうか、重複しないハッシュテーブルなんて普通は作れない。
重複した時の処理で隣のハッシュ値を使うかもう一つテーブル
作って同じハッシュ値でやるかだ。
0589デフォルトの名無しさん
2006/04/11(火) 22:51:03まあいいや。
0590デフォルトの名無しさん
2006/04/11(火) 23:03:530591573
2006/04/11(火) 23:51:290592デフォルトの名無しさん
2006/04/12(水) 00:07:07(^( ゚∀゚)^) ハ_ハ
) / ('(゚∀゚∩ みんな仲良く
(_ノ_ノ ヽ 〈 みんなPerl仲間
ヽヽ_)
0593デフォルトの名無しさん
2006/04/12(水) 00:13:370594デフォルトの名無しさん
2006/04/12(水) 01:09:410595デフォルトの名無しさん
2006/04/12(水) 01:26:19perl(Perlではない)
ttp://www.kt.rim.or.jp/~kbk/perl5.005/perlfaq1.html#What_s_the_difference_between_p
pugsのほうはPerl6のHaskellによる実装で、現状のもの(5.x)とは言語仕様から大きく違う。
また、今使われているPerl5をParrot上で動作するようにしようというプロジェクトもあってこれはponieという名前。
ただ、pugsは公式に認められた実装だけれど本家の実装ではないのでperl6は別に作られる(予定)、
ということで良いんだよね?ここのところちょっと自信なし。
0596デフォルトの名無しさん
2006/04/12(水) 03:25:00そんな感じだね。
ttp://japan.zdnet.com/sp/interview/story/0,2000056426,20100854-3,00.htm
0597デフォルトの名無しさん
2006/04/12(水) 05:19:14の
@i{@i}=();
の左辺て何やっているの?
0598デフォルトの名無しさん
2006/04/12(水) 07:01:58ありがとうございます。
perl 6 は、本家の実装が今後でてくると。
言語仕様もかなりかわっているようです。
0599デフォルトの名無しさん
2006/04/12(水) 10:54:34今度仕事でpostgreSQL+perl環境でWEBサービスを作るんだけど、
今のうちにperl+postgreSQLの演習として何か作ろうと思うんだが
何が良いだろう?
perlもpostgreSQLもほぼ未経験です。
0600デフォルトの名無しさん
2006/04/12(水) 11:08:100601デフォルトの名無しさん
2006/04/12(水) 11:51:47ところで、perlからPg.pm使ってpostgresql使う時って
もしかしてcloseしなくていいの?
http://www.stackasterisk.jp/tech/program/perl03_02.jsp
ここ見たんだけど。
0602デフォルトの名無しさん
2006/04/12(水) 11:57:500603デフォルトの名無しさん
2006/04/12(水) 13:02:33search DBDってしてみても、PgPPしか見つからないんだが
PgPPとPgで構文って変わってくるかな?
変わらないなら、別にPgPPでも良いので。
0604デフォルトの名無しさん
2006/04/12(水) 13:13:15ちょっと覗いてみただけだけどPP版とは結構違うみたいだね。
DBD::PgはTheoryx5リポジトリにあったよ。最新ではないようだけど。
ttp://theoryx5.uwinnipeg.ca/ppms/
0605603
2006/04/12(水) 13:23:09すごく助かった。
0606デフォルトの名無しさん
2006/04/12(水) 13:54:23%iに@iのキーを手っ取り早く作る手法
ハッシュスライスに空リストを代入でキーだけ作られる
ただ、値は未定義なのでexistsで確認しなければならない
0607デフォルトの名無しさん
2006/04/12(水) 14:57:520608デフォルトの名無しさん
2006/04/12(水) 15:26:54$i{@i}=();
だったりするとまた意味合いが違うんだよね。
マジカルPerlタンハァハァ
0609607
2006/04/12(水) 16:00:11DBD::Pg使うと
perlのcommand line iterator自体が落ちるみたいだ。
インストール失敗してるのかな・・・
0610デフォルトの名無しさん
2006/04/12(水) 19:13:08XML::DOM::ParserでXML文書から取り出したutf8化されてしまった日本語を(大元はsjis)
Jcode.pmでShift_JISに戻そうとしたんですが、失敗してしまいます。
$result = Jcode->new($target, "utf8")->sjis;
とやっても
$result = Jcode::convert($target, "sjis");
とやっても文字化けした難しい漢字の
並んだShiftJISへと変換されてしまいます。
元の日本語コードを自動判別させても同じでした。
環境はWindowsXPで、PerlはActiveStateの5.6です。
Jcode.pmは、ttp://openlab.jp/Jcode/index-j.htmlのJcode-2.03をコンパイルして使ってます。
5.8のEncodeを使おうと思ったのですが、他に利用してる重要な
モジュールが5.6じゃないと動かないとあって、5.6ははずせない状況です。
何か解決方法ってありますか?
0611デフォルトの名無しさん
2006/04/12(水) 19:19:530612デフォルトの名無しさん
2006/04/12(水) 19:45:39> 何か解決方法ってありますか?
どのように変換されているのか調べて問題を突き止め、それを解消する。
0613610
2006/04/12(水) 19:47:47で調べてみたら「ascii」とか出てきてしまいました。
おかしいと思い変換前の日本語をファイル出力して、それを
EmEditorで読ませるとちゃんとutf8として自動判別されます。
もちろん文字化けしていない、大元のShift_JISだったころの日本語です。
XML::DOM::Parserも内部処理ではutf8で処理してるはずなので、
エディタの判定が正しいのは明らかなのですが。。
0614610
2006/04/12(水) 19:52:06ちゃんと変換前の文字コード判別は「utf8」で判別されていました。
もう少し調べてみます。。
0615610
2006/04/12(水) 20:14:10お邪魔しました。
0616デフォルトの名無しさん
2006/04/12(水) 20:47:55fileにいくつか文字列が記述してあり、その記述の行をログから抽出する
Perlの記述はどうすれば良いですか?
UNIXでいう、fgrep -f ./file /var/log/messages
です。
しかし、fgrepを使わず、Perlのみで可能にしたいです。
0617デフォルトの名無しさん
2006/04/12(水) 20:55:43こんなモヅールもあるが・・どうなんだろね
0618デフォルトの名無しさん
2006/04/12(水) 21:01:30様々なurlをファイル名にするのに、良い方法が見つからず悩んでいるんだが、
いい方法ないですかね?
http://www.yahoo.co.jp/ とかだったら、 www.yahoo.co.jp.txt でもいけるが、
http://search.yahoo.co.jp/search?p=2ch&fr=top_v2&tid=top_v2&search.x=1 このようなアドレスにも対応できるような、
良い方法ってないですか?
0619618
2006/04/12(水) 21:03:55ユニークでなければいけません。
ハッシュ化しようかと思ったが、それでは駄目ですよね。
0620デフォルトの名無しさん
2006/04/12(水) 21:07:26例)
http://www.yahoo.co.jp/
↓
%68%74%74%70%3a%2f%2f%77%77%77%2e%79%61%68%6f%6f%2e%63%6f%2e%6a%70%2f
0621デフォルトの名無しさん
2006/04/12(水) 21:13:08長いホスト名だとPATH_MAXにひっかかるよ。
正規化してmd5でも使ってhexに変換しる。
0622デフォルトの名無しさん
2006/04/12(水) 21:16:04>様々なurlをファイル名にするのに
~~~ ~~~~~~~~~
0623デフォルトの名無しさん
2006/04/12(水) 21:18:14絶対にURLがファイル名でないとだめなの?
0624618
2006/04/12(水) 21:25:17いろいろと参考になりました。ありがとうございます。
なんらかの形でエンコードしてみます。
今情報あさってたんですが。Base64なんてどうかな。
0625デフォルトの名無しさん
2006/04/12(水) 21:28:260626デフォルトの名無しさん
2006/04/12(水) 21:39:18ファイルシステムにはMAX_PATH制約があるからURL->ファイル名の変換は不可能。
適当な方法で文字列を生成して対応関係を別の場所に記録しておくしかない。
0627618
2006/04/12(水) 21:44:29わかりました。
MD5ってユニークなんですか?
ぐぐってんだが、イマイチわかんない。
0628デフォルトの名無しさん
2006/04/12(水) 21:48:30MD5は128ビットだから1/2^128の確率でダブル可能性がある。
0629618
2006/04/12(水) 21:50:57はい。やっと理解した。
普通に考えて、ユニークのわけないよね。
元の対象のものとハッシュに一意性があるっつーことね。この辺でこんがらがってた。
0630デフォルトの名無しさん
2006/04/12(水) 21:59:000631デフォルトの名無しさん
2006/04/12(水) 21:59:11ディレクトリをlsしたときに、どのサイトのファイルかもわかんなくてちょっと困る木がするが。
0632デフォルトの名無しさん
2006/04/12(水) 22:01:09wgetとかダウンロードソフトの保存ルールでも参考にしてみたら?
0633デフォルトの名無しさん
2006/04/12(水) 22:01:100634デフォルトの名無しさん
2006/04/12(水) 22:04:24既存のファイル名とかぶらない文字列をランダムに生成すれば十分。
0635618
2006/04/12(水) 22:24:43説明不足の中、
いろいろとレス頂き有難う御座います。
有用な、レスばかりで感謝しております。
最終的には、どこかで線引きできると思いますので、
試行錯誤やってみます。
そういやwgetってサイトミラーリングした時、アドレスフォルダ名にしてたな。みてみよ。
0636デフォルトの名無しさん
2006/04/12(水) 22:26:15と仮定できるのなら、URIエンコードのような感じで変換するのがお手軽。
Wikiとか参考になるかも。
>>620 のように全部変換するのではなく、英数字やピリオド等は
もとのままにしておくと ls で見たときとかにも分かりやすくてgood。
0637デフォルトの名無しさん
2006/04/12(水) 23:30:360638デフォルトの名無しさん
2006/04/12(水) 23:35:190639デフォルトの名無しさん
2006/04/13(木) 09:32:490640デフォルトの名無しさん
2006/04/13(木) 09:57:02これは仕様ですか?
0641デフォルトの名無しさん
2006/04/13(木) 09:57:040642デフォルトの名無しさん
2006/04/13(木) 10:03:13perlからは$ENV{HOME}を見るのが正しいのか。
0643デフォルトの名無しさん
2006/04/13(木) 10:16:53__FILE__ や $0 は相対パスしかくれません。
cwd を繋げればいいのかと思ったのですが、別フォルダから実行すると
スクリプト自身のパスになりません。
よろしくお願いします。
0644デフォルトの名無しさん
2006/04/13(木) 10:35:420646デフォルトの名無しさん
2006/04/13(木) 11:13:24この環境を構築する方法について情報下さい。
通常のやり方ではエラーになるのです。
0647デフォルトの名無しさん
2006/04/13(木) 11:26:03何が?
0648デフォルトの名無しさん
2006/04/13(木) 11:35:43通常のやり方って?
0649デフォルトの名無しさん
2006/04/13(木) 11:40:330650デフォルトの名無しさん
2006/04/13(木) 11:50:32, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
0651646
2006/04/13(木) 12:30:43apache,perl,postgresqlをwebを参考にインストール。
それぞれ単体で動作確認成功。
ppm使ってdbiとdbd-pgをインストール。
perlからdbiを使ってpostgresqlへコネクトしようとすると
perl command line interpreterが落ちる。
>>650
同じ言葉を返したい。
ぐぐった上にさらに自分でこの環境を構築してみてから言ってくれ。
0652デフォルトの名無しさん
2006/04/13(木) 12:30:46すぐに、ググれという馬鹿の一つ覚えはやめましょう。Googleで探して見つからないと、
この世に存在しないのと同義になりつつあります。あらゆるものがGoogleベースで
構築されようとしています。そろそろ、どうやってGoogleの監視から逃れて、
自由なネット生活を送るかを、真剣に考えましょう。
0653デフォルトの名無しさん
2006/04/13(木) 13:58:390654デフォルトの名無しさん
2006/04/13(木) 14:20:07んと、全く同じ環境を再現できるひとはそれほど多くないと思うので、
具体的なエラーメッセージや使ってるバージョンとか参考にしたサイトの URL とか
できるだけ詳しく出した方が良いと思うよ。
0655デフォルトの名無しさん
2006/04/13(木) 14:25:36でググれ。
解決方法どっかにあるぞ。
0656デフォルトの名無しさん
2006/04/13(木) 14:52:28いい加減にしろよクソアマが
マジ頭くんぜ初心者!
0657デフォルトの名無しさん
2006/04/13(木) 15:21:46俺は落ちないな。
0658デフォルトの名無しさん
2006/04/13(木) 15:52:04君も相当態度が悪い
0659デフォルトの名無しさん
2006/04/13(木) 16:23:46取ると若い者を見て「近頃の若い者は」と言い出す生き物のことである。
0660デフォルトの名無しさん
2006/04/13(木) 17:25:59おまえらどうしてますか?C?C++?LISP?
0661デフォルトの名無しさん
2006/04/13(木) 18:26:08メ モ リ 増 設
0662デフォルトの名無しさん
2006/04/13(木) 18:27:480663デフォルトの名無しさん
2006/04/13(木) 18:28:05具体的な状況を書いてくれ。
0664デフォルトの名無しさん
2006/04/13(木) 18:30:200665デフォルトの名無しさん
2006/04/13(木) 18:34:540666デフォルトの名無しさん
2006/04/13(木) 18:37:020667デフォルトの名無しさん
2006/04/13(木) 18:47:460668デフォルトの名無しさん
2006/04/13(木) 18:57:08例えば具体的にどんな?
0669デフォルトの名無しさん
2006/04/13(木) 19:13:07現状の処理内容による。
0670デフォルトの名無しさん
2006/04/13(木) 19:13:20どう見直すかは状況によるに決まっとろうが。状況の例を挙げろと?
ごく簡単な例で言えばファイルの中身を全て行単位でひっくり返すものだとすれば、
最後の行から逆順に読んで書き出していくようにすれば良い。
ソートなら分割統治法で複数回に分けて挿入ソートとかいろいろあるもんだよ。
0671デフォルトの名無しさん
2006/04/13(木) 19:15:22もっとメモリが沢山あるマシンにログインする。
0672デフォルトの名無しさん
2006/04/13(木) 19:17:15・そもそもでかい変数を作らない
・いらなくなった変数は消す
ってやってりゃそうそうメモリ足りなくなること無いと思うけど
0673デフォルトの名無しさん
2006/04/13(木) 19:19:54Perlはこれぐらいは覚悟して使うべき?もちろんCで書くより何十倍も楽なんだけど・・・
0674デフォルトの名無しさん
2006/04/13(木) 19:31:52俺はそれぐらいは覚悟して使っている。
0675デフォルトの名無しさん
2006/04/13(木) 19:32:200676デフォルトの名無しさん
2006/04/13(木) 19:36:43それの程度のこと自分で判断できないようなら開発者失格だろう。
0677デフォルトの名無しさん
2006/04/13(木) 19:48:17threadやめて10年前の古いバージョンでfork使って試してみるわ。
0678デフォルトの名無しさん
2006/04/13(木) 19:57:500679デフォルトの名無しさん
2006/04/13(木) 19:59:16最新版は 5.8.8 。ヴァージョン下げるなら
5.005_04 まで下げないとあんまり意味無いよ。
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlhist.pod
0680デフォルトの名無しさん
2006/04/13(木) 20:50:570681デフォルトの名無しさん
2006/04/13(木) 21:58:06$a = `cat hello.doc`;
もちろん hello.doc は 15M のファイル。
0682デフォルトの名無しさん
2006/04/13(木) 23:26:40ちょwwwとしたプログラム。
0683デフォルトの名無しさん
2006/04/13(木) 23:33:270684デフォルトの名無しさん
2006/04/13(木) 23:40:44その時は根本的に処理変えてメモリの中身をディスクに落とすように書き換えた。
データ分割してウィンドウ処理。
今時、テキスト処理でメモリ不足って、余程じゃなきゃ無いんじゃないの?
テキストのみなら新聞1年分読み込んでも数百MBでしょ。
0685デフォルトの名無しさん
2006/04/13(木) 23:54:100686デフォルトの名無しさん
2006/04/13(木) 23:54:370687デフォルトの名無しさん
2006/04/13(木) 23:55:200688デフォルトの名無しさん
2006/04/14(金) 00:04:180689デフォルトの名無しさん
2006/04/14(金) 00:14:310690デフォルトの名無しさん
2006/04/14(金) 00:22:00数メガのテキストファイル読み込んで配列つくって
文字列の検索置換してあたらしく数メガのテキストファイル作っちゃったりするけどな。
メモリや速さの効率考えずに思いついたままのスクリプト書いちゃう。
0691デフォルトの名無しさん
2006/04/14(金) 03:04:32約064MB perl -e "$#a=0xFFFFFF;<STDIN>"
約256MB perl -e "$#a=0xFFFFFF;$a[$_]=undef for (0..$#a);<STDIN>"
約320MB perl -e "$#a=0xFFFFFF;$a[$_]=0 for (0..$#a);<STDIN>"
約384MB perl -e "$#a=0xFFFFFF;$a[$_]=0.1 for (0..$#a);<STDIN>"
約320MB perl -e "$#a=0xFFFFFF;@b=@a;<STDIN>"
約128MB perl -e "$a=' ' x 0x4000000; <STDIN>"
約064MB perl -e "$a=' ' x 0x4000000; undef $a; <STDIN>"
約064MB perl -e "$a=' '; $a x= 0x4000000; <STDIN>"
約000MB perl -e "$a=' ';$a x= 0x4000000; undef $a; <STDIN>"
0692デフォルトの名無しさん
2006/04/14(金) 09:07:250693デフォルトの名無しさん
2006/04/14(金) 09:08:460694デフォルトの名無しさん
2006/04/14(金) 11:21:130695デフォルトの名無しさん
2006/04/14(金) 14:05:470696デフォルトの名無しさん
2006/04/14(金) 14:09:170697デフォルトの名無しさん
2006/04/14(金) 14:14:53えっ、そうなんですか?
DBMだとメモリ消費抑えられるの?
0698デフォルトの名無しさん
2006/04/14(金) 16:09:13タスクマネージャ:プロセス
perl.exe 3404K
何もしなくてもインタプリタで普通に3M強は喰うわけだ。
0699デフォルトの名無しさん
2006/04/14(金) 23:59:48sub func_A{my $H=shift();$H={key=>'val_A'}}
sub func_B{my $H=shift();%$H=(key=>'val_B')}
my $H={};
func_A($H);
print Dumper $H; # $H={} 変更されない
func_B($H);
print Dumper $H; # $H={key=>'val_B'} 変更される
上記の理由がよくわからないのですが、どう理解すればいいのでしょう?
0700デフォルトの名無しさん
2006/04/15(土) 00:10:26use Data::Dumper;
sub func_A{my $H=shift(); print "func_A : $H\n"; $H={key=>'val_A'}; print "func_A : $H\n";}
sub func_B{my $H=shift(); print "func_B : $H\n"; %$H=(key=>'val_B'); print "func_B : $H\n";}
my $H={};
print "\$H : $H\n";
func_A($H);
print Dumper $H;
func_B($H);
print Dumper $H;
これで実行してみ
0701699
2006/04/15(土) 01:05:36えーっと、これは、つまり、
func_A は、「$H が指す先」でなく、「$H そのもの」を書き換えてるから、
ということですね。
言われて、よ〜く考えると、何とか理解できたのですが、奥が深い。
ありがとうございました。
use Storable;
sub save{
my ($Hash_a,$Hash_b)=@_;
store [$Hash_a,$Hash_b],'file';
}
で保存したハッシュを保存した場合、
sub load_ng{
my($Hash_a,$Hash_b)=@_;
($Hash_a,$Hash_b)=@{retrieve('file')};
}
では間違いで、やはり、
sub load_ok{
my($Hash_a,$Hash_b)=@_;
($Hash_a_file,$Hash_b_file)=@{retrieve('file')};
%$Hash_a=%$Hash_a_file;
%$Hash_b=%$Hash_b_file;
}
と書くしかなさそうですね。
0702デフォルトの名無しさん
2006/04/15(土) 04:13:23http://chewie.f2o.org/etc/perl.png
0703デフォルトの名無しさん
2006/04/15(土) 04:52:510704デフォルトの名無しさん
2006/04/15(土) 09:58:33俺が昨日作ったa.exeなんてファイル開いただけなのに4104Kぐらいつかってたぞ。
0705デフォルトの名無しさん
2006/04/15(土) 11:10:06この生物、後付けしまくったにもほどが… それが6なのか
0706デフォルトの名無しさん
2006/04/15(土) 11:29:09なんで素直に
($hash_1, $hash_b) = load();
sub load {
@{ retrieve('file') };
}
にしないの?
0707699
2006/04/15(土) 12:23:57Thanks!!! おっしゃる通りです。
呼び出し側を load(\%hash1,\%hash2) の形式で書いていたので、
考え方がそっちに固まってました。
ありがとうございました。
0708デフォルトの名無しさん
2006/04/15(土) 13:11:33Storableでfreezeしてシリアライズしてからというのが定石ですか?
0709デフォルトの名無しさん
2006/04/15(土) 13:30:40win2000pro,IE6SP1,fully patch,perl 5.8.7
かなりマイナーな質問なのですが、
ローカルに保存したhtmlファイル中に
<html><body>
<script language="PerlScript">
$window->document->write("heho!");
</script>
<body></html>
と書いています。これをIEで読み込めばちゃんと動きました。
次に上記のファイルの先頭行に
<!-- saved from url=(0005)http://a -->
を付け足します。
IEでは、htmlファイル中に上記の一行があれば
そのhtmlをマイコンピュータゾーンではなくて
インターネットゾーンのセキュリティで実行できます。
この状態でhtmlをIEで開いてもperl部分は動きません。
PerlScriptのデフォルト挙動では、セキュリティのためか、
ローカルのhtmlファイル中では動くが、ネット上のものについては
動作しないようになっているようです。
IEがhtmlファイルをネットにあるものと認識しているため
動かないのだと思います。
0710デフォルトの名無しさん
2006/04/15(土) 13:31:25それに従いレジストリエディタで
HKEY_LOCAL_MACHINE\SOFTWARE\ActiveState\PerlScript\1.0
の
REG_DWORD: EnabledZones = 0x0010 (default)
の値を0x0020(Enable Internet)
に書き換えました。
これでPerlScriptのセキュリティモードがインターネットゾーン向けに
なったと思ったら、まだ動きません。
先日PerlScriptなるものがあると知り、
しかもJavaScriptとほぼ互換性チックな使い方ができる知り、
セキュリティリスクについて実験しようと思ったのです。
例えば、どこかのHPで、
html中にPerlScriptで
'format c:';
なんてやられたらどうなってしまうんだと。
そこでローカル上でネット上にhtmlがあるかのように
振舞わせようとしたのですが、頓挫しました。
どこがおかしいんだろう。
長文失礼しました。
0711デフォルトの名無しさん
2006/04/15(土) 14:02:58定石かどうか知らないが、DB に限らずスカラーにして保存する場合、
おれもそれしか思いつかないなぁ。
Data::Dumper でも同様のことができると思うが、Storable の方が効率がいいしね。
0712デフォルトの名無しさん
2006/04/15(土) 14:19:540713デフォルトの名無しさん
2006/04/15(土) 15:06:52やってる事は同じだけど怠惰な人の為に。
http://perldoc.jp/docs/modules/MLDBM-2.01/MLDBM.pod
http://search.cpan.org/~timb/DBI-1.50/lib/DBD/DBM.pm
http://search.cpan.org/~neely/Data-Serializer-0.36/
0714デフォルトの名無しさん
2006/04/15(土) 16:10:250715デフォルトの名無しさん
2006/04/15(土) 16:13:10メモリの許す限り。
0716デフォルトの名無しさん
2006/04/15(土) 16:13:360717デフォルトの名無しさん
2006/04/15(土) 16:20:01これはGOODです!
0718デフォルトの名無しさん
2006/04/15(土) 16:49:30他の変数に代入した場合に何所まで複製されるかがこんがらがってる。
Devel::Peekで色々やってみたら実装レベルで考えると文字列が特別扱いされてるようだけれど…
$fuga = $hoge = {};
の場合は、RVが複製され、その際ポインタが値として複製される。
$fuga = $hoge = 'piyo';
では、PV自体と、一つの単位である文字列の中身の複製が行われる。
Perlでは数値も文字列もリファレンスも等しくdatumであって、
その単位に応じて複製されている、と考えれば良いのかな。
0719デフォルトの名無しさん
2006/04/15(土) 16:57:30XS周り読むと分かるよ。
別に複製が特別な作業してるんじゃなくて、
RVの代入はRVの代入=ポインタ複製。
PVの代入はPVの代入=文字列複製。
SVの先にある構造体が何かによるだけ。
0720デフォルトの名無しさん
2006/04/15(土) 17:25:05確かにそれぞれ別のデータ構造なんだから特別扱いというのは変でしたね…
ちょっと文字列が参照として表わされた言語に慣れちゃったようで
$fuga = $hoge = 'piyo';
$hoge =~ s/piyo/hage/;
すると$fugaも変わってしまうような感覚に囚われてしまったもので(´・ω・)
perlgutsなりperlの実装なり読んで来る事にします。サンクス
0721デフォルトの名無しさん
2006/04/16(日) 01:17:41perlスクリプトを実行させると、ウインドウタイトルが
「C:\Perl\bin\perl.exe」、ウインドウ クラス名が「ConsoleWindowClass」
となりますが、このウインドウタイトルを変更する方法ってないでしょうか?
いくつも実行するとわからなくなるので、ウインドウタイトルにスクリプト名
を添付したいのです。
0722デフォルトの名無しさん
2006/04/16(日) 01:53:110723デフォルトの名無しさん
2006/04/16(日) 02:06:42$CONSOLE = Win32::Console->new;
$CONSOLE->Title('たいとる');
0724デフォルトの名無しさん
2006/04/16(日) 02:13:20さすがですね。
どうもありがとう!
0725デフォルトの名無しさん
2006/04/16(日) 03:55:53ってすると
SCALAR(0x1625088)
って表示されるんだけど
これって何が起こっているの?
0726デフォルトの名無しさん
2006/04/16(日) 04:02:28perl -MO=Deparse -e 'print \n;'
print \'n';
-e syntax OK
barewordなnが文字列と解釈されて、そのリファレンスを取っている。
0727デフォルトの名無しさん
2006/04/16(日) 04:09:50$con = Win32::Console->new();
#現在のウィンドウサイズを表示
print join('::',$con->Window()),"\n";
#ウィンドウサイズを相対指定で変更
$con->Window(0,0,0,20,20);
#変更後のウィンドウサイズを表示
print join('::',$con->Window());
これで
0::0::79::24
0::0::94::44
となることを期待しているのですが
ウィンドウサイズは変更されず
0::0::79::24
0::0::79::24
になってしまいます
なんでー
0728725
2006/04/16(日) 04:37:24barewordって初めて聞いた
剥き出しの、つまり裸のワードってことなんですね
perl独特の言い回しなのかな
ところですみません
nのリファレンスを取っているってどういうこと?
たとえばprint \hとかprint \tとやっても結果は
print \nと同じ
SCALAR(0x1625088)
になるんだけど
hやtのリファレンスをとってもnと同じになるのはどうして?
リファレンスはメモリ上のアドレスだと解釈してるんですけど
リファレンスが取れるということはメモリ上にnの実体が確保されてるんだよね?
ということはこれをデリファレンスはできないの?
変数のデリファレンスはできるけど、barewordのデリファレンスはどうやるんだろ?
0729デフォルトの名無しさん
NGNGなにかnの部分を特別扱いして考えてないか?それは文字列そのものだよ。
そのリファレンスそのものを文字列に変換したもの"SCALAR(0x1625088)"
に含まれているのは型とメモリ上のアドレスだから、それを見て比較するのは筋違い。
> リファレンスが取れるということはメモリ上にnの実体が確保されてるんだよね?
それはその通り。リファレンスの指す先が文字列"n"の実体。
> ということはこれをデリファレンスはできないの?
一旦変数に入れないなら ${\n}
barewordはuse strictしてればエラー扱いだけどね。-wでも警告を吐くし。
Perlの暗黒面だろうねぇ…
0730デフォルトの名無しさん
2006/04/16(日) 07:33:20>bareword
他の言語では構文エラーと呼ぶからね
>print \hとかprint \tとやっても結果はprint \nと同じ
同じスクリプト中に複数書いたら728の想像通り別の値になるはずだけど?
print \n; print \t;
0731デフォルトの名無しさん
2006/04/16(日) 11:28:20と一言書けば済む話じゃないのか?
ちなみに間違えてやってることは
$s = "n";
print \$s;
0732デフォルトの名無しさん
2006/04/16(日) 14:57:37確かにそうだけど、話は広がったほうが面白い。
0733デフォルトの名無しさん
2006/04/16(日) 15:45:13いや、sh使いには普通かと>bareword
0734デフォルトの名無しさん
2006/04/16(日) 15:50:45> print "\n"; だろ
use strict;だろ。
0735デフォルトの名無しさん
2006/04/16(日) 17:10:00ttp://pugs.blogs.com/audrey/2006/04/post.html
0736デフォルトの名無しさん
2006/04/16(日) 17:20:20パッケージについての質問です。
コマンドプロンプトでperlを起動し、プログラム中で自作パッケージを
使用しようとしました。
長いファイル名の場合、読み込みに失敗するのですが、
パッケージ名を変えずに読み込むことはできないでしょうか?
ちなみに、短いパッケージ名だと読み込みができました。
0737デフォルトの名無しさん
2006/04/16(日) 17:48:060738デフォルトの名無しさん
2006/04/16(日) 20:27:21これは正常に動きました。
jpeg縦横比を判別し、横のほうが長い場合、90度回転させてからリサイズしたいのですがどのようにすれば回転させることが出来ますでしょうか?
Windows,ActivePerl 5.8を利用しています。よろしくお願いいたします。
0739デフォルトの名無しさん
2006/04/16(日) 20:48:50rotate
0740デフォルトの名無しさん
2006/04/16(日) 20:58:060741デフォルトの名無しさん
2006/04/16(日) 21:04:19ベクターあたりで適当なコマンドラインツール拾って
system とかで呼べばできるんじゃね
0742デフォルトの名無しさん
2006/04/16(日) 21:04:540743デフォルトの名無しさん
2006/04/16(日) 21:14:200744デフォルトの名無しさん
2006/04/16(日) 21:17:56あと、グーグルで調べていくとドツボにはまる。
今のバージョンに全然該当しないのばかりが検索の上位
0745デフォルトの名無しさん
2006/04/16(日) 21:25:31あとは本人がドキュメントの回転に関する項読めばいいだけだろ?
それとも比にとらわれて if( $h < $w ) という条件式に気付かなかったのか?
0746デフォルトの名無しさん
2006/04/16(日) 21:44:47回転を行なうソフトのソースを読んで、それを自分で実装すればいいよ。
0747デフォルトの名無しさん
2006/04/16(日) 22:55:37Bribes de Perl にあるし >>743 だけで使えるようになるよ。
http://www.bribes.org/perl/ppm
http://www.ss.iij4u.or.jp/~somali/web/_ppm.html#rep_about
0748740
2006/04/16(日) 23:07:06resize2jpegとか言うのつかってsystemでコマンド送って一括でできるようにはしてます。
もちろん比率を受け取ってリサイズするので>>745の条件式は使ってます。
ImageMagickに変わる何かを探してみます。
0749デフォルトの名無しさん
2006/04/16(日) 23:09:34いま書いてるスクリプト中で以下のようなコードがあります。
----------------------------------------------------
open FH1,"<$hoge" or die $!;
print "ループ前\n",Dumper(@main::pkgs),"\n";
while(<FH1>){
print "ループ中\n",Dumper(@main::pkgs),"\n";
----------------------------------------------------
ここでwhile分の中とあとでなぜか配列中のひとつの
値が書き換わってしまいます。しかしループ処理がない
場合は書き換わりません。
この書き換わる理由としてどういったことが考えられるでしょうか?
あと都合によりソース全体は晒せませんです。スマソ
0750デフォルトの名無しさん
2006/04/16(日) 23:35:48> この書き換わる理由としてどういったことが考えられるでしょうか?
それは、配列のどの値がどのように書き変わったかに大きく依存する。
0751デフォルトの名無しさん
2006/04/16(日) 23:52:57適当にインストールして適当にPATH通せば使えたような
0752デフォルトの名無しさん
2006/04/17(月) 00:02:57友蔵心の俳句
0753デフォルトの名無しさん
2006/04/17(月) 03:57:20おまいこいつだろ
http://pc8.2ch.net/test/read.cgi/php/1141195171/687-695
http://pc8.2ch.net/test/read.cgi/tech/1141742901/744
0754デフォルトの名無しさん
2006/04/17(月) 05:07:20わしはjpegtranちゅうのを使っているが。
0755デフォルトの名無しさん
2006/04/17(月) 08:03:460756デフォルトの名無しさん
2006/04/17(月) 08:23:23そうだな
0757デフォルトの名無しさん
2006/04/17(月) 09:34:58激しく同意なんだが実際問題としてはそんなのがそこらにうようよいるんだ。
何かっつーとインタプリタやコンパイラがバグってるって言い出す始末。
自分の考えやコードは決して疑わないの。
いいから黙ってそのエラーメッセージをGoogleの検索ボックスにコピペして
Enterを押せと100万回言っても、まず人や掲示板に聞き、自説を振りかざす。
そんな自説を延々と掲示板に描いてる暇があっt(ry
0758デフォルトの名無しさん
2006/04/17(月) 10:43:24⊂/ ノ )
/ /ノV
≡≡≡≡し'⌒∪
┴┴'┴┴'
イナバウアーーーーーーーーーー!!!!
/⌒`ヽ
二 と(、A , ) つ < イナバウアー
三 V ̄Vノ( ゝ
二 └=ヲ└=ヲ
0759デフォルトの名無しさん
2006/04/17(月) 11:09:30こういうやり取りこそが2ちゃんなんだな。
そして全てを達観してる俺のような奴が必ず現われるのも2ちゃんなんだな。
0760デフォルトの名無しさん
2006/04/17(月) 11:18:24_,,:-ー''" ̄ ̄ ̄ `ヽ、
,r'" `ヽ.
__,,::r'7" ::. ヽ_
゙l | :: ゙) 7
| ヽ`l :: /ノ )
.| ヾミ,l _;;-==ェ;、 ,,,,,,,,,,,,,,,_ ヒ-彡|
〉"l,_l "-ー:ェェヮ;::) f';;_-ェェ-ニ ゙レr-{ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ヽ"::::''  ̄´.::;i, i `'' ̄ r';' } | こういうやり取りこそが2ちゃんなんだな。
. ゙N l ::. ....:;イ;:' l 、 ,l,フ ノ | そして「全てを達観してる俺のような奴」を
. |_i"ヽ;:...:::/ ゙'''=-='''´`ヽ. /i l" < 達観してる俺のような奴が必ず現われるのも2ちゃんなんだな。
.| ::゙l ::´~===' '===''` ,il" .|'". |
.{ ::| 、 :: `::=====::" , il | \________
/ト、 :|. ゙l;: ,i' ,l' ノト、
/ .| \ゝ、゙l;: ,,/;;,ノ;r'" :| \
'" | `''-、`'ー--─'";;-'''" ,| \_
0761デフォルトの名無しさん
2006/04/17(月) 12:25:080762デフォルトの名無しさん
2006/04/17(月) 12:39:540763デフォルトの名無しさん
2006/04/17(月) 13:31:48ちゃんと育毛しろよ
0764デフォルトの名無しさん
2006/04/17(月) 16:35:29http://www.xxxx.com/xx.cgi?001&$email$
0765デフォルトの名無しさん
2006/04/17(月) 16:41:22C++系の様にprivateとか
0766デフォルトの名無しさん
NGNG日本語でおk
>>765
構文はないが手段はいろいろある。このモジュールとか使い勝手よさそうな感じ。
ttp://search.cpan.org/~miyagawa/Attribute-Protected-0.03/lib/Attribute/Protected.pm
0767デフォルトの名無しさん
2006/04/17(月) 22:45:50構文は無いので、普通(?)はprivateメソッド名の頭をアンダーバーにする。
全然privateじゃないけど、気持ちprivateなつもりになれる。
他の人にもそれを期待する。その程度。
0769デフォルトの名無しさん
2006/04/18(火) 02:06:52Data::Selializer等を使えば解決出来そうですがもっとお手軽な方法は無いでしょうか。
Storableのthawのように期待するデータでない場合dieするようなメソッドを望んでいます。
0770デフォルトの名無しさん
2006/04/18(火) 10:22:07てか、何故Storableじゃダメかね?
0771デフォルトの名無しさん
2006/04/18(火) 16:44:15便利なので。で実運用でStrableに替えようと思っていても面倒くさくてそのままな事もしばしば・・・
クリティカルな物で無い場合効率優先でいってしまいます。
そういえばCGI::Sessionはどうしてるのかなと見てみたらSafe.pmなるものを使っているようなので
ちょっと調べてみます。
0772デフォルトの名無しさん
2006/04/18(火) 20:42:470773デフォルトの名無しさん
2006/04/18(火) 21:21:59my $hoge = do("fugafuga.dump")で取り込めるぞ
0774デフォルトの名無しさん
2006/04/19(水) 00:52:55いやそれ実質evalだからw
まぁセキュリティには影響ないけどな。
evalが嫌ならdoもだめちゃう?
0775デフォルトの名無しさん
2006/04/19(水) 01:28:38('(゚∀゚∩_ おいらをどこかのスレに送って!
/ヽ 〈/\ お別れの時にはお土産を持たせてね!
/| ̄  ̄ ̄|.\/
|dexiosu|/
 ̄ ̄ ̄
現在の所持品:たばこ・ライター・コーヒー・ブラックブラック・枕・ケータイ電話
睡眠薬・聖教新聞 ・ダッチワイフ・外付けSCSI340MHDD・ネットランナー4月号
TYG02・小嶋進社長・ペプシNEX・モツ煮・ヌルポ・伊予柑・寒いギャグ ・7年ものキムチ
二年前購入した牛乳・阪神電気鉄道株・バイブレーター ・失くした思い出・ワイアレスマウス
GSX250FX・ポーションの空ビン・ラクダ本
0776デフォルトの名無しさん
2006/04/19(水) 14:19:39エクセルで処理できないくらいの行数のデータをperlを使ってエクセル
のようにソートしたいのですが、どうしたらよいのかわかりません。
3列で多数行のファイルなのですが、
一列目を第一優先に昇順で並べ替えて、かつ3列目を第二優先に昇順で並び
替えるというように、優先順位をつけるやり方がわかりません。
0777デフォルトの名無しさん
2006/04/19(水) 14:24:49そういう処理をする比較関数を作るとイイよ!!
0778デフォルトの名無しさん
2006/04/19(水) 14:47:38一つの項目で比較関数を使うやり方は略することにして(基本だから調べてくれ)、
(f($a[0]) cmp f($b[0])) or (g($a[2]) cmp g($b[2]))
というふうに、比較を優先順にorでつなげる。
0779デフォルトの名無しさん
2006/04/19(水) 15:44:46perl -e 'chomp;@d=split/,/;push(@x,\@d);END{for(sort{$a->[0]cmp$b->[0]||$a->[1]cmp$b->[1]}@x){print join(",",@$_)."\n"}}' file.csv
0780デフォルトの名無しさん
2006/04/19(水) 20:40:130781デフォルトの名無しさん
2006/04/19(水) 21:46:32但し数式もそのままの文字列として解釈される諸刃の剣。
0782デフォルトの名無しさん
2006/04/19(水) 22:09:16OpenOfficeもデフォルトの設定がそうなってて設定がどこにあるのか探すのが面倒だった。
0783デフォルトの名無しさん
2006/04/19(水) 22:33:04ってか CSV読み込んだ時点でもう変わっちゃってるからどうしようもねぇ
0784デフォルトの名無しさん
2006/04/20(木) 08:42:520785デフォルトの名無しさん
2006/04/20(木) 09:30:08どうしたらいいんですか?
0786デフォルトの名無しさん
2006/04/20(木) 09:36:120787デフォルトの名無しさん
2006/04/20(木) 09:55:14だからどうやるんだ?
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
2006/04/20(木) 10:05:40氏ねよチンカス。
0790デフォルトの名無しさん
NGNG$target = 'a';
@chars = unpack('C*', $str);
foreach $char (@chars) { $count{$char}++; }
print $count{unpack('C', $target)};
お前が死ねよマンカスw
0791デフォルトの名無しさん
2006/04/20(木) 10:16:030792デフォルトの名無しさん
NGNGwhile($str =~ /(.)/gs){ $count{$1}++; }
print $count{$target};
0793デフォルトの名無しさん
NGNGprint $count{$target};
遅くなったり速くなったり
0794デフォルトの名無しさん
2006/04/20(木) 11:29:02print ($str =~ y/a/a/);
じゃだめなのか?
0795デフォルトの名無しさん
2006/04/20(木) 12:36:49++$count if $hoge[$i] eq $target;
}
C言語みたいな…
0796デフォルトの名無しさん
2006/04/20(木) 18:30:47念のために書き直すと
my $str = "aaabbbccc";
my $count = ( $str =~ tr/a/a/ );
print $count;
だが>>788のようなウンコちゃんは目で数えやがれ
0797デフォルトの名無しさん
2006/04/20(木) 18:38:18> perldoc -q count
とする。
0798デフォルトの名無しさん
2006/04/20(木) 18:39:38ttp://search.cpan.org/~yappo/Acme-Oppai/
0799デフォルトの名無しさん
NGNGあ?呼んだかクソガキ
0800デフォルトの名無しさん
2006/04/20(木) 18:51:23(^( ゚∀゚)^) ハ_ハ
) / ('(゚∀゚∩ みんな仲良く
(_ノ_ノ ヽ 〈 みんなPerl仲間
ヽヽ_)
> だが>>788のようなウンコちゃんは目で数えやがれ
こんなひどいこと書いちゃダメだよ。
0801デフォルトの名無しさん
2006/04/20(木) 20:27:59一流プログラマーのオレはこのようにする
$str="aaabbbccc";
$mozisuu=&str_mozisuu($str,"a");
print "$mozisuu";
sub str_mozisuu{
local($strlen1,$strlen2);
local($str1)=$_[0];
local($str2);
local($aaa);
$str2=$str1;
$str1=~s/$_[1]//g;
$strlen1=length($str1);
$strlen2=length($str2);
$aaa=$strlen2-$strlen1;
if(length($_[1])>=2){
$aaa=$aaa/2;
}
return($aaa);
}
0802デフォルトの名無しさん
2006/04/20(木) 20:32:470803デフォルトの名無しさん
2006/04/20(木) 20:49:150804デフォルトの名無しさん
2006/04/20(木) 20:52:41演算子の前後に空白を入れない一流プログラマー
use strictを知らない一流プログラマー
意味不明な変数名をつける一流プログラマー
localしまくる一流プログラマー
無駄に変数を作る一流プログラマー
二項演算子を知らない一流プログラマー
バグったままうpする一流プログラマー
KENT臭のする一流プログラマー
0805デフォルトの名無しさん
2006/04/20(木) 21:04:320806デフォルトの名無しさん
2006/04/20(木) 21:07:31お前が一流かしらないが美しくないから却下だ
0807デフォルトの名無しさん
2006/04/20(木) 21:18:120808デフォルトの名無しさん
2006/04/20(木) 22:04:08http://koders.com/
0809807
2006/04/21(金) 01:45:13use strict;
use warnings;
require Exporter;
use Carp qw/croak/;
use Fcntl qw/:flock/;
use Symbol qw/qualify_to_ref/;
our $VERSION = '0.01';
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(sysopen);
sub sysopen (*$$;$) {
my ($fh, $name, $mode, $perms) = @_;
$fh = qualify_to_ref($fh, caller);
$perms ? CORE::sysopen $fh, $name, $mode, $perms
: CORE::sysopen $fh, $name, $mode
or croak "$!\n";
flock $fh, LOCK_EX or croak "$!\n";
seek $fh, 0, 0 or croak "$!\n";
truncate $fh, 0 or croak "$!\n";
$_[0] = $fh;
}
1;
# 書いてみたけど、あってるかどうか自信ない。誰か詳しい奴いない?
0811デフォルトの名無しさん
2006/04/21(金) 06:36:58文字数のカウントは >>796 の tr でやる方法が
ラクダ本かcookbook にも載ってたね。
0812デフォルトの名無しさん
2006/04/21(金) 09:49:58ウルトラダーティな窮極メソッドとして語り継がれているっすね。
これぞバッドノウハウ!! (ヒステリックな哄笑)
0813デフォルトの名無しさん
2006/04/21(金) 10:39:50my $s = 'aaaabbbcccababadfababa';
my $i = 0;
$i++ while ($s =~ /a/g);
print "$i\n";
0814デフォルトの名無しさん
2006/04/21(金) 11:15:11my $str = "aaabbbccc";
my $count = 3;
print "「a」の個数は$count個です.";
0815デフォルトの名無しさん
2006/04/21(金) 11:38:140816デフォルトの名無しさん
2006/04/21(金) 12:05:27コマンドを打ち込んでから、何か聞いてくる対話型のコマンドを実行したいのだが、
どうすればいいかさっぱり分かりません。
普通のコマンドならreadpipeやexcecでできるのですが。
教えてもらえないでしょうか?
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
2006/04/21(金) 20:25:023000とかを3,000という風に
コンマを付けてくれるモジュールみたいなの
ありませんでしょうか
0819デフォルトの名無しさん
2006/04/21(金) 20:26:40赤ラクダ本にでてるよ〜〜
0820デフォルトの名無しさん
2006/04/21(金) 20:30:35my $num = $_[0];
$num = reverse $num;
$num =~ s/(\d{3})(?=\d)(?!\d*\.)/$1,/g;
$num = reverse $num;
return $num
}
0821デフォルトの名無しさん
2006/04/21(金) 20:41:13モジュールじゃないけどな
ttp://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
0822デフォルトの名無しさん
2006/04/21(金) 22:05:21激しく感謝です
ありがとうございました
0823818
2006/04/21(金) 23:01:39下記のコードを書いたんですが
これにバグってありますかね?すみません
#!/usr/bin/perl
$num = '1980000';
$num = int $num;
@nums = unpack 'C*', $num;
@nums = reverse @nums;
for ($i = 0; $i < length $num; $i++) {
if($i % 3 == 0 && $i != 0){ push @cnums, 44; }
push @cnums, $nums[$i];
}
@cnums = reverse @cnums;
$cnum = pack 'C*', @cnums;
print $cnum;
__END__
0824818
2006/04/21(金) 23:04:410825デフォルトの名無しさん
2006/04/21(金) 23:34:07どうせ次は少数点で躓くんだしCのコードでも探しな。
0826デフォルトの名無しさん
2006/04/22(土) 00:26:43http://www.yukinko-net.jp/computer/download/downloadlist.htm
0827デフォルトの名無しさん
2006/04/22(土) 15:26:01の受け渡しをしたいのですが、下記のようなサンプルを参考
にして実行するとエラーが出ます。
「program arguments」には何を書けばよいのでしょうか?
#<受け側スクリプト:rece.pl>
$pid = open(README, "program arguments |") or die "Couldn't fork: $!\n";
while (<README>) {
print <README>;
}
close(README) or die "Couldn't close: $!\n";
#<送り側スクリプト:send.pl>
$pid = open(WRITEME, "| program arguments") or die "Couldn't fork: $!\n";
print WRITEME "data\n";
close(WRITEME) or die "Couldn't close: $!\n";
各プログラムは受け側を先に起動して、その中から送り側を
shell起動してもかまいません。
ソケット間通信でやるサンプルも見つけたのですが面倒そうです。
現状はファイルでデータの受け渡しをしています。
環境はwindwos XPで、Active perl v5.8.7です。
0828デフォルトの名無しさん
2006/04/22(土) 15:44:18……(呆れている)
> 「program arguments」には何を書けばよいのでしょうか?
送り側:
受け側スクリプトが起動し、送り側からの通信を受け取るプログラムと通信するため
のプログラムとその引数
受け側:
送り側スクリプトが起動し、受け側への通信を送出するプログラムと通信するため
のプログラムとその引数
0829デフォルトの名無しさん
2006/04/22(土) 15:56:45送り側: print STDOUT "data\n";
受け側: open(READ, "send.pl |");
か
送り側: open(WRITE, "| read.pl"); print WRITE "data\n";
受け側: while (<>) { ... };
かな。
0830デフォルトの名無しさん
2006/04/22(土) 15:57:270831デフォルトの名無しさん
2006/04/22(土) 16:54:010832デフォルトの名無しさん
2006/04/22(土) 17:33:23testingの0.3.10、0.3.12というのはそれぞれ3.1、3.2対応という事
だろうと推測できる。
0833832
2006/04/22(土) 17:36:04ここから非公式だけど3.2対応のEPICが落とせる
(epic-devel.zipってヤツ)
0834デフォルトの名無しさん
2006/04/22(土) 17:38:010835デフォルトの名無しさん
2006/04/22(土) 17:48:37一歩下がって何をしたいのか書け。
0836デフォルトの名無しさん
2006/04/22(土) 20:19:19「それもいやなら、いっそ定数は使わないで済ませた方がましである。
私は定数はあまり使わないが、それで困った事はほとんどない。
どうしてもというときは明示的に
sub DEBUG { 1 }
としている。」
と書いてるんですけど
sub DEBUG { 1 }
って一体何なの?
0837デフォルトの名無しさん
2006/04/22(土) 20:37:17PerlはConst無いから定数を返すサブルーチンで代用、という意味でしょう。
定数を扱うモジュールはあるけど、やってる事は同じ。
0838デフォルトの名無しさん
2006/04/22(土) 20:37:32> と書いてるんですけど
> sub DEBUG { 1 }
> って一体何なの?
"DEBUG" がコンパイル時に "1" に定数化する。
0839デフォルトの名無しさん
2006/04/22(土) 20:38:570840デフォルトの名無しさん
2006/04/22(土) 20:40:15sub DEBUG () { 1 }
じゃね〜の?
0841デフォルトの名無しさん
2006/04/22(土) 20:45:43どういうこと?
0842デフォルトの名無しさん
2006/04/22(土) 20:55:42らくだのコブに聞けや、て優香、本を読んで卓袱台」
0843デフォルトの名無しさん
2006/04/22(土) 21:11:170844デフォルトの名無しさん
2006/04/22(土) 21:16:38ハッシュのキーに使おうとしたときに変な書き方を
強要されることだな。
0845デフォルトの名無しさん
2006/04/22(土) 22:24:05正気か
0846デフォルトの名無しさん
2006/04/22(土) 22:29:38ちょwwwwwwwwwww
0847デフォルトの名無しさん
2006/04/22(土) 22:31:24$format = "$word1 は $word2 です。";
&bbb($format);
sub bbb{
my $test = shift;
foreach(@ar){
($word1,$word2) = split(",",$_);
print $test;
}
}
$format 内で変数を設定とかできますか?
0848デフォルトの名無しさん
2006/04/22(土) 22:35:03sprintfのフォーマットは変数に入れることが出来る。
0849デフォルトの名無しさん
2006/04/22(土) 22:37:21@arがどこから来るか知らないけど。
$format = "%s は %s です。";
&bbb($format);
sub bbb {
my $format = shift;
foreach (@ar) {
printf($format, split(",", $_);
}
}
本当に $format に変数名を入れるなら
$format = '$word1 は $word2 です。'; # <-- シングルクォート
にして、bbb() 内で evalするという方法が無くはないけど。
0850847
2006/04/22(土) 22:48:22ありがとうございます。即決ですね。感謝です。
うまくいきました。
フォーマット内に、コード埋め込んでおいて、
置換させようかなとか、考えていました・・・。
tr/_WORD1_/$word1/ てな感じでwww
0851デフォルトの名無しさん
2006/04/22(土) 23:04:150852デフォルトの名無しさん
2006/04/22(土) 23:40:52$text =~ s/$Substi[$i]//g;
としても置換されることなくそのまま返ってきます。
(この場合は削除ですが)
なおその前後で
print $Substi[$i];
とすると、望む文字が表示されるので
リストが誤っているようではありません。
リストはこういう使い方はできないのですかね。
一応使われているアルファベットの数を数えようという趣旨で作ってます。
0853デフォルトの名無しさん
2006/04/22(土) 23:43:030854デフォルトの名無しさん
2006/04/23(日) 00:03:100855デフォルトの名無しさん
2006/04/23(日) 00:05:11Trimされてるの?
winで試したらどうやら引数の前後のスペース
やタブは無視されてるみたいだったから
unixでもそう?
もしも引数の最後に空白を含む文字列を指定
したかったらどうするの?
perl test.pl aiueo ←ここにスペースを含めたい
0856デフォルトの名無しさん
2006/04/23(日) 00:07:30Dan?
naoya?
miyagawa?
orre?
0857デフォルトの名無しさん
2006/04/23(日) 00:30:54まずは子プロセスの実行完了ステータスを、親プロセスに
通知したかったのです。
下記の記述で動作しました。。
<親プロセス:rec.pl>
if( open (CH, "perl send.pl |") ){
print <CH>;
}
<子プロセス:send.pl>
・・処理実行・・
print "処理終了";
用途はWEBから大きなデータを取ってくるのに、親プロセスから
分割ダウンロードする子プロセスを複数起動して、処理を高速化
することです。
ところがここで、もうひとつ問題が発生。
上記の方法では子プロセスの処理が終了しないと親は次に進めま
せん。
perlでは子プロセスに非同期処理実行をさせることはできないの
でしょうか?
0858デフォルトの名無しさん
2006/04/23(日) 01:34:22perl test.pl "aiueo "
0859デフォルトの名無しさん
2006/04/23(日) 02:48:07>子プロセスの処理が終了しないと親は次に進めません
子が終わる前に親が終わったら子はゾンビになるよ。
最終的にはwaitするって。
パイプつかってるからそこでブロックしちゃうんじゃ?
0860デフォルトの名無しさん
2006/04/23(日) 04:11:05普通にできるはず。原因は他にあると思われ。
---
my @a = qw(a b c);
my $text = 'a1 2 a3';
$text =~ s/$a[0]//g;
print $text; # 1 2 3
0861デフォルトの名無しさん
2006/04/23(日) 04:17:47ブロックの中でmy使ってるってオチじゃないかな
0862デフォルトの名無しさん
2006/04/23(日) 04:23:45子プロセス作る方法でもいいけど、子プロセスもperlにするなら
スレッドという方法も。
---
use threads;
main();
sub main {
my $thr = threads->new( \&thr );
# 色々な処理
$thr->join;
print "in main: 処理終了\n";
}
sub thr {
# 色々な処理
print "in thr: 処理終了\n";
}
0863デフォルトの名無しさん
2006/04/23(日) 04:28:56嘘つくなよ。子を残して親が死んだら、initがその子の親になる。
ゾンビになるのは子が死んでるのに生きてる親がwaitしない場合。
>>857
ブロックするのは用意できてないファイルハンドルに対してreadしてるから。
readできるファイルハンドルをselectで調べてからsysreadするようにすれば
ブロックしない。
0864デフォルトの名無しさん
2006/04/23(日) 07:55:44> 用途はWEBから大きなデータを取ってくるのに、親プロセスから
> 分割ダウンロードする子プロセスを複数起動して、処理を高速化
> することです。
非同期処理は、スレッドを使うなり、socketで通信路をopenして、
それをselectでmultiplexするなりして単一プロセスでも実行できる。
複数子プロセスを使うのなら、forkして(さらに別プログラムならexecして)行なう。
0865デフォルトの名無しさん
2006/04/23(日) 08:11:120866デフォルトの名無しさん
2006/04/23(日) 10:38:20http://www.google.com/Top/Computers/Programming/Languages/
ここにでている言語の、数字別にソートした
一覧を作りたいんだけど、どうすればいい?
0867デフォルトの名無しさん
2006/04/23(日) 10:49:23言語と数字を切り分けて配列に入れて、数字でソートする。
0868デフォルトの名無しさん
2006/04/23(日) 10:54:11ちょっとやってみて
そんで、結果をどっかにアップして。
結果だけ見たいから。
0869デフォルトの名無しさん
2006/04/23(日) 11:15:12/::_, -‐─ ‐-、_::::`‐-、
. /::/ `‐i:::::::ヽ
|:./ ',ミ::::::}
}:l lミ::::::l'
_!,'_ ,..-- ..、 __ !::::::::|
lヽ! `i ィェッ、.i'゙"i';;;ィェッ;,`i===,、
',.l ゙、゙゙゙゙゙,ノ ヽ_"゙゙ ゙/ r;;;;;;/
i|  ̄,' ::::ヽ `''" .,{;;;;;;/
',. ゙`-"゛'' ,};;;;;;'
! ,_、,___, /;;;/"
_,` 、 /;;r'
_,, -─ '';;;;;;;;;| 、ヽ,,____,,-‐';;;;;;;;;;;\_
;;;;;;;;;;;;;;;;;;;;;;;;;;| \ _//;;;;;;;;;;;;;;;`ヽ、
;;;;;;;;;;;;;;;;;;;;;;;;;;| r‐ィt- '" /;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;| /,彡彡} ,!;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ツレマスカ [Vladimir Tzlemazka]
(1915-1997 ロシア)
0870デフォルトの名無しさん
2006/04/23(日) 11:31:120871デフォルトの名無しさん
2006/04/23(日) 12:46:520872デフォルトの名無しさん
2006/04/23(日) 13:10:050873デフォルトの名無しさん
2006/04/23(日) 14:35:58こんなのでいい?
ttp://homepage3.nifty.com/catfood/up/src/up4748.txt
ページを取得
正規表現を使って言語をキー、数字を値としたハッシュを作成
ハッシュの値でソートして出力
0874デフォルトの名無しさん
2006/04/23(日) 16:35:440875デフォルトの名無しさん
2006/04/23(日) 18:22:14だめ
HTTPにして。
急いで。
0876デフォルトの名無しさん
2006/04/23(日) 18:34:15はやくして
0877デフォルトの名無しさん
2006/04/23(日) 18:36:400878デフォルトの名無しさん
2006/04/23(日) 18:39:49の動作がWindowsとUnix系OSで結果違いますが、
Unix系にそろえることってできますか?
(Windowsだと改行が余計に出力される)
0879デフォルトの名無しさん
2006/04/23(日) 18:51:45「HTTPにして」って何のこと?
まさか、>>873が読めないから先頭をhttp://〜にして
貼り直してって言ってる …んじゃないよな?まさかね…
0880デフォルトの名無しさん
2006/04/23(日) 18:55:02人に時間と手間をかけさせようとしてるだけ。
華麗にスルーが一番。
0881デフォルトの名無しさん
2006/04/23(日) 19:03:14htmlって言いたいんだろうな。
0882デフォルトの名無しさん
2006/04/23(日) 19:14:220883デフォルトの名無しさん
2006/04/23(日) 19:19:03binmdoe( STDOUT );
print "hello\n";
0884デフォルトの名無しさん
2006/04/23(日) 19:19:330885デフォルトの名無しさん
2006/04/23(日) 20:09:08これ流行りそうだな
0886デフォルトの名無しさん
2006/04/23(日) 20:14:32HTTPにして
0887デフォルトの名無しさん
2006/04/23(日) 20:25:23できない。
Windowsの標準コマンドシェルはプロンプト表示前に改行を表示するので、
空行が1つ余分に出力されているように見える。
実際にperlが出力している改行の数は、どちらも同じ。
0888デフォルトの名無しさん
2006/04/23(日) 20:29:00PerlでWin32のプログラムのように
ウィンドウ(コンソール?)を表示させずに起動する事は出来ますか?
宜しくお願いします
0889デフォルトの名無しさん
2006/04/23(日) 20:31:190890デフォルトの名無しさん
2006/04/23(日) 20:44:23最後に合計得点を表示するプログラムを作りなさい
という課題を教えて欲しいです・・・
0891デフォルトの名無しさん
2006/04/23(日) 20:54:45金額は?
0892デフォルトの名無しさん
2006/04/23(日) 20:56:16課題:
乱数を用いて生成する四則演算の問題を5つユーザーに答えさせて、
最後に合計得点を表示するプログラムを作りなさい
0893デフォルトの名無しさん
2006/04/23(日) 21:01:09という課題に対する解答を教えて欲しいですでした。
すみません。
0894デフォルトの名無しさん
2006/04/23(日) 21:20:14srand;
my @op = ('+', '-', '*', '/');
my $o = 0;
my $x = 0;
my $secnum = 5;
for (my $i=0; $i<$secnum; ++$i) {
$func = sprintf("%d %s %d", int(rand(9))+1, $op[rand(@op)], int(rand(9))+1);
print "$func = ";
$ans = <STDIN>;
chomp($ans);
$_ = eval($func);
if ($_ eq $ans) {
print " true\n";
$o++;
} else {
print " false\n";
$x++;
}
}
print "\nRight answer: $o, Wrong answer: $x\n";
お礼は30万円でいいよ。
0895デフォルトの名無しさん
2006/04/23(日) 21:27:15振り込んでおいた。
俺の口座番号に。
0896デフォルトの名無しさん
2006/04/23(日) 21:29:27cygwin perlで試してみましたが、
だめぽでした。
>>887
なるほど。
どうもありがうございました
0897デフォルトの名無しさん
2006/04/23(日) 21:32:17なんでcygwinなんぞ…
0898デフォルトの名無しさん
2006/04/23(日) 21:34:35すげぇぇ!!!
本当にありがとうございました。
30万円分の感謝の気持ちを送ります。
0899デフォルトの名無しさん
2006/04/23(日) 21:35:54がやけに可愛い。
0900デフォルトの名無しさん
2006/04/23(日) 21:40:56CygwinPerlとActivePerlはどちらも長所と短所がある
真のPerlerなら両方つかいこなすのがベストだとわかるはず
0901デフォルトの名無しさん
2006/04/23(日) 21:41:20この改行問題が解決するならactive perlでもいいんですが。。
というか、これはactive perlの問題かと思って
cygwin perlをインスコ仕直した。けどcygwinでも同じだった罠。
0902デフォルトの名無しさん
2006/04/23(日) 21:48:49↑ ↑ ↑ ↑
長 次 三 長
女 女 女 男
0903デフォルトの名無しさん
2006/04/23(日) 21:53:36むっ?binmodeすればUNIXと同じにならない?
Windowsならbinmodeしない場合、printに渡した文字列中の\nを\r\nに置き換える
という小さな親切をしてくれるんだが、つまり、"hello\n"なら"hello\r\n"に置き換え。
で、binmodeすれば、その処理を行わないからUNIXと同じになるはずだけど。
0904デフォルトの名無しさん
2006/04/23(日) 21:54:510905デフォルトの名無しさん
2006/04/23(日) 22:00:190906デフォルトの名無しさん
NGNGそもそも質問を勘違いしていると思う。もっと極端な例で書けば
C:\..>perl -e "print q|hoge|"
hogeC:\..>
となって欲しいってことかと。887の言うとおりシェルの問題だよね。
0907デフォルトの名無しさん
2006/04/23(日) 22:01:150908デフォルトの名無しさん
2006/04/23(日) 22:02:010909デフォルトの名無しさん
2006/04/23(日) 22:12:54えっ?そんな問題なの?cygwinのbashでもつかえよ
0910デフォルトの名無しさん
2006/04/23(日) 22:29:49天才ですね
本当にありがとうございます
ローカルに保存させていただきました
0911デフォルトの名無しさん
2006/04/23(日) 22:30:54これ、なんでしょうね?
0912デフォルトの名無しさん
2006/04/23(日) 22:47:35cygwinの環境変数がこんな感じになってました。
PS1="\n\$"
ごめんなさい、とほほ。
0913デフォルトの名無しさん
2006/04/24(月) 05:04:33共有メモリって使えるのでしょうか?
PerlでIPCとかセマフォとか解説してるサイトってないでしょうかね
0914デフォルトの名無しさん
2006/04/24(月) 05:27:10> use Strict;
に誰も突っ込まないの?
0915デフォルトの名無しさん
2006/04/24(月) 06:23:150916デフォルトの名無しさん
2006/04/24(月) 06:35:430917デフォルトの名無しさん
2006/04/24(月) 06:41:47そのApacheが動いているLinuxのユーザーのパスワードかえる手段ってありますかね?
CGIでもサーブレットでもシェルコマンドを実行することはできますが、
Apache自体のプロセスがrootではなくApacheユーザーで実行されているので、
Linux上のユーザーのパスワードを変更するのはroot権限を持たないといけないので
やっぱり無理?
0918デフォルトの名無しさん
2006/04/24(月) 08:31:06> やっぱり無理?
いや
0919デフォルトの名無しさん
2006/04/24(月) 08:32:34> PerlでIPCとかセマフォとか解説してるサイトってないでしょうかね
Perlをインストールすると一緒にインストールされるドキュメントにあるから、
それを公開しているサイトだったらあるんじゃね?
0920デフォルトの名無しさん
2006/04/24(月) 08:47:20あなたがそのlinuxマシンの管理者や適切な権限を持った
ユーザーならどうにでもやりようがある。
あなたがただのユーザーなら馬鹿が設定したwebサーバで
ないかぎり無理
0921デフォルトの名無しさん
2006/04/24(月) 08:55:32Webminでも使ったら?
0922917
2006/04/24(月) 10:32:16その前段階の実験としてApache上からlocalhostにtelnetでログインしてlsを実行する
Expectモジュールを使用したPerlスクリプトを組みました。
コマンドプロンプト上からは./telnet.cgiで問題なく動作するのですが
CGI上からはApacheに↓のように怒られます。どうすればいいのかさっぱり
malformed header from script. Bad header=Trying 127.0.0.1...: expecttel.pl
0923917
2006/04/24(月) 10:32:55#!/usr/bin/perl --
use Expect;
my $timeout = 10; # Grundsatzlich 10 sec
# auf Antwort warten
my $host = "localhost";
my $user = "hoge";
my $passwd = "hoge";
# Telnet starten
$telnet = Expect->spawn("/usr/kerberos/bin/telnet", $host);
# Login
$r = $telnet->expect($timeout, 'login');
die "No 'login' prompt" unless defined $r;
$telnet->send_slow(0, "$user\n");
# Paswort
$r = $telnet->expect($timeout, -re => '[Pp]assword');
die "No 'password' prompt" unless defined $r;
$telnet->send_slow(0, "$passwd\n");
# Unix-Prompt
$r = $telnet->expect($timeout, '$');
die "No unix prompt (\$)" unless defined $r;
$r=$telnet->send_slow(0,"ls\r");
print $r;
$telnet->interact(); # In interaktiven
# Modus schalten
0924デフォルトの名無しさん
2006/04/24(月) 11:14:14CGI なんだから、ちゃんと HTTP ヘッダ (Content-Type: など) やコンテンツを出力しなきゃあかんがな。
0925デフォルトの名無しさん
2006/04/24(月) 11:44:43CGIなんだからちゃんとwebprog板に行けよ
0926デフォルトの名無しさん
2006/04/24(月) 12:11:33俺に言うなよ!
0927917
2006/04/24(月) 17:00:44そこでhogeユーザーのパスワードを変更するPerlスクリプトを作成したのですが、
なぜか
「passwd: all authentication tokens updated successfully.」が延々に無限にでてしまう結果に。
Exceptの扱い方間違っているのでしょうか?
#!/usr/bin/perl --
print "Content-type: text/html\r\n\r\n";
use Expect;
my $timeout = 10; # Grundsatzlich 10 sec
# auf Antwort warten
my $host = "localhost";
my $user = "hoge";
my $passwd = "hoge";
# Telnet starten
$telnet = Expect->spawn("sudo passwd $user");
# auf Antwort warten
my $host = "localhost";
my $user = "hoge";
my $passwd = "hoge";
$telnet = Expect->spawn("sudo passwd $user");
# New password
$r = $telnet->expect($timeout, 'New password: ');
die "No 'password' prompt2" unless defined $r;
$telnet->send_slow(0.2, "$passwd\r");
# Retype password
$r = $telnet->expect($timeout, -re => 'Retype new password: ');
die "No 'password' prompt2" unless defined $r;
$telnet->send_slow(0.3, "$passwd\r");
$telnet->interact();
0928デフォルトの名無しさん
2006/04/24(月) 17:15:570929デフォルトの名無しさん
2006/04/24(月) 17:18:07日本語勉強中のドイツ美少女ハッカーなんだから当たり前
0930デフォルトの名無しさん
2006/04/24(月) 17:26:35my $host = "localhost";
my $user = "hoge";
my $passwd = "hoge";
が2回でてきたり真面目に中身理解して使ってるとは
思えんな...
0931デフォルトの名無しさん
2006/04/24(月) 19:37:52とっさに「書いたのはドイツだ?」というオヤジギャグを書けないようでは君はオヤジ失格だ。
0932デフォルトの名無しさん
2006/04/24(月) 19:38:010933デフォルトの名無しさん
2006/04/24(月) 19:49:09同じスコープ中で二度も my 宣言しなくていいよね。
-w オプション付きなら警告される。
0934デフォルトの名無しさん
2006/04/24(月) 21:04:07まあそういう意味では分ってないんだと思うけど。
0935デフォルトの名無しさん
2006/04/24(月) 21:29:40my はコンパイル時に解釈されるスコープ宣言だから、
ループブロックの内部にスコープを限定する為に使う事は
何の問題も無い。例えば以下のコードは警告を吐かない。
#!/usr/bin/perl -w
use strict;
my $foo = 0;
for (1..5) { $foo = my $bar = $_ }
print $foo;
__END__
0936デフォルトの名無しさん
2006/04/24(月) 21:29:41for (my $i = 0; $i < 10; $i++) {
これもループ内のmy宣言に該当する?
0937デフォルトの名無しさん
2006/04/24(月) 21:39:360938デフォルトの名無しさん
2006/04/24(月) 21:57:281つのプロセスで同時に開けるファイルハンドルの数を教えて下さい
どこかに書いてあったような気がするのですが…
0939デフォルトの名無しさん
2006/04/24(月) 21:59:22しかし外側でその名前を使っていたらなるべく別の名前の方がいい。
機械はちゃんと区別してくれるけど人間はなかなかそうはいかないから
混乱のもと。
0940デフォルトの名無しさん
2006/04/24(月) 22:22:33OSやOSの設定によって違うと思う
0941デフォルトの名無しさん
2006/04/24(月) 23:02:51普通は$_に入ると思いますが、入れ子にした場合はどうなるのでしょう?
foreach(@tmp){
foreach(@tmp2){
#$_は…?
}
}
こんな場合はどうなるんでしょうか?
0942デフォルトの名無しさん
2006/04/24(月) 23:09:48各ループ内で別になる。やってみると分かる。
@tmp のループ内(@tmp2のループの外側)では $_ は @tmp の要素。
@tmp2 のループ内では $_ は @tmp2 の要素。
0943デフォルトの名無しさん
2006/04/24(月) 23:42:13レスありがとうございます☆
なるほどそうなるのですか〜入れ子で使うと最初のが一時的に退避して、
$_には次のforeachの値が入ると。
となると両者を比較する場合は少なくとも最初のforeachは適当な変数に
落としてからになるわけですね。
明日試してみます☆
ありがとうございました(b^-゜)
0944デフォルトの名無しさん
NGNGなんかこの構文を知らなさそうな気がするので補足レスしとこう...
foreach my $outer (@tmp){
foreach my $inner (@tmp2){
# $outer eq $inner
}
}
0945デフォルトの名無しさん
2006/04/25(火) 04:04:34Linux なら kernel の source に書いてあったと思う。
自分の使ってる OS のスレで聞くとよさげ。
0946デフォルトの名無しさん
2006/04/25(火) 05:51:44> 質問です
> 1つのプロセスで同時に開けるファイルハンドルの数を教えて下さい
> どこかに書いてあったような気がするのですが…
わりと動的な値だから、実行時に調べるものです。
0947デフォルトの名無しさん
2006/04/25(火) 12:19:40man 3 getrlimit
0949デフォルトの名無しさん
2006/04/25(火) 14:36:26むかしselect野郎だったので、ちょっと調べてみたんだが、
perlだとこの値を使う必要はないように世界が形作られているな。
関係しそうなFileCacheでさえ、投げやりに調べただけで、自分で設定した
「充分に小さな値」を使っているようだ。
ま、とにかくシステムモジュールFileCacheのPODやソースを見てみると
良いんでは?
あるいは何をしたいのか話してみるとか。
0950デフォルトの名無しさん
2006/04/25(火) 14:52:47最近のperlではこれで簡単に一時ファイルができる
ようなんだけど
これで作られた一時ファイルってどこに作成されるの?
試してみたけどスクリプトと同じディレクトリじゃないみたい
かといってどんなファイル名で作られるかわからないので
findしようもない
0951デフォルトの名無しさん
2006/04/25(火) 14:56:370952デフォルトの名無しさん
2006/04/25(火) 15:10:15> かといってどんなファイル名で作られるかわからないので
> findしようもない
truss or strace は使えない?
0953デフォルトの名無しさん
2006/04/25(火) 15:22:50use File::Temp;
$fh = new File::Temp;
print $fh->filename;
__END__
0954デフォルトの名無しさん
2006/04/25(火) 15:29:080955デフォルトの名無しさん
2006/04/25(火) 15:30:46> truss or strace は使えない?
で、ちょっとやってみたけど、/tmp/PerlIO<ランダム文字列>
というを作って、即unlinkしてファイルシステム上から消してるよ。
0956デフォルトの名無しさん
2006/04/25(火) 15:37:36(i.e. it is unlinked after creation, but held open).
0957デフォルトの名無しさん
2006/04/25(火) 16:15:28UNIX系OSの場合はだいたいはファイルを作った直後にオープンしたまま
ファイル名を unlink (削除) するようになっていると思う。これで
どうなるかというと、ファイルの読み書きは可能だがファイル名が
存在しない状態になる。ファイルをクローズしたとき(あるいはオープン
しているプロセスが終了した時)にディスク上の領域が開放される。
0958デフォルトの名無しさん
2006/04/25(火) 16:16:53同じ方法が使えないとしたらそうなっていると思うよ。
0959デフォルトの名無しさん
2006/04/25(火) 19:45:09これなかなか便利ですね。
そのうちCGI.pmでも標準になるのかな。
WindowsXPだと%temp%に排他で作成されていました。
0960デフォルトの名無しさん
2006/04/25(火) 19:51:24助かったよー〜〜
0961デフォルトの名無しさん
2006/04/25(火) 21:56:17過去スレやリンクのアドレス間違いに気をつけて!
0962デフォルトの名無しさん
2006/04/25(火) 22:54:56すると、activeperlでファイルをreadできなくなりました。
どなたか原因をご教授ください。
0963デフォルトの名無しさん
NGNG980まで建たなかったら、また漏れが行ってくる。
>>932
readってのはbuilt-in関数のreadのこと?
とりあえずActive Perlだと思って起動しているやつが
本当にActive Perlなのかperl -vで確認汁。
一行目にMSWin32-x86-multi-threadがあればActive Perl、
cygwin-thread-multi-64intになってる場合はCygwinのperlだ。
0964デフォルトの名無しさん
2006/04/25(火) 23:45:28いいえ。
open(F,"text.txt");
を使ってもtext.txtの中身を読み込めないってことです。
perl -v やったら
This is perl, v5.8.7 built for MSWin32-x86-multi-thread
でした。
0965デフォルトの名無しさん
NGNGopenは色々とエラーを起きやすいからエラートラップする習慣をつけよう。
open(F,"text.txt") or die $!;
で何かエラーメッセージ出る?大抵はこのエラーメッセージを見りゃ解決するけれど…
0966デフォルトの名無しさん
2006/04/26(水) 00:03:54No such file or directory at C:\Documents and Settings\x\デスクトップ\a.pl line 1.
とでました。しかし、確かにa.plと同一ディレクトリにtext.txtはあります。
0967デフォルトの名無しさん
2006/04/26(水) 00:13:040968デフォルトの名無しさん
2006/04/26(水) 00:14:59print Cwd::getcwd();
これやってみれ
0969デフォルトの名無しさん
2006/04/26(水) 00:23:04フルパスぶち込んだらOKでした・・・。
>>968
C:/Documents and Settings/xxx
と表示されました。
0970デフォルトの名無しさん
NGNG原因は分からんが関連付けから起動したときに、
作業ディレクトリが別のところに行くようになっちゃってるようで。
根本的な原因はこのスレの範疇外だと思う。スクリプトの頭で、
use FindBin;
chdir $FindBin::Bin;
とでもやっておきなされ。これで作業ディレクトリがスクリプトのある場所に行く。
0971デフォルトの名無しさん
2006/04/26(水) 04:01:41プロジェクトが分裂してるみたいだし
本家からParrotのコードコンパイルして勉強してOKなの?
0972デフォルトの名無しさん
2006/04/26(水) 04:13:41http://hp.bird.to/さんの所の「私書箱SP(CGI)」
を使用させて頂こうと思っているのですが
ひとつだけ中をいじりたい事があるんです。
(ちなみに、作者様はいじる事を許可されています。)
で、HTMLでサイトを作るくらいは自分も出来るんですが
Perlの知識はまったく無いので自分なりにやっても
失敗してしまいます。
どうか、知識のある方叶えて頂けないでしょうか?
0973デフォルトの名無しさん
2006/04/26(水) 04:16:08($cookie_name,$cookie_pass,$cookie_number) = get_cookie();
($c_cook,$c_name)=split(/:/,$cookie_name);
($c_cook,$c_pass)=split(/:/,$cookie_pass);
($c_cook,$c_number)=split(/:/,$cookie_number);
print <<END_OF_TEXT;
<p>
<font color="$titlecolor" size=6>$html_title</font><p>
$error_code<p>
<form method="POST" action="$script_url">
<input type="hidden" name='command' value='access'>
<table border=1>
<TR><TH colspan=2>自分の私書箱にアクセス!!</TH></TR>
<tr><td align=right>登録名</td><td><input type="text" size=20 name="name" value="$c_name"></td></tr>
<tr><td align=right>パスワード</td><td><input type="text" size=20 name="pass" value="$c_pass"></td></tr>
<tr><td align=right>私書箱番号</td><td><input type="text" size=20 name="number" value="$c_number"></td></tr>
<TR><TD align=center colspan=2><input type="submit" value="送信"></TD></TR>
</table>
</form><P>
0974デフォルトの名無しさん
2006/04/26(水) 04:16:49<table border=1>
<tr><th>ご用件をどうぞ!!</th></tr>
<tr><td>
<input type="radio" checked name='command' value='write'>私書箱に書き込む</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_regist'>私書箱の新規登録</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_delete'>私書箱の登録削除
</td></tr>
<tr><td align=center>
<input type="submit" value="送信">
</td></tr>
</table>
</form>
<form method="POST" action="$script_url">
<table width=90%>
<tr><td nowrap>
<input type="text" size=8 name="secret_pass">
<input type="submit" value="管理人専用">
</td>
<td nowrap align=right>
<font size=2><A HREF="http://hp.bird.to/index.html" target="_top">私書箱SP Ver.1.45(C)HPサービス</A></font>
</td>
</tr></table>
</form>
END_OF_TEXT
}
0975デフォルトの名無しさん
2006/04/26(水) 04:19:01WebProg
http://pc8.2ch.net/php/
0976デフォルトの名無しさん
2006/04/26(水) 04:19:18これを読み込ませると
画面には「自分の私書箱にアクセス」といったBOXと
「ご用件をどうぞ」のBOXが表示されるんです。
で、僕は
これの上下を入れ替えたいんです。
ただそれだけを変えたいんです。
「ご用件をどうぞ」のBOXが上に来て
「自分の私書箱にアクセス」のが下に表示されているといった感じに
したいんです。
でも、単純にプログラム文を上下入れ替えただけでは
駄目みたいで、、、
表示自体は上下変わってくれたんですが
送信押してもうんともすんとも動かず
機能しなくなっているのです。
どういった入れ替え方をすれば
上下変わってくれるんでしょうか?
すみません、ほんと。
0977デフォルトの名無しさん
2006/04/26(水) 04:20:14え?ここじゃ駄目なんですか?
すみません、、、
0978デフォルトの名無しさん
2006/04/26(水) 09:17:02・
・
・
</form>
を上下、入れ替えるだけでいいんじゃないの?
0979デフォルトの名無しさん
2006/04/26(水) 10:41:31おい
お前がこっちに誘導したから
なんか騒いでるぞコラ
0980デフォルトの名無しさん
2006/04/26(水) 11:07:51perlが処理を始めるのはデータを全て受け取った後?
それとも受け取りながら?
0981デフォルトの名無しさん
2006/04/26(水) 11:10:01<form>〜</form>
が計3つあるけど、上の2つを入れ替え
0982デフォルトの名無しさん
2006/04/26(水) 11:10:02WebProg
http://pc8.2ch.net/php/
0983デフォルトの名無しさん
2006/04/26(水) 11:14:58ありがとう、誘導してくれて。
0984デフォルトの名無しさん
2006/04/26(水) 11:18:14変なん沸いてるから気をつけた方がいいよ
0985デフォルトの名無しさん
2006/04/26(水) 11:26:37複数スレマルチポスト・コピペ報告スレ35@全板共通
http://qb5.2ch.net/test/read.cgi/sec2chd/1143873802/478-481
0986963
NGNG0987デフォルトの名無しさん
NGNG次スレ
http://pc8.2ch.net/test/read.cgi/tech/1146022352/
ごめん、>>1ちょっと失敗
0988デフォルトの名無しさん
2006/04/26(水) 12:42:450990デフォルトの名無しさん
2006/04/26(水) 13:34:09Perlについての質問箱 24箱目
http://pc8.2ch.net/test/read.cgi/tech/1146022352/
0991デフォルトの名無しさん
2006/04/26(水) 13:34:58お前らが親切に回答してやるからこの馬鹿がwebprog板で付け上がって暴れてるんだが…
すまんが、もう少し良く考えてからレスしてくれないか
0992デフォルトの名無しさん
2006/04/26(水) 13:37:250993デフォルトの名無しさん
2006/04/26(水) 13:39:190994デフォルトの名無しさん
2006/04/26(水) 13:40:460995デフォルトの名無しさん
2006/04/26(水) 13:41:290996デフォルトの名無しさん
2006/04/26(水) 13:42:34俺もこんどからこの手を使おう。
0997デフォルトの名無しさん
2006/04/26(水) 13:45:120998デフォルトの名無しさん
2006/04/26(水) 13:59:29やめてくれw
0999デフォルトの名無しさん
2006/04/26(水) 14:01:361000デフォルトの名無しさん
2006/04/26(水) 14:02:30「はぁぁぁ・・・あんっ」
自分で自分の大事な所を触れ・・・指を股間の割れ目に潜らせて軽くかきまわす
「あ・・・あん・・・」
瞬時に体に刺激が走り、吐息が漏れ声が出る・・・誰も居ないのをいいことに感じるまま大きな声で・・・
私はそのまま指をかきまわしてさらに快感を貪っていく・・・
「んん〜〜んっ・・・・んんんっ!」
・・・そうここに来る理由・・・それは最近はまってる一人Hだった・・・
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。