Perlについての質問箱 15箱目
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
05/01/17 18:11:32"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
http://www.perl.org/get.html
● 2005/01/17現在の最新版: 5.8.6
● 2005/01/17現在の開発版: 5.9.1
0002デフォルトの名無しさん
05/01/17 18:20:411 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/
10 http://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 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/
0003デフォルトの名無しさん
05/01/17 18:22:45Perlプログラミング講座: http://www5a.biglobe.ne.jp/~n_rieko/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/4873110378/
[オンラインマニュアル]
Perldoc.com: http://www.perldoc.com/
perldoc.jp: http://www.perldoc.jp/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
[モジュール]
CPAN.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
00041
05/01/17 18:26:489〜14が開けない場合、2chブラウザ以外で試してください。
00051
05/01/17 18:28:510006デフォルトの名無しさん
05/01/17 20:00:00,ageとこう
0007デフォルトの名無しさん
05/01/17 21:17:400009デフォルトの名無しさん
05/01/17 21:56:370010デフォルトの名無しさん
05/01/17 21:58:55googleで探してもUNIXコマンドのページばかりひっかかってどうしても見付かりません
どなたか御指導お願いします。
0011デフォルトの名無しさん
05/01/17 22:08:59001210
05/01/17 22:10:15'ls ./' などのようにすればいいだけなのですね。
お騒がせしました。
0013デフォルトの名無しさん
05/01/17 22:15:26それシングルクォーテーションじゃ・・・
とりあえず三通り
[1]
system("command");
[2]
open(PIPE, "command |");
@msg = <PIPE>;
close PIPE;
[3]
$msg = `command`;
3番はバッククォーテーションだから注意
0014デフォルトの名無しさん
05/01/17 22:53:370015デフォルトの名無しさん
05/01/17 23:46:440016デフォルトの名無しさん
05/01/17 23:49:480017デフォルトの名無しさん
05/01/17 23:52:390018デフォルトの名無しさん
05/01/18 22:12:1714 の次が 15 だと推論するのに時間がかかりました。
なんか閑散としてますが他の人も同じなのか?
0019デフォルトの名無しさん
05/01/18 22:15:30よほどのネタ振りがあるか
粘着初心者くんでもいないかぎり。
まあ大抵後者でスレが消化されて行くわけだが。
0020デフォルトの名無しさん
05/01/19 20:20:190021デフォルトの名無しさん
05/01/19 20:33:35IPC::Open2なんか使えば出来るかも
0022デフォルトの名無しさん
05/01/19 21:25:11Expect なんか使えば出来るかも
sudo の -S オプションなんか使えば出来るかも
0023デフォルトの名無しさん
05/01/19 23:06:280024デフォルトの名無しさん
05/01/19 23:39:200025デフォルトの名無しさん
05/01/19 23:44:59alarmとか使えばできると思うが、他のサイトってのがhttpなら
ソケットでごりごりやるよりLWP使ったほうが楽だよ。
0026デフォルトの名無しさん
05/01/20 17:41:480027デフォルトの名無しさん
05/01/20 17:48:01パッケージ名まで知りたいなら
my ($package, $filename, $line) = caller();
あたりでどうなんだろ?
0028デフォルトの名無しさん
05/01/20 17:52:36__FILE__ とか?
0029デフォルトの名無しさん
05/01/20 18:00:45出ました。ありがとうございます!
0030デフォルトの名無しさん
05/01/20 18:03:30蛇足ですが、caller はサブルーチン呼び出し 1 段以上経てないと機能しませんから!
package foo;
sub bar {
my ($package, $filename, $line) = caller;
print "$package, $filename, $line\n";
}
bar();
print "$0\n"; # ついで
0031デフォルトの名無しさん
05/01/20 18:16:000032デフォルトの名無しさん
05/01/21 06:21:2950回繰り返したら1回だけ動かしたいスクリプトがあるんですが、
どう書いたら良いかわかりませぬ。
気が向いたら教えてくださいm(_ _)m
0033デフォルトの名無しさん
05/01/21 06:24:560034デフォルトの名無しさん
05/01/21 07:00:36> forって10回までしか繰り返せないんでしょうか?
なぜそう思い込み、決めつけ、疑いのないそのまっすぐな眼差しで
この愚劣極まる質問を発したのかを説明してくれると、みんな楽
しめると思います。ぜひお願いします。
0035デフォルトの名無しさん
05/01/21 12:38:130036デフォルトの名無しさん
05/01/21 17:34:530037デフォルトの名無しさん
05/01/21 19:16:13これでa.plを実行したら、表示される結果は1?2?
やっぱり1?
手元にperlを実行できる環境がないけど、至急回答が必要なの…。
./a.pl
#!/usr/bin/perl
my $a = "1";
require './b.pl';
print $a;
./b.pl
#!/usr/bin/perl
$a = "2";
1;
0038デフォルトの名無しさん
05/01/21 21:02:542
0039デフォルトの名無しさん
05/01/21 21:13:311
0040デフォルトの名無しさん
05/01/21 21:17:020041デフォルトの名無しさん
05/01/22 22:55:29http://perldoc.jp/docs/modules/Switch-2.09/Switch.pod
0042デフォルトの名無しさん
05/01/22 22:57:310043デフォルトの名無しさん
05/01/22 23:10:09実行環境がなくてもすぐ手元で確認できるようにPerlのインタプリタを作ればいいじゃないか?
0044デフォルトの名無しさん
05/01/22 23:12:15undef
0045デフォルトの名無しさん
05/01/22 23:33:42知ってはいるけど使ったこと無い
大抵はラベルとブロックを組み合わせた方法で事足りるから
0046デフォルトの名無しさん
05/01/23 00:36:420047デフォルトの名無しさん
05/01/23 01:23:370048デフォルトの名無しさん
05/01/23 02:59:420049デフォルトの名無しさん
05/01/23 15:20:240050デフォルトの名無しさん
05/01/24 11:26:14cpan> install HTML
Warning: Cannot install HTML, don't know what it is.
Try the command
i /HTML/
to find objects with matching identifiers.
となります。どうやったらインストールできますか?
0051デフォルトの名無しさん
05/01/24 11:31:230052デフォルトの名無しさん
05/01/24 11:38:52や
i /HTML::LinkExtor/
などとすると、
cpan> i /HTML::LinkExtor/
Module id = HTML::LinkExtor
DESCRIPTION Extract links from HTML documents
CPAN_USERID LWWWP (The libwww-perl mailing list <[email protected]>)
CPAN_VERSION 1.33
CPAN_FILE G/GA/GAAS/HTML-Parser-3.45.tar.gz
DSLI_STATUS RmpO (released,mailing-list,perl,object-oriented)
MANPAGE HTML::LinkExtor - Extract links from an HTML document
INST_FILE /usr/local/lib/perl5/site_perl/5.8.5/mach/HTML/LinkExtor.pm
INST_VERSION 1.33
と出ます。
要するにインストールするにはどうしたらいいのでしょうか?
0053デフォルトの名無しさん
05/01/24 11:54:360054デフォルトの名無しさん
05/01/24 11:55:180055デフォルトの名無しさん
05/01/24 11:59:110056デフォルトの名無しさん
05/01/24 12:15:150057デフォルトの名無しさん
05/01/24 12:18:230058デフォルトの名無しさん
05/01/24 13:03:590059デフォルトの名無しさん
05/01/24 13:13:340060デフォルトの名無しさん
05/01/24 16:54:23windowsXP
この環境で、aというフォルダ内にたくさんあるフォルダの中にある.txt/.csv
ファイルなどを全てaの直下に移すプログラムを書きたいのですが、どうすればいいでしょうか?
my @fold = glob 'aの中にあるフォルダだけを取得';
foreach (@fold){
my @sub_fold = glob 'aの中にあるフォルダの中にあるファイルを全て取得';
}
・・・ファイルの移動ってどうやるんですか?
一度元を読み込んで、任意の場所でopenをして自動でファイルを新規に開いて
そこに元になるものを流し込むみたいな方法以外にないのでしょうか?
ちょっと大変そうですねそれ;
0061デフォルトの名無しさん
05/01/24 16:57:12move *.txt ..
move *.csv ..
0062デフォルトの名無しさん
05/01/24 17:04:32File::Find
File::Copy
006360
05/01/24 19:16:08File::Copyの解説(英語)を読む方がしんどいです。
本当に日本語訳以外のperl.docの説明書って直感的でないですね。
英語だろうが、関数の使い方くらいパットミでわかると思いマシ多雨。が、疎コマsだsファslgじゃkjgばsdgかjdbがshd
1から自分で書きます。それなら30プンですから
0064デフォルトの名無しさん
05/01/24 19:28:422)エクスプローラでF3を押してファイル名検索「*.txt;*.csv」検索結果をCTRL+A
0065デフォルトの名無しさん
05/01/24 20:07:000066デフォルトの名無しさん
05/01/24 20:10:130067デフォルトの名無しさん
05/01/24 20:53:390068デフォルトの名無しさん
05/01/24 21:22:020069デフォルトの名無しさん
05/01/24 21:28:260070デフォルトの名無しさん
05/01/25 00:06:38SQLite、使ってみたいと思ってます。
(いまのとこ、インストールしただけです。時間がなくて)
日本語、通りますか?
そのままじゃ通らないとしたら、urlエンコードなど
使ったりするのでしょうか?
よろしかったら、教えてください。
0071デフォルトの名無しさん
05/01/25 00:47:15Perlで「"」ダブルクォート内の文字列を抜き出したいのですが
やり方がわかりません。
何か方法が有るのでしょうか?
0072デフォルトの名無しさん
05/01/25 00:48:17実際にやってみようとは思わないのか?
Shift_JISもEUC-JPも特に問題はないが、文字列操作関数を使うならUTF-8にしておいたほうが無難ではある。
0073デフォルトの名無しさん
05/01/25 00:49:18意味不明。パラフレーズせよ。
0074デフォルトの名無しさん
05/01/25 00:56:28while(/"(.*?)"/g) {print $1;}
0075デフォルトの名無しさん
05/01/25 00:56:44C:\path\to\a\dir /s /b *.txt | perl -nle "`move /y $_ C:\path\to\a`"
うはwwww
0076デフォルトの名無しさん
05/01/25 01:02:32>>74
それで1発で逝けました。
ありがとうございました。
0077デフォルトの名無しさん
05/01/25 01:04:41サンクスです。
>実際にやってみようとは思わないのか?
思いますぅ。ただ、クエリの初歩から勉強という段階で…。
近日中に、なんとかします!
0078デフォルトの名無しさん
05/01/25 04:53:27データベース板の SQLite スレもよろしく。
0079デフォルトの名無しさん
05/01/25 07:02:14環境はWindows XP Pro SP2,perl, v5.8.2 built for cygwinです。
#! /usr/bin/perl
use Cwd;
my $dir1 = Cwd::getcwd();
print "$dir1\n";
my $infile = $ARGV[0];
open (INFILE, "$infile");
open (OUTFILE, ">result.txt");
print OUTFILE "hogehoge\n";
上記のようなスクリプトをコマンドラインで実行すると実行時のデ
ィレクトリがカレントディレクトリになりますよね。
それに対しperlコンパイラ(PAR,perl2exe,perlcc)でコンパイルし、
入力ファイルを実行ファイルにドラッグすると、カレントディレク
トリである$dir1はホームディレクトリになってしまい、その結果
OUTFILEもホームディレクトリに出来てしまいます。
1)INFILEと同じディレクトリにOUTFILEを作りたいので、現在の所
infileの最後の"/" or "\" までを取得してchdirしているのですが、
もう少しスマートな方法はないでしょうか?
2)ドラッグ時にカレントディレクトリがホームになるあたりについ
ての説明のソース等がありましたら教えてください。
よろしくお願いします。
0080デフォルトの名無しさん
05/01/25 09:49:26超一般論だけど、引きずって落とした時には、
その引きずり落としを行なうシステムが、
カレントディレクトリを決定するのではないか?
Winでそのあたりの設定をいじった記憶があるのだが、
もう何年も触ってないのでうろ覚え。
それから、ふつう、chdirなどせずに、OUTFILEを絶対パス
していしたりすると思うが。
0081デフォルトの名無しさん
05/01/25 11:53:03>infileの最後の"/" or "\" までを取得してchdirしているのですが、
>もう少しスマートな方法はないでしょうか?
それが一番スマート
0082デフォルトの名無しさん
05/01/25 12:44:56いや実は、少なくとも v5.6.1 では "$infile/.." で通る罠。
BEGIN {
push @INC, "$0/..";
}
とかよくやる。
008382
05/01/25 12:56:52実際、perl 以外のシチュエーション(たとえば ls './foo.txt/..' とか)は NG (Not a directory) なので処理系依存であることは間違いない。
0084デフォルトの名無しさん
05/01/25 13:09:320085デフォルトの名無しさん
05/01/25 21:29:35んなあほな、と思ったらマジでできる。。。
5.8.4でもOKだった。
../で打ち消される部分は単純にスラッシュの数だけ数えてて、
間のフォルダ名は何書いても評価されてないみたいね。
0086デフォルトの名無しさん
05/01/25 21:35:18open (OUT, ">>$cur/;,:?<>|/../foobar.txt");
こんなのまで許される。うわー。
0087デフォルトの名無しさん
05/01/25 23:08:59my($exec_dir) = $0 =~ /^(.*?)[^\/]+$/;
おれこうやって受け取ったファイルのディレクトリとか
実行ファイルのディレクトリいつもゲットしてchdirをめったに使わん。
0088デフォルトの名無しさん
05/01/26 04:12:49いや、いないならいいんですけど…
0089デフォルトの名無しさん
05/01/26 06:48:10while(1){
A;
B;
サブルーチン();
C;
}
これサブルーチンに一回戻ってもう一度Aから動かしたら
ABCと動いて最後にもう一度Cを実行してしまうんですが、
二回目のCを実行しないようにするにはどうしたらいいんですかね?
サブルーチンで一旦別の場所に飛んでwhile(1)に戻って来た時に
サブルーチン呼び出し以下のコードを二度繰り返さないようにしたいんですが。
last;入れてもループ自体が終了しちゃってだめですた。
0090デフォルトの名無しさん
05/01/26 07:10:440091デフォルトの名無しさん
05/01/26 08:15:240092デフォルトの名無しさん
05/01/26 10:25:34サブルーチンは毎回実行される(C; は繰り返さない)なら
while{A; B; サブルーチン();} と等価何じゃねーの
とりあえず next; 調べて来い
0093デフォルトの名無しさん
05/01/26 10:27:55なにいいたいのかよく分からん。
戻るっていまドコにいるんだよ?
て言うかあれか?再帰とかしてんのか?
せめてルーチンの中見せなさいよ。
0094デフォルトの名無しさん
05/01/26 10:38:211回目のループのみCを実行したいんだぬ?
while(1){
$count ++;
A;
B;
サブルーチン();
$count == 1 and C;
}
とか?みたいな?
0095デフォルトの名無しさん
05/01/26 10:58:33推理する謎解き大会になってきたな...
0096デフォルトの名無しさん
05/01/26 11:28:26無限ループ内で整数をカウントアップさせっぱなしはやめれ。
2^32 回に一回実行されるし、そもそも符号付き整数のオーバーフローで roundup せずに例外投げる
アーキテクチャも広い世の中にはあるらしい。(直に見たことはないが)
0097デフォルトの名無しさん
05/01/26 11:34:32もとの記述が無限だったんだ。俺のせいじゃない。
0098デフォルトの名無しさん
05/01/26 12:12:23>>89が「すれ立てるまでもない…」でマルチしてるんですけど、
勝手に自己解決してるみたいです!
0099るんぱっぱ〜る
05/01/26 12:19:48use Image::Size;
したいのですが、Can't locate auto/Image/Size/jpegsize.alって出ます。
ちゃんとスクリプト冒頭で
use FindBin qw($Bin);
use lib "$Bin/lib";
ってやってるのですが、なぜでしょうか?
(Size.pmは、(Perlスクリプト本体のディレクトリ)/lib/Imageの中にあります)
とんでもないヘマをやらかしてますか?
心優しいPerlコミュニティの皆様、教えてください…
0100デフォルトの名無しさん
05/01/26 12:26:57エラーメッセージに書いてあるようにないのはjpegsize.alなので、
Size.pmがあったからといってどうにもならんのだが。多分Size.pm
は読めていてその中でjpegsize.alを要求していると思われる。
まずはjpegsize.alがあるか確認すべきだろうな。
0101るんぱっぱ〜る
05/01/26 13:02:07Size.pmと同じ階層のディレクトリに置きました。
いざ実行してみると!
…同じエラーが出てだめでした。
alファイルというのはオートロードファイルということがわかったの
ですが、このオートロードというのは、どの時点で自動(オート)で
読み込まれる(ロード)でしょうか?スクリプトの実行時?
(そもそも画像データの扱いはImage::Magickを使うのが一般的なので
しょうか。)
0102デフォルトの名無しさん
05/01/26 13:05:40いちいち書き込まずに頭冷やせよ。
0103るんぱっぱ〜る
05/01/26 13:15:10できました。お玉冷やしたおかげで、わかりました!
Perlディレクトリ\lib\auto\Image\Sizeにalファイルを置いたら動きました!
うわぁあああん、ありがとう。
でも、これってサーバー上のPerlディレクトリをいじれなかったらできないん
ですか?
0104デフォルトの名無しさん
05/01/26 13:21:17>>99-104(このレス)まで含めperlと関係ないスレッドのゴミになってるのがわからんのか?
いいかげんにしろよ。
0105デフォルトの名無しさん
05/01/26 13:22:38置ける場所に置いて、その場所を示すuse libを追加してやればいい。
0107デフォルトの名無しさん
05/01/26 13:37:07そういうグチャグチャの状況になるんだ?
0108デフォルトの名無しさん
05/01/26 13:37:53ほう、
Image::Size: ttp://perldoc.jp/docs/modules/Image-Size-2.99/Size.pod
や
AutoLoader: ttp://perldoc.jp/docs/perl/5.8.0/AutoLoader.pod
はPerlとは関係ない、と言いたいわけですな?
話の流れからして、>>105のPerl流の解決方法すらも
0109デフォルトの名無しさん
05/01/26 13:41:250110デフォルトの名無しさん
05/01/26 14:53:270111デフォルトの名無しさん
05/01/26 14:57:57CPAN にこんな奇妙なモジュールが置いてあるのか、と疑問に思ってテストしてみたよ。>>103 は
Image::Size の取説を読んでないんじゃないの?UNIX なら指定のmakeファイルを使ってイン
ストールしなきゃならないし、Win32 ならREADME.Win32 に書いてある通りに編集しなきゃならない。
少なくともWin2000なら、それで全く問題なく動いたぜ。
自分で勝手に判断してインストールするとどうなるか、という点では有益な投稿だったんじゃないかな。
0112デフォルトの名無しさん
05/01/26 15:08:330113るんぱっぱ〜る
05/01/26 15:12:57はい。スカーっとした気分でした。
モジュール使う場合はインストールするしかないのですね。
レンタルサーバーとかの場合でモジュールの追加できないとなると、
こまりましたねぇ…。
use lib 'unko';
ってやってモジュールの位置を教えてあげれば
require 'unko.pl';
みたいに使えるのかと思ってました。use libすごい大発見
だったのに
0114デフォルトの名無しさん
05/01/26 15:15:11011579
05/01/26 16:09:38皆さんどうもありがとうございました。
大変勉強になりましたので、いただきました解決方法を簡単にまと
めます。
0)infileの最後の"/" or "\" までを取得してchdir
1)OUTFILEを絶対パスで指定
2)infile/.. で記述
3)File::Basenameのdirnameを使ってdirectory名を取得
4)my($input_dir) = $ARGV[0] =~ /^(.*?)[^\/]+$/;
(レス番号順)
0116デフォルトの名無しさん
05/01/26 18:23:25SSH/telnet できるならレンタルサーバでもモジュールインストールできるよ
おれは ~/lib/perl5 にCPANからインストして
use lib '/home/user/lib/perl5';
ってしてるけど
0117デフォルトの名無しさん
05/01/26 18:25:300118デフォルトの名無しさん
05/01/26 18:31:25個人的には普通-Tなので使えません。
0119デフォルトの名無しさん
05/01/26 19:11:47いったん立てた thread を thread の外部から頃すことってできますか?
use threads;
sub hoge() {
print "x" while(1);
}
$thr = threads->new(\&hoge);
ってしたところで、メインルーチンから適当なところでスレッド $thr を殺したいんです。
0120デフォルトの名無しさん
05/01/26 19:38:28>レンタルサーバーとかの場合でモジュールの追加できないとなると、
>こまりましたねぇ…。
ユーザにモジュールの追加を許したらどうなると思う?
サーバはすぐにdosアタックやらスパムメールやらの基地にされるだろう。
0121デフォルトの名無しさん
05/01/26 20:09:36あの、レンタルサーバーにも Perl のセキュリティー設定にも詳しくないんで質問なんですが、
main のスクリプトと同じディレクトリに使いたいモジュール一式コピーして、main 先頭で
(つまり use する前の行で) >>82 のコード書いてもだめなんですか?
0122121
05/01/26 20:35:06al や dll については、たとえば Foo::Bar.pm が使うものであれば
./auto/Foo/Bar/ 以下に置くとします。
0123デフォルトの名無しさん
05/01/26 20:48:48お前が設置すべきファイルを全て手元で揃えられるならよほ
どのことがない限りそれでできる。
しかし一般に配布されているモジュールの中には設置すべき
ファイルがそのままの形で含まれていないものもあるという
話だな。一部がC等で書かれていてコンパイル必要なものとか
オートロードのためにインストール時に分割されるように
なってるものとか。運がよければ設置に必要なファイルを
まとめた配布物が手に入ることもあるがそうでなければ自分で
なんとかする環境を持ってないとどうにもならないことも
ある。
0124デフォルトの名無しさん
05/01/26 21:49:38つーかそんな下手糞にインストール任せる業者さんが居ると困るっしょ。
業者さんに素直に頼みなさいな。
「金よこせ」っていわれたら、「友達を紹(ry
0125デフォルトの名無しさん
05/01/26 22:05:120126デフォルトの名無しさん
05/01/26 22:41:380127デフォルトの名無しさん
05/01/27 01:26:290128デフォルトの名無しさん
05/01/27 03:49:590129るんぱっぱ〜る
05/01/27 12:13:31TELNETで入って
perl Makefile.PL INSTALLSITELIB=~/lib INSTALLMAN3DIR=~/man3
make
make install
(~/lib、~/man3は適当に変える。今回はこのまま指定して出来たモノ
をあとから好きなところに移動してuse libで指定しました)
ここで書いていいもんかどうかちょっと悩みましたが、もしかしたら
僕と同じことで悩んでる人がここを見るかもってことで書き込みマウス
メーリスの人とても親切でしたよ。
少なくともここでキレてた人よりも(ニッコリ
0130デフォルトの名無しさん
05/01/27 12:22:530131デフォルトの名無しさん
05/01/27 12:51:23誰か教えてください。
$value = 'test';
$string = '$value';
上の例で変数$stringの内容に従って変数$valueの値を展開して返すような命令なり、
関数なりはありませんか?
0132デフォルトの名無しさん
05/01/27 12:57:05eval
0133デフォルトの名無しさん
05/01/27 13:24:28ありがとうございます。
$value = 'test';
$string = '$value';
print eval $string;
これで期待通りの結果が出ました。
0134デフォルトの名無しさん
05/01/27 13:29:50> メーリスの人とても親切でしたよ。
> 少なくともここでキレてた人よりも(ニッコリ
いや、案外同じ人だったりするもんだよ。
0135デフォルトの名無しさん
05/01/27 13:34:590136デフォルトの名無しさん
05/01/27 13:54:01本当にそれでいいのか・・・?
前後にも文字列が入ってるんじゃないのか・・・
0137デフォルトの名無しさん
05/01/27 14:34:53その応用で大丈夫だと思ったのですが、期待したとおりにならず
苦しんでいます。(T_T)
何がなんだか解らなくなってきて、どういう風に質問をあげれば
良いのかも判りません。
0138デフォルトの名無しさん
05/01/27 14:57:47evalとFAQ見ろ
0139デフォルトの名無しさん
05/01/27 15:05:02わかりました。゚⌒(つД´)⌒゚
0140デフォルトの名無しさん
05/01/27 15:11:43本当はやりたいことは
$string = "$value";
というだけのことだったりして・・・
0141デフォルトの名無しさん
05/01/27 16:46:160142デフォルトの名無しさん
05/01/27 20:56:53良く分からん。
0143デフォルトの名無しさん
05/01/27 21:02:47それは必要とするケースを扱ったことがないっちゅう事ですかな
実例を伴った例で調べればすぐに分かるもんだと思うが・・・
0144デフォルトの名無しさん
05/01/27 21:37:01どうすれば良いですか?
0145デフォルトの名無しさん
05/01/27 22:31:16今までにあった必要とするケースといえばCGIで
URLエンコード/デコードに使ったくらい。
食わず嫌いになってる感じ。
>>144
確かできないと思ったが。
0146デフォルトの名無しさん
05/01/27 23:08:00昔配布されていた2ちゃんのスクリプトを現行のものと同じレベルに改良して欲しいんです。
業者に頼むのも考えましたが「既存スクリプトの改良」「2ちゃんにあわせろ」っていう点で
ちょっと気が引けたのでここで依頼しようと思います。
ここで受けていただけるようでしたら改めて詳細等を記して有志を募ろうと思います。
(Perlでリクに答えるスレはなんか死んでるようなので・・・)
よろしくお願いします。
0147デフォルトの名無しさん
05/01/27 23:15:55>>1も読めない奴は氏ね
0148デフォルトの名無しさん
05/01/27 23:20:24失礼しますた・・・
0149デフォルトの名無しさん
05/01/27 23:42:11固定長のデータを分解するときには便利ですよ。
0150デフォルトの名無しさん
05/01/28 03:23:46CPANでモジュールをインストールしたのですが、
その時にオプションを選ぶようになっていて、別の選択肢を選び直したいと思っています。
そこでいったんモジュールをアンインストールしようと思い立ったのですがやり方がわかりません。
思い切って~/.cpanの中身を捨ててしまったのですが、
CPANのセッティングはやり直しになるものの、モジュールに関しては以前に出た問い合わせが出ずすぐにインストールが終わるようです。
どうすればモジュールのアンインストールができるのか、正しいやり方を教えてください。
よろしくお願いします。
0151デフォルトの名無しさん
05/01/28 04:16:45Googleのキーワードが悪くてよいのが見つかりません。
エレガントでスマートな方法を教えてくだちぃ。
Jcode使うのでしょうか?
0152デフォルトの名無しさん
05/01/28 09:53:06Jcodeのfoldでいいんでねーの?
0153デフォルトの名無しさん
05/01/28 13:25:46で hoge.prog のstdoutを ファイルハンドル IN に対応させて、
と、 ここまではいいのですが、同時に hoge.prog のstderrも別の
ファイルハンドルに対応させたいのですが、どのようにすればいいのでしょうか?
0154デフォルトの名無しさん
05/01/28 13:27:56IPC::Open3
0155デフォルトの名無しさん
05/01/28 13:57:40よく探したら過去ログにもありました。m(__)m
0156デフォルトの名無しさん
05/01/28 14:02:25対応させるのは154の言うようにIPC::Open3で簡単にできるが、
両方のファイルハンドルから適切に読み出してやらないと
ブロックするので注意。まじめにやるとselectとか駆使する
ハメになって結構めんどいよ。
perlfaq8(1)の「How can I capture STDERR from an external
command?」あたり参照。クックブックにもなんかそれっぽいのが
あったと思ったけど手元にないので不明。
0157デフォルトの名無しさん
05/01/28 19:17:02私には要約できませんが。
0158デフォルトの名無しさん
05/01/28 20:33:22PDFlib Lite
http://www.pdflib.com/jp/products/download-source.html
が王道なんでしょうか?
ほかにもっと良いモジュールを使っている方はいませんか?
0159デフォルトの名無しさん
05/01/28 21:47:33~/.cpan/CPAN/MyConfig.pm
が設定ファイルだから再インストなんかしないでこいつを編集。
rootで入れたんなら、
/usr/local/lib/perl5/5.8.4/CPAN/Config.pm
が設定ファイルなので好きなようにパラメータを編集すればよし。
0160デフォルトの名無しさん
05/01/28 22:15:06だって、初めて聞いたし。
でも興味あるから見てみる。
0161デフォルトの名無しさん
05/01/28 22:48:29PDFJのほうが好き。
0162デフォルトの名無しさん
05/01/28 23:20:55articledemo.pdf のようにサンプル論文PDF程度のことが
ことができれば自分的には十分なので
0163デフォルトの名無しさん
05/01/29 01:23:220164デフォルトの名無しさん
05/01/29 05:13:13手始めに何か参考本がほしくなりました。お勧めの本とかってありませんでしょうか?
あんまり入門本とかではなくて分厚くて読み応えのある本がいいのですが・・・。
よろしくお願いします。
0165デフォルトの名無しさん
05/01/29 05:31:44>>2
一応こういうスレもある
【Perl,CGI】参考書籍 第三版
http://pc5.2ch.net/test/read.cgi/php/1030209573/
0167デフォルトの名無しさん
05/01/29 09:13:48perlがはじめてで読み応えある本希望ということなら、>>3の
駱駝で決まりだろうな。
0168164
05/01/29 15:16:59アマゾンで予約してきます。
0169デフォルトの名無しさん
05/01/29 22:28:40age2ch.plのsearch.plを
my @crypted = ($content =~ /<dd>([0-9a-zA-Z\/\.]{11})<br><br>/g);
↓
my @crypted = ($content =~ /<dd>\s*([0-9a-zA-Z\/\.]{11})\s*<br><br>/g);
に書きなおすということは、どういうことで、どのような変化が起こるのですか?
教えて下さい。お願いします。
0170デフォルトの名無しさん
05/01/29 22:29:49Cnt | S 11/17 00:07:07 1100617627.980650 | E 11/17 00:07:39 1100617659.310731 | ID:32539 | 31.330081
Day | S 11/17 00:04:59 1100617499.362986 | E 11/17 00:04:59 1100617499.628110 | ID:21124 | 0.265124
というような形式で記述されているテキストを、『| E』の直前の17バイトの数字で
ソートしてファイルに書き込みたいのですが、どのようなコードかわからず躓いてます。
while( <READ> )
{
if ( /(\w{3}) | S (\d+)\/(\d+) (\d+):(\d+):(\d+) (\S{17}) | E (\d+)\/(\d+) (\d+):(\d+):(\d+) (\S{17}) | ID:(\d+) | (\S+)$/ )
{
push ( @value , [ $2, $_ ] );
}
}
@sort_value = sort{ $a->[0]<=>$b->[0] } @value;
print WRITE $_->[1] foreach( @sort_value );
としてあるのですが、意図した通りに動いてくれません。
どのようにしたらいいでしょうか?
どなたかわかる方、ご教授お願いいたします。
0171デフォルトの名無しさん
05/01/29 22:31:52は、
push ( @value , [ $7, $_ ] );
の書き間違えです。
$7 の方でやっているのにできません。
0172デフォルトの名無しさん
05/01/29 22:43:43俺なら、「『| E』の直前の17バイトの数字」をkeyとするhashに行をぶち込み、
(まあ、たとえば%hogeとすると)
foreach (sort keys %hash){
print WRITE $hash{$_};
}
とするな
0173デフォルトの名無しさん
05/01/29 22:44:24単純にsplitすればいいんじゃない?
0174デフォルトの名無しさん
05/01/29 22:51:33そうね、「『| E』の直前の17バイトの数字」の抽出は正規表現でもいいし、
行に規則性があればsplitのほうが簡単
0175デフォルトの名無しさん
05/01/29 23:29:54> としてあるのですが、意図した通りに動いてくれません。
> どのようにしたらいいでしょうか?
どこでおかしくなっているのか調べて、そこを修正するといいよ。
0176デフォルトの名無しさん
05/01/29 23:31:55「|」は正規表現のメタキャラクタだからエスケープしろ。
他にも突っ込みどころはあるが致命的な間違いはたぶん
これ。
0177デフォルトの名無しさん
05/01/30 00:16:53my $RegExp = qr/(\S{17}) (?: \| E)/;
close READ;
print WRITE map $_->[1], sort $a->[0] <=> $b->[0], map [ (/$RegExp/o)[0], $_ ], @value;
close WRITE;
かな?
0178デフォルトの名無しさん
05/01/30 00:25:05余計なものが色々入ってないか?
0179デフォルトの名無しさん
05/01/30 01:55:10my @crypted = ($content =~ /<dd>([0-9a-zA-Z\/\.]{11})<br><br>/g);
というのは、$content(投稿内容)に含まれるIPアドレスを暗号化して、
age2ch.plを誰が使っているのか解らなくする命令だ。そこに「\s*」を
挿入すると、暗号化が解除されて、キミのIPアドレスが2ちゃんねるの
運営側に筒抜けになる。
意味が解らない人に罠をかけて陥れようとする香具師がいるようだな。
0180169
05/01/30 02:28:02ホントですか!?なんか人間不信になりそうですが・・
ではこれは、やらないほうがいいということですね。
そうするとsearch.plは、もう使い物にならないということですか?
他になにか探す方法はないのでしょうか?
教えて下さい。お願いします。
0181デフォルトの名無しさん
05/01/30 03:43:10面白いけどちょっと遊びすぎw
>>180
嘘ですよ
それは、
<dd>※(本体)※<br><br>
※のところに空白が入っていても、マッチングに成功するようにする修正パッチ。
0182デフォルトの名無しさん
05/01/30 06:47:45> ホントですか!?なんか人間不信になりそうですが・・
↑そっくり、お返ししたい今日この頃…。
0183デフォルトの名無しさん
05/01/30 16:23:01半角スペースを区切り文字に指定するとき
join(" ",@array)
で出来ないのですが、半角スペースはどう書けばいいんでしょうか?
0184デフォルトの名無しさん
05/01/30 16:30:09どう出来無いの?
それで当ってそうだけど
#ってか本人ならCスレに誤爆詫び入れとけよ
0185デフォルトの名無しさん
05/01/30 16:31:000186183
05/01/30 16:33:56" "で、連結したのに、" "がないんです。
0187183
05/01/30 16:35:39失礼しました。
0188デフォルトの名無しさん
05/01/30 17:00:320189デフォルトの名無しさん
05/01/30 17:06:58同意だけど二つ並べちゃうとダブルクォーテーション一つに見えるよ・・・
0190デフォルトの名無しさん
05/01/30 17:42:05"hoge$hage"
どっちがいいの?
0191デフォルトの名無しさん
05/01/30 17:46:48> 同意だけど二つ並べちゃうとダブルクォーテーション一つに見えるよ・・・
プログラミング環境の表示を、シングルクォート2つがダブルクォートに見える
ようにしておくのはマヌケの3乗だよ。
0192169
05/01/30 17:50:47一体どれを信じればいいんですか?
search.plは今もちゃんと使えるんですか?
0193デフォルトの名無しさん
05/01/30 17:55:10\sの意味調べればわかんだろ。
0194169
05/01/30 17:56:00search.plで検索すると
前は○○○×○とかだったんですけど
最近はeeee×eeとかで、串がまったく見つからないんですが
どういうことでしょうか?
原因と改善策を教えて下さい。
0195デフォルトの名無しさん
05/01/30 18:02:28プログラミングも好きだけどAAも好きなんだよヽ(`Д´)ノワーン
#2chブラウザだし
0196デフォルトの名無しさん
05/01/30 18:09:00ベンチマーク的には同じだった。
書きやすいから、漏れなら下の方を選ぶ。
0197デフォルトの名無しさん
05/01/30 20:18:18それはどんな場合の話?
printの引数なら "hoge",$hage にするよ
0198デフォルトの名無しさん
05/01/30 20:48:11100万回やったら上のが早かった
Winだけど
0199デフォルトの名無しさん
05/01/30 21:13:44Visual Studioはどうしてる?
0200デフォルトの名無しさん
05/01/30 21:38:47これなんで?
0201Rubyist!
05/01/30 21:55:490202デフォルトの名無しさん
05/01/30 22:20:42細かいことにこだわらないようじゃプログラマ失格だな。
0203Rubyist!
05/01/30 22:30:030204デフォルトの名無しさん
05/01/30 22:46:50\による意図しない展開を避けるため。
0205デフォルトの名無しさん
05/01/30 23:07:23そ、それだけすか?それだけのために '' にしろと言われても・・・
0206デフォルトの名無しさん
05/01/30 23:10:260207デフォルトの名無しさん
05/01/30 23:16:38>>188 に書いてますよね。
というか、私は \ による展開は '' の方が意図しないものになるように感じるんですよね。
% cat hoge.pl
print '\';
% perl hoge.pl
Can't find string terminator "'" anywhere before EOF at z.pl line 1.
0208デフォルトの名無しさん
05/01/30 23:20:35え、どこに?
0209デフォルトの名無しさん
05/01/30 23:21:43ああすいません、揚げ足取りしたかったんですかね。
書いてません書いてません。
0210デフォルトの名無しさん
05/01/30 23:24:4102111001
05/01/30 23:48:18シングルクォート派だけど。
0212デフォルトの名無しさん
05/01/31 00:08:31ごしゃごしゃって"<tag name=\"hoge\">"見たいなケース?
そういう場合は、普通こうだろ
qq|<tag name="hoge">|
'の場合でもq|hoge'hoge|っと
0213デフォルトの名無しさん
05/01/31 00:19:261秒後 (処理時間2秒)
5秒後 (処理時間6秒)
13秒後 (処理時間9秒)
16秒後 (処理時間5秒)
…
サーバ開始時間を0秒として,それから何秒後にリクエストが来たか,
その処理時間は何秒だったか,というような形のログです.
このログデータを使い,プログラムで任意の数のクラスタサーバを用意して,
どうすれば一番効率の良い負荷分散をするプログラムを作ることがしたいのですが,
どういう構造にしたらいいのかわかりません.
たとえば3台のクラスタサーバを用意するとした場合,
1台目 … 0+ (3×0行目,3×1行目,3×2行目・・・)
2台目 … 1+ (3×0行目,3×1行目,3×2行目・・・)
3台目 … 2+ (3×0行目,3×1行目,3×2行目・・・)
というラウンドロビンで振り分けていくプログラムを作りました.
これはこれで1台でやるよりは効率よく処理できます.
しかし,これに加えて処理時間と到着時間が被っていないかで判定して振り分けるのがいいと思うのですが,
どういう制御文にしたらいいのかわかりません….
Perlで作らなければいけないのでここで質問させていただいたのですが,
どなたか知恵を貸していただけませんか.
読み込むログデータは冒頭のような形で固定です.
0214デフォルトの名無しさん
05/01/31 00:19:31でも別にわざわざ気をつけるほどのことじゃないけどな。
02151001
05/01/31 00:22:05そうだね。そういう時は特にそうだね。
でも単純に
$foo = 'hoge';
$bar = 'hage';
$baz = 'zure';
というときもシングルクオートにしちゃうね。
エスケープがうんぬんというよりも、
見た目が単に綺麗じゃないよね。ダブルクォートって。
フォント変えれば心も変わるかもしれないけどね。
0216213
05/01/31 00:22:471.42423_2.53556
5.24524_6.35352
13.43663_9.59301
16.93821_5.23428
・
・
という形です.
『_』はスペースです.
0217デフォルトの名無しさん
05/01/31 00:27:46そんなに違いますかね?
コンパイル時ってことは評価されるのは一度だけですよね?
0218デフォルトの名無しさん
05/01/31 00:30:23え?
評価可能なパターンが入っているかどうか、
いやらしい眼でなめずるように見るか、
それとも見ないかの違いじゃないのか?
実行時に作用しないか?
0219Hiro58
05/01/31 00:40:18perlは素人の言語なのでしょうか?その会社の人はphpかaspとかいっているのですが、わざわざ変える必要はあるのでしょうか?
0220デフォルトの名無しさん
05/01/31 00:45:34じゃあ、なでしこで。
0221デフォルトの名無しさん
05/01/31 00:48:02はてなのシステムはPerlだそうだが。
phpのほうが素人っぽくないか…?
0222デフォルトの名無しさん
05/01/31 00:49:090223デフォルトの名無しさん
05/01/31 00:53:11そんなことないと思うが、その場で反駁できなかった時点で負けと思ってほかの言語で頑張れ。
0224デフォルトの名無しさん
05/01/31 01:01:57その会社の人は間違いなく素人
違うところでバイトした方が君のためだ
0225デフォルトの名無しさん
05/01/31 01:02:37顧客の見たPerl感はPerl4と個人サイトの掲示板なんだろうなぁと想像
とりあえずPerl5で作って、Perlで作られているものの代表例を言ってみることをお勧め。
Movable Typeとか。
0226デフォルトの名無しさん
05/01/31 01:48:25御存じなら教えていただけないでしょうか?
TL10DにUpdate kitを当てた状態で、
Perl/Tkを使いwedgitに日本語を表示させたいのですが文字化けします。
Tcl/Tkのwishでは問題なく表示されているので、
Perl/Tkの問題のように思いますがGoogleでも、
TurboのHPでも有効な情報は検索できませんでした。
環境は以下の通りです。どうぞよろしくお願いします。
tcl-8.3.5-18
perl-Tk-800.023-4
perl-5.8.0-11
0227Hiro58
05/01/31 01:50:45まあ、社員はみんな良い人で社長もいい人☆バイト代もたくさんもらえるので
がんばってperlで続けてみます。
そういえばaspだとすごいWebアプリが作れそうな気がするのですが…。
ユニクロとかaspだし。でも簡単にはできないですよね。。
>>224
その通りです。会社で誰も作れる人がいないのでバイトの自分がプログラム
してます。
0228デフォルトの名無しさん
05/01/31 02:08:460229デフォルトの名無しさん
05/01/31 02:17:18>>3
テンプレくらい嫁
0230デフォルトの名無しさん
05/01/31 02:25:08>aspだとすごいWebアプリが作れそうな気がするのですが…。
試してみれば?
ttp://www.microsoft.com/japan/users/recipe/
ttp://www.microsoft.com/japan/msdn/asp.net/webmatrix/
0231デフォルトの名無しさん
05/01/31 02:29:10まあ、PerlにもWebアプリケーションフレームワークは色々あるみたいだし。
0232デフォルトの名無しさん
05/01/31 02:47:18お前の腕次第だ。馬鹿。
asp使ってもお前にはすごいWebアプリが作れるとは思えない。
0233デフォルトの名無しさん
05/01/31 02:53:09ウェブ開発で不可能なことは無いしね。作る人次第だ
0234Hiro58
05/01/31 02:58:55visualC#でもやってみようかと。。どちらにしろ、そこまで大きな依頼は
無いのでやはり必要ないかもしれないですね(スイマセン)今のところHPの管理ページ
のみなので。(ショッピングカートや在庫管理など)
>>231
Webアプリケーションフレームワークありました。とりあえず「Sledge」を見つけたのですが、スクリーンショット
など無くて、どのようなもんか想像できないです(泣)
0235デフォルトの名無しさん
05/01/31 03:03:340236デフォルトの名無しさん
05/01/31 04:02:05WINのActivePerlなら、下のコードで こんにちは と
確かに表示できるので、use encoding "cp932"; とSJIS指定してる
ところで、EUCでも指定すれば、出来ると思うけどなぁ。
(ActivePerlでは、cp932と指定しないと化ける)
use Tk;
use encoding "cp932";
$mw = MainWindow -> new;
$lb = $mw -> Label(-text => "こんにちは!", -font => 'System') -> pack();
MainLoop;
0237デフォルトの名無しさん
05/01/31 15:41:33Cやshでも使ってやれよ。
0238デフォルトの名無しさん
05/01/31 15:41:38>のみなので。(ショッピングカートや在庫管理など)
B2C?
SSL とか 負荷分散とか FW までヤラサレル悪寒 (((( ;´ω`))) カクカクプルプル
0239デフォルトの名無しさん
05/01/31 21:18:27if($a==/[abcdefghi]/){〜〜〜}
でいいのでしょうか?
0240デフォルトの名無しさん
05/01/31 21:23:290241デフォルトの名無しさん
05/01/31 21:23:53やりたいのはこういうことかな
if($a !~ /[^abcdefghi]/){〜〜〜}
0242デフォルトの名無しさん
05/01/31 21:25:09if ($a =~ /\A[abcdefghi]\z/) { 〜〜〜 }
0243241
05/01/31 21:29:42=~でしたね
すみませんでした。
0244デフォルトの名無しさん
05/01/31 21:35:54if ($a =~ tr/abcdefghi// == 1) {〜〜〜}
0245デフォルトの名無しさん
05/01/31 21:38:12if (-1 < index('abcdefghi', $a)) {
;
}
0246デフォルトの名無しさん
05/01/31 21:40:15\Z のZは、小文字でも良いんだっけか?
if ( $a =~ /\A[a-i]\Z/ ) { 〜〜〜 }
0247デフォルトの名無しさん
05/01/31 21:54:30違うものだよ。
\Z Match only at end of string, or before newline at the end
\z Match only at end of string
0248デフォルトの名無しさん
05/01/31 22:18:24大文字Zだと$aの中身が "a\n" でもマッチしちゃうのね。
納得。お勉強になった。つか、ずっと勘違いしてた。
ご指摘、サンクスです。
0249デフォルトの名無しさん
05/01/31 22:20:58と書く前にさっとマニュアルを見るという行動が
なぜ出来ないのかと。
0250デフォルトの名無しさん
05/01/31 22:30:12\z って、最近実装されたんでね?
0251デフォルトの名無しさん
05/01/31 23:22:45御親切に御回答いただき有難うございます。
残念ながら御指摘の点を以下のように変更し実施しましたが、
文字化けの現象を回避するには至りませんでした。
暇を見付けて、もう少し検証を続けてみようと思っております。
有難うございました。
use encoding "euc-jp";
0252デフォルトの名無しさん
05/01/31 23:25:32> \z って、最近実装されたんでね?
それで?
いや、だから、
% perldoc perlre
に相当するアクションを行なわないのはなぜかと。
どういう問題があるの?
Winだと、添付マニュアルは、htmlで提供されてい
たりするんだっけ。
0253デフォルトの名無しさん
05/01/31 23:32:00それ間違ってねえ?
0254デフォルトの名無しさん
05/02/01 01:03:18$num = @array;
でわかりますよね。
では,配列の配列(リストのリスト) の要素数を知りたい場合はどうすればいいでしょう?
たとえば,
1年1組は生徒数30人
2年1組は生徒数32人
3年1組は生徒数31人
という学校を,
@array[学校のクラス][各クラスにいる生徒の数]
という配列に当てはめたとき,
$num = @array;
とすると「$num = 3」(クラス数)になります。
そうではなくて,
num[1] = 30(1年1組)
num[2] = 32(2年1組)
num[3] = 31(3年1組)
という感じで各クラスの数を知りたい場合にはどうすればいいでしょうか?
0255デフォルトの名無しさん
05/02/01 01:04:35という感じで各クラスの数を知りたい場合にはどうすればいいでしょうか?
(正)
という感じで各クラスの生徒数を知りたい場合にはどうすればいいでしょうか?
です。
すみません。
0256デフォルトの名無しさん
05/02/01 01:04:52しょうか?
0257デフォルトの名無しさん
05/02/01 01:09:32質問する前にsearch.cpan.orgで調べようと思わんのか?あーん?
0258デフォルトの名無しさん
05/02/01 01:11:05まず、その配列の配列の実装方法わかってる?
(@arr1, @arr2)じゃ駄目、リファレンスを使う。
リファレンスについて調べれば自ずと方法がわかるはずだ。
0259デフォルトの名無しさん
05/02/01 01:11:20なにがしたいのかよくわからんが
$array[1] = 30;
ではいかんのか。
0260デフォルトの名無しさん
05/02/01 01:11:46$num[1] = @{$array[1]};
0261デフォルトの名無しさん
05/02/01 01:19:530262デフォルトの名無しさん
05/02/01 02:28:00頭悪いね
>>259
超頭悪いね
0263デフォルトの名無しさん
05/02/01 02:38:12超絶的に頭悪いね。
0264デフォルトの名無しさん
05/02/01 08:25:01# @array[学校のクラス][各クラスにいる生徒の数]
# では、あやしいので、
# @array[学年][クラス] [生徒]= 各生徒のデータ
# のとき
# (1年2組)
my $num = @{ $array[1][2] };
0265デフォルトの名無しさん
05/02/01 11:45:43↑これってどういう意味…?
特に最後の『\@』の意味がわからん…。
誰か教えてくれ〜。
0266デフォルトの名無しさん
05/02/01 11:47:37参照渡し
0267デフォルトの名無しさん
05/02/01 12:04:14「デリファレンス」でググるとピンポイントですごい命中
0268デフォルトの名無しさん
05/02/01 13:05:37ホントだ。「デリファレンス」って Perl 以外では使われない用語?
0269デフォルトの名無しさん
05/02/01 14:52:03むしろ日本(ry
0270デフォルトの名無しさん
05/02/01 14:52:21$fuga = '$2,$1,moge';
# ...
$piyo =~ s/$hoge/$fuga/;
こんな感じに動的に$fugaの中の$1,$2を評価したいのですが、
どんな方法を使えばいいでしょうか。
0271デフォルトの名無しさん
05/02/01 14:52:51C系の「ポインタ」は「参照を値に戻す」という概念ではない。
「リファレンス」を使うJavaは基本的にプログラムでデリファ
レンスしない(Javaが自動で行う)
PHPにはあったような希ガス
0272デフォルトの名無しさん
05/02/01 15:14:06evalを使って、実行式をその都度生成。
0273デフォルトの名無しさん
05/02/01 15:18:39my $hoge = '(foo|bar)([baz]+)';
my $fuga = q/"$2,$1,moge"/;
my $piyo = 'barb';
$piyo =~ s/$hoge/$fuga/ee;
print $piyo;
0275デフォルトの名無しさん
05/02/01 16:03:180276デフォルトの名無しさん
05/02/01 16:13:590277デフォルトの名無しさん
05/02/01 17:25:16Delivery-date: Mon, 11 Aug 2003 22:49:59 +0900
Received: from lupin by eqv.ne.jp with local (MailPost 5.6)
id HJGJRA-0001JO-00
for [email protected]; Mon, 11 Aug 2003 22:49:58 +0900
To: [email protected] (MINE Fujiko)
From: LUPIN III <[email protected]>
Subject: yeah!
X-mailer: My Post Tester V1.0
Message-Id: <[email protected]>
Date: Mon, 11 Aug 2003 22:49:58 +0900
Dear mine@:
Hello, Fuuujiko Chaaan!
Are you OK?
--
lupin
このメールが誰から誰へ送信されたものか、また本文を示すスクリプトを作りたいのですが
どなたか分かる方いらっしゃったらよろしくお願いします。
0278デフォルトの名無しさん
05/02/01 17:42:32> このメールが誰から誰へ送信されたものか、また本文を示すスクリプトを作りたいのですが
> どなたか分かる方いらっしゃったらよろしくお願いします。
メールのテキストから、それが誰から誰へ送信されたものなのかを
厳密に同定する技術的手段は存在しない。
もちろん「誰から誰へ送信されたものということにしてあるか」は
ヘッダから抽出可能であり、そのレベルのもので良いのなら、可能だろう。
ヘッダとボディは、「最初の空行」で分割される。
っていうか、のあたりをやるモジュールがあるはず。
0279デフォルトの名無しさん
05/02/01 18:53:54backgroundでは駄目なんでしょうか?
0280デフォルトの名無しさん
05/02/01 19:12:52> っていうか、のあたりをやるモジュールがあるはず。
http://search.cpan.org/~markov/MailTools-1.66/
がどんぴしゃりかな。
0281デフォルトの名無しさん
05/02/01 19:12:54>>1
0282デフォルトの名無しさん
05/02/01 20:05:00わかるよ
0283デフォルトの名無しさん
05/02/01 23:12:40>>282
詳しく教えて下さい。
仕組み的に無理だと思うのですが。
0284デフォルトの名無しさん
05/02/01 23:39:43「キーボードから日本語のデータを入力し、1字づつずらしながら表示し、
ファイルにそのデータを出力する。」の方法を教えてください!
0285ゆうこりん
05/02/01 23:57:411、1月1日が土曜日の平年について、曜日の入力データからその月日
をすべて表示する。
2、2つのファイル{英文と日本訳}を読み込み、行数を数えながら、
表示し、新しいファイルを作成する。
マジわからなくて困ってます!よろしくお願いします!
0286デフォルトの名無しさん
05/02/01 23:59:41こういうバカが絶対に業界に来ないようにする方法って
ないものだろうか。
0287デフォルトの名無しさん
05/02/02 00:01:56>詳しく教えて下さい。
>仕組み的に無理だと思うのですが。
横からなんだが、しかも全然詳しくないんだが、
メールヘッダの送信先を偽るのは簡単だけど、ルーティング情報を隠すのは
難しいとされてるみたいだよ。
メール ルーティング情報 とかで、ぐぐってみれば?
詳しくないので、このへんで。
0288デフォルトの名無しさん
05/02/02 00:30:36詳しくない人は、頓珍漢なこと言いながら出て来るのはやめて。
0289デフォルトの名無しさん
05/02/02 00:30:48system "stty raw";
open F,">>test.txt";
while ($c = getc) {
last if ord($c) == 13;
print F $c;
}
close F;
(除ActivePerl@Windows)
0290デフォルトの名無しさん
05/02/02 02:10:52Received: メールの経路情報
送信メールがどのサーバーを経由して配送されたかがわかる。
Received:ヘッダは複数あるのがふつうで、
その場合は下の方にあるほど送信元となる。
0291デフォルトの名無しさん
05/02/02 03:04:39> Received: メールの経路情報
× 送信メールがどのサーバーを経由して配送されたかがわかる。
○ 送信メールがどのサーバーを経由して配送されたかがわかることになっているが、偽造可能。
> Received:ヘッダは複数あるのがふつうで、
× その場合は下の方にあるほど送信元となる。
○ その場合は下の方にあるほど送信元となることになっているが、偽造可能。
0292デフォルトの名無しさん
05/02/02 03:14:09それ以前に、Recievedにはユーザ名が入ってないって。
0293デフォルトの名無しさん
05/02/02 04:59:370294デフォルトの名無しさん
05/02/02 07:07:09スパマーは Received ヘッダを偽造して追跡から逃れようとするのだが、
すべての Received ヘッダを偽造することはできない。
偽造された Received ヘッダは本来の Received ヘッダの下に現れ、
通常は一目で分かるほど偽物らしいものだ。
詳しくないので、このへんで。
メールサーバは黙って相手の名乗りを信じるのではなく、
DNS 検索を行い、相手の本名を発見し、ヘッダに記録する。
0295デフォルトの名無しさん
05/02/02 07:48:490296デフォルトの名無しさん
05/02/02 08:05:57文章の段落を繰り返す回数の入力でデータを作成する。
(一行のデータは30文字とする。)
※wordで、直接入力で =rand(2,4)と入力するのと同様のプログラム
実行結果例:
文字入力:今日は晴れるが、明日は雨が降る。
繰り返し回数:3
段落数:2
本日は晴天なり。明日は雨が降る。本日は晴天なり。明日は雨が降
る。本日は晴天なり。明日は雨が降る。
本日は晴天なり。明日は雨が降る。本日は晴天なり。明日は雨が降
る。本日は晴天なり。明日は雨が降る。
0297デフォルトの名無しさん
05/02/02 08:07:08教えてもらえないでしょうか??
0298デフォルトの名無しさん
05/02/02 08:11:07print '文字入力:';
my $str = <>;
chomp $str;
print '繰り返し回数:';
my $count = <>;
print '段落数:';
my $p = <>;
print $str x $count, "\n\n" for(1..$p);
適当に書いたけど一応動作確認済み
0299デフォルトの名無しさん
05/02/02 08:16:05print '文字入力:';
my $str = <>;
chomp $str;
print '繰り返し回数:';
my $count = <>;
print '段落数:';
my $p = <>;
$line = $str x $count;
$line =~ s/(.{30})/$1\n/g;
print $line, "\n" for(1..$p);
0300デフォルトの名無しさん
05/02/02 08:21:31my $mojiretu = ' 文字入力:今日は晴れるが、明日は雨が降る。 ';
my $repeat = 3;
my $danraku = 2;
$_ = $mojiretu x $repeat;
$_ = "$_\n\n" x $danraku;
print;
0301デフォルトの名無しさん
05/02/02 08:52:44ありがとうございました!!
0302296
05/02/02 09:08:45print"文字入力";
chomp($moji=<STDIN>);
print"繰り返し回数";
chomp($rep=<STDIN>);
print"段落数";
chomp($danraku=<STDIN>);
for ($i=0;$i<&danraku;$i++){
での形も教えてもらえないでしょうか?
0303デフォルトの名無しさん
05/02/02 09:13:130304296
05/02/02 09:17:29>>all
ごめんなさい!
どうしても分からなくて…
0305デフォルトの名無しさん
05/02/02 09:19:45for文の使い方くらい自分で調べろ。
0306296
05/02/02 09:30:02for文自体は調べて分かったんですが、
複数使うやり方がよく分からないんです・・・
0307デフォルトの名無しさん
05/02/02 09:41:38もう出来てるやん…まあ一応汚染チェックとか入れてみるか。
#/usr/bin/perl
use strict;
my ($moji, $rep, $danraku, $i, $j);
print"文字入力 : ";
chomp( $moji = <STDIN> );
while( $rep !~ /^[0-9]+$/ ){
print"繰り返し回数 : ";
chomp ($rep = <STDIN>);
}
while($danraku !~ /^[0-9]+$/){
print"段落数 : ";
chomp ($danraku = <STDIN>);
}
for ( $i = 0; $i < $danraku; $i++ ){
for ( $j = 0; $j < $rep; $j++ ){
print $moji;
}
print "\n\n";
}
書き殴り動作未チェック。カキコindent用に全角スペース入り。
perl的にはこういう回すだけのやつは(1 .. $rep) とか使いたいが、
c的、for文ネストの教科書的にはこんなもんだろ。
0308デフォルトの名無しさん
05/02/02 09:43:180309デフォルトの名無しさん
05/02/02 09:52:330310デフォルトの名無しさん
05/02/02 11:39:52という場合はどういう乱数の使い方をすればいいでしょうか?
$a=rand(10);
というのは 1〜10までの範囲で乱数を発生させる,というのはわかるのですが,
開始範囲が1からに固定になってしまいますよね。
乱数の範囲を指定できればいいな,と思っているのですが,こんなことってできるでしょうか?
0311デフォルトの名無しさん
05/02/02 11:48:40> $a=rand(10);
>
> というのは 1〜10までの範囲で乱数を発生させる,というのはわかるのですが,
違います。
> 乱数の範囲を指定できればいいな,と思っているのですが,こんなことってできるでしょうか?
例えば、3に4を足すと、7になるということは知っていますか?
0312デフォルトの名無しさん
05/02/02 11:56:11sort (coreutils) 4.5.3
で
sort -n -k2 -k3
のようなことをしているのですがこれをperlで
実現できる手段はありませんか?
0313デフォルトの名無しさん
05/02/02 11:56:310314デフォルトの名無しさん
05/02/02 12:04:31ある。
0315デフォルトの名無しさん
05/02/02 12:58:54&sendmail # 更新データメール送信
&view # 更新後データ表示
こんな流れでやってるのですが、&sendmail でちょっと時間がかかるので
&view までモタモタしてしまいます。
&sendmail の返りを待たずに &view の処理に進ませるにはどうやるのでしょうか。
0316デフォルトの名無しさん
05/02/02 13:04:24forkしてやるとか、alarmと$SIG{ALRM}で平行に流すとかまあいろいろある。
このへんのキーワードでググってみてくれ。
0317デフォルトの名無しさん
05/02/02 13:06:08®ist # データ更新
&view # 更新後データ表示
&sendmail # 更新データメール送信
こんな流れでやるとか。
0318デフォルトの名無しさん
05/02/02 14:18:28>>317
forkで望みどおりできました。
ありがとうございました。
0319312
05/02/02 16:15:13314様 ありがとうございました
0320デフォルトの名無しさん
05/02/02 20:54:21314は、ネ申 だからな。実生活は別にして。
しかし、キミもエスパーだねぇ。
0321デフォルトの名無しさん
05/02/02 21:01:130322デフォルトの名無しさん
05/02/02 22:04:59Net::DNSでMXレコードを引いて、Net::SMTPで直接メール投げてた。
0323デフォルトの名無しさん
05/02/03 00:15:220324デフォルトの名無しさん
05/02/03 02:47:12別のファイルに書き込むにはどうすればいいでしょうか?
0325デフォルトの名無しさん
05/02/03 02:52:320326デフォルトの名無しさん
05/02/03 03:15:48File::Slurpでも使って、ファイルを配列に読み込み、
rand(@配列)という書式で乱数を生成し、既出行を排除しつつ
必要行数ピックアップし、出力用ファイルをopenして
そこに書き込めば良いです。
0327デフォルトの名無しさん
05/02/03 08:06:55> どうすればいいでしょうか?
ご自分で、調べ、考え、試行錯誤の上、どうしても解らないところだけ
質問して下さい。宿題丸投げスレでは、ありませんよ。
0328デフォルトの名無しさん
05/02/03 14:21:50※出力行重複未考慮
0329デフォルトの名無しさん
05/02/03 14:30:50> ※出力行重複未考慮
破壊検査
perl -e 'open F,"read.txt";open W,">result.txt";@f=<F>;print"Number:";$a=<STDIN>;print W splice(@f,int(rand(@f)),1)for(1..$a);';cat result.txt
でオケー
0330デフォルトの名無しさん
05/02/03 14:43:07http://search.cpan.org/~bigj/File-Random-0.17/Random.pm
0331デフォルトの名無しさん
05/02/03 16:30:29そのモジュールのrandom_lineというのがそれっぽいですが、
出力に重複を許してるような気がします。324の欲しいものは
どうなのかな?
紹介されていたアルゴリズムを利用して重複しない$N行を
抜き出すとしたらこんな感じだろうか。
while (<F>) {
if (@Line < $N) {
push @Line, {lno => $., str => $_};
} else {
if (rand($.) < $N) {
$Line[int rand($N)] = {lno => $., str => $_};
}
}
}
foreach (sort { $a->{lno} <=> $b->{lno} } @Line) {
printf W $_->{str};
}
0332デフォルトの名無しさん
05/02/03 17:39:37ヘッダーだけでしたらMail::Headerで文句無しなのですが
添付ファイルを含めパースしてくれるものを探しています。
自分である程度の物は作れたのですが精度がイマイチです。
my $mail = parser(*MAIL);
print "題名:$mail->{header}->{subject}\n";
print "差出人:$mail->{header}->{from}\n";
for my $file_name (@{$mail->{attach}){
print "---$file_name---\n"
print $mail->show_file($file_name);
}
このような事を実現出来るものはありますでしょうか。
0333デフォルトの名無しさん
05/02/03 18:38:14> メールをパースするいいモジュールはありませんでしょうか?
> ヘッダーだけでしたらMail::Headerで文句無しなのですが
> 添付ファイルを含めパースしてくれるものを探しています。
MIME関係は別扱いでMIME::*っていうのが色々あると
思うけど。
0334デフォルトの名無しさん
05/02/03 18:50:54WinXP+ActivePerl5.8.6で下のコードを実行するとperlが異常終了してしまいます。
use threads;
use encoding "euc-jp";
$th = threads->new(sub {print "thread: end.\n"});
$th->join;
print "main: end.\n";
use encodingの行をコメントアウトするとちゃんと動きます。
だれか助けて
0335デフォルトの名無しさん
05/02/03 19:02:13ホントだ。
Cygwin Perl(This is perl, v5.8.5 built for cygwin-thread-multi-64int)
でも再現した。
Segmentation fault (core dumped)
0336デフォルトの名無しさん
05/02/03 19:05:48MIME-toolsで望み通りの事が出来ました。ありがとうございました。
0337デフォルトの名無しさん
05/02/03 20:00:50$th = threads->new(sub {print "thread: end.\n"});
$th->join;
print "main: end.\n";
use encoding "euc-jp";
0338デフォルトの名無しさん
05/02/03 20:07:29http://bugs.activestate.com/query.cgi
同様のバグが報告されていないかこのページでチェック。
http://bugs.activestate.com/help.cgi
なければ、このページのSubmitting Bugs by Email に従って、
バグ報告しましょう。
0339デフォルトの名無しさん
05/02/04 12:04:30少ないデータをリクエストすると期待通りにデータを取得できます。
でも、多いデータをリクエストすると'500 SSL read timeout:'となってしまいます。
$ua->timeout(600)のコードを入れても3分ほどで終了してしまいます。
何とか10分くらいは待たせておきたいのですが、どうしたら解決できるのでしょうか。
どなたか教えてください。
これではいけないのでしょうか?
$ua = LWP::UserAgent->new;
$ua->cookie_jar($cookie_jar);
$ua->timeout(600);
0340デフォルトの名無しさん
05/02/04 12:20:42通常ファイルに吐かせて、その間「作業中ページ」を5〜10秒refreshで回す。
10分も(しかも待ちで)接続維持させるのはイクナイ。
0341デフォルトの名無しさん
05/02/04 12:32:52サーバー側の方はどうしようもないので、こちら側は待つしかないのです。
ブラウザーでダウンロードしてみたのですが、それは数分で終わりました。
問題は別のところにあるのでしょうか?
0342デフォルトの名無しさん
05/02/04 14:07:07調べようと考えました。全部読み込んで文字コード判定はアレゲなんで、10行ほど読んで、Joinして
判定しようかと考えたところ、ファイルの改行コードがCRのファイル、LFのファイル入り混じりなん
です。それでセパレータをCR,LF両方対応に出来ないかと思い、$/= "(\r|\n)";としてみましたが、
やはり正規表現は受け付けてくれませんでした。
レコードセパレータにCR,LF両方をいれるのは無理でしょうか?
また、日本語ファイルのテキスト・バイナリ判定に良い方法(数行読んで文字コードの判定以外に)
はありますでしょうか?教えてください。
0343342
05/02/04 14:12:310344デフォルトの名無しさん
05/02/04 14:33:44↑ そもそも正規表現じゃないし、
0345デフォルトの名無しさん
05/02/04 15:20:31search.cpan.orgで検索するとPerlIO::eolが使えそうな感じだが
試したことはないな。
しかし目的を考えると10「行」である必要はあまりないし、逆に
バイナリファイルだといつまでたっても改行文字が出てこなくて
大変なことになりかねないといったことを考慮すると、読み込む
量は適当なバイト数とかで決めた方がいくない?
0346342
05/02/04 15:56:23アリガトンです。全くもってその通りでした。readでやってみたら上手くいきマスタ。
↓こんな感じです。
use Encode::Guess qw/euc-jp shift-jis/;
print "text\n" if is_text("/foo/bar");
sub is_text{
$file = $_[0];
open FH,$file or die;
read (FH, $buf,200);
my $guess = Encode::Guess::guess_encoding($buf);
unless(ref $guess){return 0;}
else{return 1;}
}
0347デフォルトの名無しさん
05/02/04 15:57:49ってライブラリがあるんだけど、試したヤツいる?
ttp://www.tryhp.net/perllib.htm
この中で、ksubstrって関数があるんだけど、
----------------------------------
!/usr/bin/perl
require 'jcode.pl';
require 'perl-lib.pl';
$str = "コンピュータを使用している";
$a = ksubstr($str,0,5);
print $a;
----------------------------------
【結果】
コンピ
はえ?
実行環境 linux perl 5
0348デフォルトの名無しさん
05/02/04 16:56:58ソースを眺めたところSJISを仮定しているようだ。
1バイト目が0x81〜0x9f, 0xe0〜0xfcにあるときのみ
2バイト文字として扱われ、それ以外は半角カナを
含む1バイト文字とみなされているらしい。
で、「コンピ」がEUCだとすると
% echo コンピ | hex
0x00000000: a5 b3 a5 f3 a5 d4 0a - コンピJ
だからして、f3 a5の並びが2バイト文字他は1バイト文字
になってちょうど5文字という判定になるようですな。
しかし扱えるのがSJISだけだなんてどこにも書いてないぞ(笑)
0349デフォルトの名無しさん
05/02/04 17:07:02だよね?だよね?
俺もソースで
unpack("C", $string)
で返ってくる文字を一文字ずつチェックしてみたんだけど、
やっぱりおかしいんだよね。
if ($cn >= 129 && $cn <= 159 || $cn >= 224 && $cn <= 252)
の部分で文字コードを判別しているんだけど、
この部分をEUCに置き換えたいんだけど、
その文字コードをどうやって調べたらよいのか・・・
ちなみに、
$str = "コンピュータを使用している";
&jcode::convert(\$str,sjis);
$a = ksubstr($str,0,5);
とか
$str = "コンピュータを使用している";
&jcode::convert(\$str,jis)
$a = ksubstr($str,0,5);
とか挿入して判別させてみたんだけどとんでもない事になったよ。
0350デフォルトの名無しさん
05/02/04 17:35:31jcode.plの中にEUCの1文字にマッチさせるための正規表現があるので
これを参考にすればいいんじゃないかな。
$re_euc_c = '[\241-\376][\241-\376]';
$re_euc_kana = '\216[\241-\337]';
$re_euc_0212 = '\217[\241-\376][\241-\376]';
1文字が3バイトになるやつ(最後の$re_euc_0212)があるのがちと
面倒だろうけど、基本は同じはずだから健闘を祈る。
0351デフォルトの名無しさん
05/02/04 17:49:33ありがとう!!
道が見えてきたよ
0352デフォルトの名無しさん
05/02/04 18:23:18ちょっと使いにくいけど。
0353デフォルトの名無しさん
05/02/04 19:55:48cgiの入力フォームで送信ボタンを押した後など
ブラウザでリロードを行うと同じ処理が繰り返し行われてしまいます
そのせいで、例えばリストの中の2番目のデータを削除していた場合
リロードの度に新しく2番目となったデータが削除されていってしまうのですが
こういった場合にある程度経験のあるプログラマーの方は
どのようなやり方で解決しているのかお伺いしたいのですm(__)m
0354デフォルトの名無しさん
05/02/04 20:00:27http://pc5.2ch.net/test/read.cgi/php/1106816922/
0355334
05/02/04 20:10:41書き込んでからいろいろ情報探してたけど、解決方法は見つかりませんでした。
やはりバグなんでしょうか。
英語苦手なんで、どうやってバグ報告しようか。
0356353
05/02/04 21:11:26誘導ありがとうございましたm(__)m
0357デフォルトの名無しさん
05/02/05 00:18:59encodingのことならJcode.pmメーリングリストあたりで弾さんに相談してみるのも手。
0358デフォルトの名無しさん
05/02/05 00:38:49$tbl[0][0] = "00";
$tbl[0][1] = "01";
$tbl[1][0] = "10";
$tbl[1][1] = "11";
print "<TABLE BORDER=1>\n";
foreach $value (@tbl) {
print " <TR>$value\n";
foreach $value2 (@value) {
print " <TD>$value2</TD>\n";
}
print " </TR>\n";
}
print "</TABLE>\n";
何もでてきません
何がだめなんでしょうか?誰か教えてください・・・
0359デフォルトの名無しさん
05/02/05 00:39:46print " <TR>$value\n";
この行の$valueってのはデバッグ用です 消し忘れました
0360デフォルトの名無しさん
05/02/05 01:01:09あんたも板違い
0361デフォルトの名無しさん
05/02/05 01:15:580362デフォルトの名無しさん
05/02/05 01:28:050363デフォルトの名無しさん
05/02/05 09:28:02多次元配列でハマってるんだからそう板違いでもない罠。
そのデバッグコードで「ARRAY(0x10166cbc)」といった出力があるだろう。
外側のループでは$valueには配列へのリファレンスが入るので、
内側のループではデリファレンスしてやる必要がある。
× foreach $value2 (@value) {
○ foreach $value2 (@{$value}) {
perlでは多次元配列は作成出来ない。
多次元配列は配列へのリファレンスの配列を作ることになる。
CやVBから入ってきた人はここでつまづき易い。
つまりこの場合、
$tbl[0] には 無名配列 {"00", "10"} へのリファレンスが、
$tbl[1] には 無名配列 {"10", "11"} へのリファレンスが
代入されている。
$tbl[1][0] は $tbl[1]->[0] (または ${$tbl[1]}[0]) の略記。
C++経験者なら $tbl[1]->[0] でピンと来るだろう。
わかるかな〜?
0364デフォルトの名無しさん
05/02/05 13:07:21気をつけなきゃいけないのはバッファリングとシグナルの扱いぐらいなんじゃないの?
0365デフォルトの名無しさん
05/02/05 13:10:53$foo = undef; であるとき
if ($foo->{bar}->{baz}) {...} とかすると
$foo->{bar} = {}; が自動生成されてしまいますが
これを禁止する、あるいは自動生成しそうになったときに
自動的に die かなんかする方法ってないでしょうか?
0366デフォルトの名無しさん
05/02/05 13:33:530367デフォルトの名無しさん
05/02/05 13:40:46existsを使えば?
0368デフォルトの名無しさん
05/02/05 13:43:56サンクスです。
確かに毎回チェックすればオーケーなんですが
チェックせずに済む方法ってないでしょうか。
既にあるソースの中で、どこで自動生成しているのか簡単に突き止めたいのと
$foo->{level_1}->{level_2}->{level_3}->{level_4}->{level_5} ...
と階層が深くなった場合の要素の存在チェックが面倒なので…
0369デフォルトの名無しさん
05/02/05 13:51:31どもです。
exists使っても $foo->{bar}までは自動生成されてしまいます。
use strict に自動生成禁止とかのオプションってないのかなぁ...
0370デフォルトの名無しさん
05/02/05 15:01:49う〜ん、先日、auto-vivificationを禁止するモジュールを
見つけて何に使うんだろうと首をひねった記憶があるが、
どこで見たのか忘れた。
0371デフォルトの名無しさん
05/02/05 15:09:46http://search.cpan.org/~bpowers/Hash-NoVivify-0.01/
0372デフォルトの名無しさん
05/02/05 16:35:360373デフォルトの名無しさん
05/02/05 16:37:43ちがう
0374デフォルトの名無しさん
05/02/05 17:04:060375デフォルトの名無しさん
05/02/05 17:10:060376デフォルトの名無しさん
05/02/05 17:10:14> 5.8.5 → 5.8.6 の変更点がわかりやすく説明してあるとこ教えて。
http://search.cpan.org/~nwclark/perl-5.8.5/pod/perl585delta.pod
0377デフォルトの名無しさん
05/02/05 17:12:03> > 5.8.5 → 5.8.6 の変更点がわかりやすく説明してあるとこ教えて。
> http://search.cpan.org/~nwclark/perl-5.8.5/pod/perl585delta.pod
うわ、間違えた。
http://search.cpan.org/~nwclark/perl/pod/perl586delta.pod
だな……って、cpan内でリンクミスしてるんじゃん。
0378デフォルトの名無しさん
05/02/05 18:16:520379デフォルトの名無しさん
05/02/05 20:45:54メタ文字を展開するのに悩み、evalを使う事で何とか出来たんですが、余り意味がわかってない
せいか挙動が把握しきれません。
$a = '\d \t';
($pattern,$str) = split /\s/,$a;
$_ = 'one2three';
・s/$pattern/$str/g;
・eval {s/$pattern/$str/g};
$_ -> one\tthree
この2つでは、$patternは展開され、$strはメタ文字ではなくリテラル
eval "s/$pattern/$str/g";
$_ -> onethree
これでは、$patternは展開され、$strはメタ文字になります。
なぜ、eval " "でメタ文字が展開されるのでしょうか?
evalを使わないでメタ文字を展開する方法はありますでしょうか?
また、eval " "で展開しないようにするためにquotemetaしたんですが、2重にしなければ駄目でした。
\\tでは駄目、\\\tでは'\t'になる。これもなぜかわかりません。質問ばかりで申し訳ありませんが、
教えてください。
0380デフォルトの名無しさん
05/02/05 21:47:20>なぜ、eval " "でメタ文字が展開されるのでしょうか?
eval "s/$pattern/$str/g"; というのは、「s/$pattern/$str/g」という
文字列を展開し、展開した文字列を評価する、ということなのだから、
「$str」を" "で展開した結果、「\t」という文字列が現れたなら、
eval するとき、それはメタ文字のタブであると評価されるだろう。
>evalを使わないでメタ文字を展開する方法はありますでしょうか?
s/\\t/\t/g; のようなことをメタ文字ごとに繰り返すしかないだろうね。
それ以降の質問は、何をしたいのかよくわからん。
0381デフォルトの名無しさん
05/02/05 22:13:45とりあえず、evalを使う方向で問題に対処してみたつもり。
もうちょっと綺麗にならないかな・・・
$a = '\d \t';
($pattern,$str) = split /\s/,$a;
$str =~ s/"/\\"/g;
$_ = 'one2three';
s/$pattern/eval qq|"$str"|/eg;
説明は>>380さんもしていますが、
eval {s/$pattern/$str/g}; では、
s/$pattern/$str/ が、
eval "s/$pattern/$str/g"; では
s/\d/\t/g が評価されます。
eval ""は""を普通に文字列としてみるわけ。
0382デフォルトの名無しさん
05/02/05 22:15:140384379
05/02/05 22:38:19サンクスコです。ダブルクォート→evalの順に評価ということで、疑問が解けました。
お二人とも大変丁寧なご説明ありがとうございました。
最後の質問は
$str = '\\t' と $str = '\t'
の結果に差がないのが不思議だったんです。すいません質問が悪かったです。これについては
evalも少しは理解できたので、考えてみたいと思ってます。
0385デフォルトの名無しさん
05/02/05 22:58:00> s/$pattern/eval qq|"$str"|/eg;
オプションのeは、evalと同義なので
s/$pattern/qq("$str")/eeg;
で、よさげ。
>>384
> $str = '\\t' と $str = '\t'
' '内でも \' と \\は、展開されるからだと思う。
0386デフォルトの名無しさん
05/02/05 23:11:21(` ・ω・)づ ヘー
eオプション重ねられたんだ
添削ありがとう
0387デフォルトの名無しさん
05/02/05 23:26:26@list = qw(a b c d e);
$value = 'a';
if ($value in @list) { ....
のように包含条件を判定するものです。
演算子オーバロードでいけるのかな?と思ったのだけれど
+や-などの記号の類しかオーバーロードしてくれないようで…。
なんか関数の左側にある項が引数として渡ってくる方法があればよいのですが。
素直にgrep使えばいいといえば、そうなのだけれど。
0388デフォルトの名無しさん
05/02/05 23:55:21sub In($@){
my$val =shift;
for(@_){
return 1 if $_ eq $val;
}
return undef;
}
my@list = 'a'..'e';
my$value = 'a';
print "yes\n" if In($value=>@list);
↑じゃぁイヤかな〜?
0389デフォルトの名無しさん
05/02/06 00:22:23> 素直にgrep使えばいいといえば、そうなのだけれど。
grepはつねに全要素を処理するので効率が悪い。
0391デフォルトの名無しさん
05/02/06 00:53:52Switchなんかはどうやってるのかと見てみると、
Filter::Util::Callなんてのが出て来ました。
Perlのコードを解釈前/解釈時に置換できるみたいです。
その上にFilter::Simpleがあったのでちょっと使ってみましたが・・・
これ使うなら――がんがれ
0392デフォルトの名無しさん
05/02/06 01:05:17そこにこだわるなら。
use overload "nomethod" => nomethodMethod";
"nomethod" は、4 つのパラメータを持つ関数へのリファレンスが引き続きます。
これが定義されていれば、多重定義の仕組みで、 何らかの演算子に対するメソッドを
見つけることができなかったときに、 呼び出されます。 この関数の最初の 3 つの
引数は、本来、 呼ばれるはずだったメソッドに対する引数と一致し、4 番目の引数は、
見つからなかったメソッドに対応するシンボルとなります。 いくつかのメソッドが
試されている場合には、最後のものが使われます。 たとえば、1-$a であれば、 "nomethod" => "nomethodMethod" の組が use overload 指示子で 指定されていれば
&nomethodMethod($a,1,1,"-") と同様です。
0395デフォルトの名無しさん
05/02/06 02:03:17プリプロセッサに通すとか。
まあ、こんな事にこだわるのは、本末転倒だと思うけどな。
0396387
05/02/06 02:17:47>まあ、こんな事にこだわるのは、本末転倒だと思うけどな。
あは。それは認めるよ。
ただ、まぁ、自分はSwitch.pmもTry/CatchのError.pmも好んでuseするほうだからさ。
できればソースはすっきりしてるほうがいいじゃない?
0397デフォルトの名無しさん
05/02/06 02:27:070398デフォルトの名無しさん
05/02/06 15:56:02例えば
my $a = 100*200;
これは内部でどういう処理をしているのでしょうか?
Perlはコンパイルするだけだと思うのでスレ違いな気もしますが、
Perlしか知らないのでここでお願いします。
コンピュータは基本的にon/offの感知しかしませんよね。
もしかして100+100+100+.......
ていう行為をしているのでしょうか?
0399デフォルトの名無しさん
05/02/06 16:02:470400デフォルトの名無しさん
05/02/06 16:05:49「アセンブラ」を少し勉強すれば、コンピュータが何をしているのか解るだろう。
0401デフォルトの名無しさん
05/02/06 16:09:430402デフォルトの名無しさん
05/02/06 16:10:46二進数って知ってる?
十進法だろうと二進法だろうと数学は成り立つから安心汁
0403398
05/02/06 16:28:09ということはコンピュータはあらかじめ3*3の答えを知っていて、それを
どこかにメモリしているだけですか?
そもそも1+1というのは一つのハコに異なる二つを入れてソレを後から数えた結果ですよね。
掛け算はどうなのでしょうか?
コンピュ−タができる意味がわからんのです。
0404デフォルトの名無しさん
05/02/06 16:34:51Perlに関係ないってことはわかるよね?
0405デフォルトの名無しさん
05/02/06 16:38:04> コンピュ−タができる意味がわからんのです。
CPUの内部構造やらアーキテクチャにまで踏み込んだ本でも
買って読め。
0406デフォルトの名無しさん
05/02/06 16:47:42わざわざ指摘するまでも無くはじめに自分で言ってるじゃないか・・・
ここで答える気が無いなら適切なところに誘導するくらい汁
#漏れは答える
>>403
> ということはコンピュータはあらかじめ3*3の答えを知っていて、それを
> どこかにメモリしているだけですか?
それは高速化するための工夫であって原理とは少し違う
とりあえず、掛け算の前に足し算をどうやってるか知った方が良いと思ふ
原理的には、コンピュータが行う足し算は、
筆算での足し算方式を二進法でやったもの。
実際に紙に書いてでもやって見れ。
0407デフォルトの名無しさん
05/02/06 17:04:251100100 * 11001000 の筆算やってみ?
0408デフォルトの名無しさん
05/02/06 17:26:580409デフォルトの名無しさん
05/02/06 17:30:442chってどこもそうだろ?
0410デフォルトの名無しさん
05/02/06 18:35:08Filter::Util::Call面白そう。
サンクス。
0411デフォルトの名無しさん
05/02/07 00:17:09自己参照を含むリファレンスをweakenしても思うように動作してくれません。
use Scalar::Util qw(weaken);
my $outer;
{
my $inner = {id => 'inner'};
$inner->{self} = $inner;
$outer = $inner;
weaken $outer;
}
print Data::Dumper->Dump([$outer]);
の出力は
$VAR1 = {'self' => $VAR1, 'id' => 'inner'};
と、$innerが解放されずに自己参照が生きています。
まだ実験機能らしいしこういうものなのでしょうか?
ちなみに5行目の $inner->{self} = $inner; をコメントアウトすると
ちゃんと $innerのスコープ外で $outerはundefになります。
な、なんで??
0412411
05/02/07 00:20:510413デフォルトの名無しさん
05/02/07 00:25:54弱いリファレンスについては始めて知ったんだけど、
weaken $outer じゃなくて、
weaken $inner->{self} じゃないの?
まだ試してもいないから思いっきり見当違いだったらスマソ
0414413
05/02/07 00:30:52weaken $inner->{self};
weaken $outer;
両方やったら、
$VAR1 = undef;
成功した模様。
0415デフォルトの名無しさん
05/02/07 00:34:56ええ、私も始めそう思って weaken $inner->{self}したのですが
解放されませんでした。
perldocのサンプルが
{
my $var;
$ref = \$var;
weaken($ref); # Make $ref a weak reference
}
# $ref is now undef
となっているので411的な書き方でよいかとは思うのですが
どうも上手くいきませぬ。。。
0416デフォルトの名無しさん
05/02/07 00:39:32お!ほんとだ!!ありがとう神様!!
これで、自己参照セットするときに weakenしとけば解放忘れないということですね。
やった!!
0417413
05/02/07 00:45:24weaken $foo = $bar;
と書きたくなるけど、
weaken($foo = $bar);
じゃ無いと駄目なのね・・・
ところで、>>413に>>440なんて何所から出てきたのやらw
0418デフォルトの名無しさん
05/02/07 02:07:57たぶんこういうことだと思う。
use Scalar::Util qw(weaken);
my $outer;
{
my $inner = {id => 'inner'}; # 無名ハッシュのrefcount = 1
$inner->{self} = $inner; # refcount = 2
$outer = $inner; # refcount = 3
weaken $outer; # refcount = 2
}
# ブロックを抜けたので$innerがなくなりrefcount = 1
# これは $inner->{self}による参照が残っているから
ということで、414の言うようにweaken $inner->{self}を追加すると
ブロックを抜けた時点でめでたくrefcount=0になって解放されると。
循環リストみたいのつくっていらなくなったらまとめて消すのには
使えるかもしれないな。要素を保持する配列か何かが別途必要に
なるけど、普通だとまともに解放するにはデータ構造たどって全部
参照けすところをその配列消すだけですむのでだいぶ楽だ。
0419デフォルトの名無しさん
05/02/07 10:06:20すまん。これを利用してEUC文字列を検索しようと思っているんだが、
俺自体文字コードをよく理解してないんだけど、
'[\241-\376][\241-\376]';
ってどういう意味?
おそらく文字コード表のどこからどこまでって事だと思うんだけど、
その一覧みたいなのってあるのかな?
ググっても
http://www.rtpro.yamaha.co.jp/RT/docs/misc/kanji-euc.html
とかで良く分からんよ。
基礎的なことを覚えられるWEBってある?
0420デフォルトの名無しさん
05/02/07 10:16:278進数
0421デフォルトの名無しさん
05/02/07 10:21:53ありがとう。
環境linuxなんだけど、
echo 'コンピュータ' |hexdump -b
ってやると、
0000000 245 263 245 363 245 324 245 345 241 274 245 277 012
000000d
って出てきたんだけど、このコードのことだよね?
ふむふむ
これを検索すればいいのか・・・
マンドクセ
0422デフォルトの名無しさん
05/02/07 13:01:49つ ttp://euc.jp/i18n/charcode.ja.html#chap1
0423デフォルトの名無しさん
05/02/07 16:33:42%Ext = (
foo => {
path => "/foo",
data => [ "ab", "ac", "ad", "af" ],
},
bar => {
path => "/bar",
data => [ "cc", "cd" ],
}
);
このようなハッシュの配列があるとすると、
要素"af"が与えられた場合のpathの値を返す方法がわかりません。
どのようにすれば良いのでしょうか?
0424デフォルトの名無しさん
05/02/07 16:55:05use List::Util qw(first);
my $node = first {
first { $_ eq 'af' } @{$_->{'data'}}
} values(%Ext);
die 'not found' unless $node;
my $path = $node->{'path'};
0425デフォルトの名無しさん
05/02/07 17:02:29こういうアルゴリズムはどうやって覚えるのでしょうか?
なにはともあれありがとうございます!
0426デフォルトの名無しさん
05/02/07 17:20:470427デフォルトの名無しさん
05/02/07 17:32:170428デフォルトの名無しさん
05/02/07 18:25:23素直に考えてみた。
$target = 'af';
foreach (values %Ext){
push @result, $_->{'path'} if grep{ $_ eq $target } @{$_->{'data'}};
}
print join "\n", @result;
0429デフォルトの名無しさん
05/02/07 21:15:590430411
05/02/08 01:25:19解説ありが�d。
weakenはその参照がなかったことにする(参照カウントを一つ戻す)
関数ということで理解したよ。つまり、外部参照であれ循環や自己参照であれ
参照している部分を全てweakenしておかなければいけなかったんだね。
俺は1回やればOKなのだと思ってた。勉強になりました。ありがとう。
0431423
05/02/08 18:25:53覚えたてなので、いろいろなやり方がある事もわかって、
かなり勉強になりました。
もう少し難しい質問が出来るように精進します。
0432デフォルトの名無しさん
05/02/09 15:42:20>>429の言うデータ構造にしてみ。
たとえばこんな感じ。
%Ext = (
foo => {
map{$_ => "/foo"}( "ab", "ac", "ad", "af" ),
},
bar => {
map{$_ => "/bar"}( "cc", "cd" ),
}
);
$Ext{bar}{cd}
とか
$Ext{foo}{ad}
とかでアクセスできるよ。
0433デフォルトの名無しさん
05/02/09 17:42:560434デフォルトの名無しさん
05/02/09 18:30:43ケースですね。
0435デフォルトの名無しさん
05/02/09 18:53:43非常に良い意見だ。
perlウィザードになるとハッシュとリファレンスでおよそどんな
構造でも作れてしまうから逆にハマったりするんだよね。
0436デフォルトの名無しさん
05/02/09 19:26:58>>432のできが良くない構造をレスしたのは、俺なんだけど
自分で示しながら正直データ構造として使う気にはなれんしね。
各パスからdataを追加したり、削除したりするときにハマるのは目に見えてるし。
あくまでデータの内容が固定だったら、要素にアクセスする記述が簡単である
ていうしかメリットはなかったりする。
ただ、>>423がそれでことたりる話というのであれば
こういうアプローチもあるよって示しただけなんで。
まあ>>432は反面教師ということでヨロ。
0437デフォルトの名無しさん
05/02/09 19:39:520438デフォルトの名無しさん
05/02/09 19:49:30"/foo"=> ["ab", "ac", "ad", "af" ],
"/bar"=> ["cc", "cd"],
);
%Ext2 = map{my $key=$_; map{$_ => $key} @{$Ext{$key}} } keys %Ext;
print $Ext2{af};
0439デフォルトの名無しさん
05/02/09 21:05:000440デフォルトの名無しさん
05/02/09 21:06:50ないですかね?
Parse::RecDescentはなかなか良いんですが、LL(1)構文なので
左再帰ができないんですよね。
0441デフォルトの名無しさん
05/02/09 21:50:11Parse::Yapp でいいじゃねーか?
0442デフォルトの名無しさん
05/02/09 22:04:16しかも文章長いです。
win98で開発してます。
どーしてもperlで開発したいんですが「exeファイル」で「GUI」したいんです。
この時点で「あー、なんか俺って間違ってる」ってのは分かるんですが、perlがいいです。
ちなみに、ぶっちゃけGUI回りはperlの力じゃなくていいです。
内部処理をperlで作りたいだけです。
んで、実行環境は複数のマシンで使うんですが、OSは全部winでバージョンはなんかいろいろです。
perlはインストールされてるかどうかなんて知りませんし、ソース隠蔽したいから完全なexeにしたいです。
んで、試したのは、perl/Tk。これ微妙だけど使ってもいいとおもた。
exe化ではperl2exeとかやったらバグが多くて断念。しかも料金請求されたし。払う気ない。
あと、コンパイラはBCCとかあるけど、ヘボプログラマーなんで
どやってCとperlインタプリタごと全部コンパイルしてexeにしたらいいか分からんくて断念。
これから、ちょっと試してみたいと思うのは、画面だけHSPで作って内部処理は全部perlにやらせる、
ってのを試したいと思うけど、
どーせperlコンパイラごとexeになんて出来そうにないからきっと断念するんだろうな、と思っている。
なんか誰か簡単に出来るいい方法、アホな俺に教えて下さい。
0443442
05/02/09 22:09:32実行速度はそんなに重視しない。それなりに稼動すればOK.
実行ファイルも、でかくてOK。
GUI以外の内部処理がperlで作れて、どんなwin環境でも実行出きるexeならそれでいい。
ただし、お金は一切払わない。なんも買わない。
0444デフォルトの名無しさん
05/02/09 22:13:07pp
0445デフォルトの名無しさん
05/02/09 22:13:59ttp://namazu.org/~satoru/diary/20040716.html
0446デフォルトの名無しさん
05/02/09 22:28:25ネタはあっちでやれ
http://pc5.2ch.net/test/read.cgi/tech/1107946285/
0447デフォルトの名無しさん
05/02/10 03:49:040448デフォルトの名無しさん
05/02/10 03:55:180449デフォルトの名無しさん
05/02/10 05:09:060450デフォルトの名無しさん
05/02/10 10:05:33処理に時間がかかるスクリプトを foreground で実行して、
経過時間をリアルタイムで表示させたいんですが、ヒントいただけませんでしょうか。
0451デフォルトの名無しさん
05/02/10 10:33:15何所のヒントがほしいのかねぇ。キーワードを挙げれば、
時刻の取得 time関数
表示の更新 復帰文字(\r)
バッファリングの抑止 $|
ついでに、サンプルコードも書いちゃる
$|=1;
my $start = time();
while(1){
print "\r", time() - $start, 's';
sleep(1);
}
0452デフォルトの名無しさん
05/02/10 12:32:54盗っ人猛々しい乙! (*^ー゚)ノ
0453デフォルトの名無しさん
05/02/10 14:06:53おお!
まさに、「表示の更新」、「バッファリングの抑止」の方法が
知りたかったです。どうもありがとうございます。
勉強になりました!
0454デフォルトの名無しさん
05/02/10 14:16:400455デフォルトの名無しさん
05/02/10 14:43:351 while <IN>;
close IN;
print $.;
0456デフォルトの名無しさん
05/02/10 14:45:40print `wc -l hoge.txt`;
うそですうそです。
open R,"<hoge.txt";
$i++ while(<R>);
print $i;
0457デフォルトの名無しさん
05/02/10 14:50:49closeしちゃうと$.が(ry
0458デフォルトの名無しさん
05/02/10 17:53:04遺伝子配列を処理するperlのモジュールを
少しいじって出力形式を変えてやろう考えたのですが、
このモジュールの中で、
$$data = 0.;
とか書いてあるんですけど、なんなんでしょう、この$$って?
0459デフォルトの名無しさん
05/02/10 18:00:53リファレンス
0460デフォルトの名無しさん
05/02/10 18:18:55デリファレンス
0461デフォルトの名無しさん
05/02/10 18:30:10$var = "abcdefg';
$data = \$var;
print $$data,"\n";
$$data = "xyz";
print $var,"\n";
とすれば
abcdef
xyz
と表示される。
0462デフォルトの名無しさん
05/02/10 20:10:030463デフォルトの名無しさん
05/02/11 17:08:44Parse::Yappってコンパイラコンパイラですよね?
Parse::RecDescentのようなインターフェイスで
LRLA(1)構文のPerl製パーサってないのかな。
0464デフォルトの名無しさん
05/02/11 17:26:29阿呆?
0465デフォルトの名無しさん
05/02/11 19:59:09全然インターフェイスが違うじゃん。阿呆?
0466デフォルトの名無しさん
05/02/12 00:28:51・
・
キャラ名<>ID名<>パス<>a<>b<>c<>d<>e<>f<>g
こんな感じのキャラゲーのデータが10垢分あるのですが、
a〜gのデータを10垢分読み込んで、
aのデータのランキング、bのデータのランキング、cの・・・
っと7項目それぞれのランキングを表示させたいのです。
sortを使うのかな・・・程度しか思い浮かびませんが。。。
htmlへ表示させる時は、各$a、$b・・・だけを任意の場所に書き加えれば良い様に・・・
具体的にどう書けば宜しいのでしょうか?
どなたか御教授頂ければ幸いです。
0467デフォルトの名無しさん
05/02/12 01:46:530468デフォルトの名無しさん
05/02/12 02:19:11#aでランキング
print sort { (split "<>",$b)[3] <=> (split "<>",$a)[3] } @data;
0469デフォルトの名無しさん
05/02/12 09:17:35とりあえず素数を計算する所は出来たのですが、
計算した素数をファイルに保存しておいて、次にさっき計算した以上の素数を計算する時は、そのファイルを読み込んで追加で計算させたいんですが、、、 よろしくお願いします。
0470デフォルトの名無しさん
05/02/12 09:18:32#! c:/perl/bin/perl
$endnum = 100; #この数字まで計算
$x = 0; #素数の個数-1
$number = 2; #2から計算
$so[0] = 2; #素数に2を入れておく
# 計算
while($number <= $endnum) {
$s = 0;
while ($number % $so[$s] != 0) {
if($s == $x) {
++$s;
$so[$s] = $number;
++$x;
last;
}
++$s;
}
++$number;
}
++$x;
0471デフォルトの名無しさん
05/02/12 09:26:143965299226は素数ですか?
0472デフォルトの名無しさん
05/02/12 09:54:510473デフォルトの名無しさん
05/02/12 11:34:11読み書きするのがperlからだけなら、Storableモジュール使うのが
楽だよ。
0474デフォルトの名無しさん
05/02/12 16:00:08zlibによって圧縮されたデータが借りてるWEBサーバー(apache)へアップされてきます。
それをPerlによって解凍し、中身を読んで、ソートしたいのです。
zlibの解凍処理はどのようにしたら良いのか、なにか手段はありますでしょうか。
ググったら「Compress-Zlib-Perl」というのがソレかなーという感じなのですが、
どうもこれはサーバー側にインストールされるべきモジュールのような気もします。
あと、自作Perlソースに
use Compress::Zlib;
$dest = uncompress($source);
とか書いておいて、サーバー上で実行してもエラーが出ないので、
借りてるサーバーでも既に利用可能なのかなーと思いますが、それ以上の使い方や
動作チェックの方法がよくわかりません。
0475デフォルトの名無しさん
05/02/12 16:51:19http://lss.eternity.ne.jp/new/soft_add.php?5924
0476デフォルトの名無しさん
05/02/12 20:24:55ぐぐってみましたがよくわかりませんでした(泣
よろしければ、モジュールについて説明してもらえないでしょうか?
お願いします。
0477デフォルトの名無しさん
05/02/12 21:03:05abc => 1,
def => 2,
array => [0, 1, 2],
scalar => \'hello',
ref = {
aaa => {
bbb => {
123 => ['a', 'b']
}
}
}
};
みたいな複雑な変数をファイルに出力できる。
次回このファイルを読み込めば同じ変数を再現できる。
参考になりそうなキーワード シリアライズData::Dumper MLDBM
0478デフォルトの名無しさん
05/02/12 23:52:46ファイルを読み込んできて、そのファイルの中のプログラムを実行できるんですかね?
perlの本を買ってきます、、
0479デフォルトの名無しさん
05/02/12 23:59:10保存されるのはコードじゃなくデータ…
0480デフォルトの名無しさん
05/02/13 00:05:46計算した素数をファイルに保存するのは、
openを使うより、モジュールを使った方が楽って言うのがよくわかりません、、、
度々質問すいません。
0481デフォルトの名無しさん
05/02/13 00:15:30中断する事や計算した素数を他の処理で使う事を考えた場合の話だね
一回だけ起動して素数計算して終わりなら関係無いけど
0482デフォルトの名無しさん
05/02/13 00:32:280483デフォルトの名無しさん
05/02/13 00:41:58ラーメンを再び食べられる状態に戻す。
0484474
05/02/13 00:54:58次回Perlの起動時に、前回どこまで計算したかをファイルから復元する
…ってことでしょ。
>475
しょうもないミスの連発で時間かかりましたが、おかげでばっちし動きました!
こんな感じです。ひょっとして将来誰かの役に立てばと思い、メモっておきます。
#表示用、解析処理(引数=ファイル番号)
sub replayfiles_read {
#フルパスのファイル名を得る
$readfilename = "$replay_dir/$files[ @_[0] ]";
#リプレイファイルサイズを得る
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)
= stat( $readfilename );
#リプレイファイルをバイナリとして読み込む
open( IN, $readfilename );
binmode( IN );
sysread( IN, $buf, $size );
close( IN );
#zlib解凍
$dest = uncompress( $buf );
if ( !defined( $dest ) ) { return "zlib decode error"; }; #解凍失敗なら、退出する
#数値配列へ変換しておく
@data = unpack("C*", $dest);
…
0485デフォルトの名無しさん
05/02/13 00:58:42それよりも、ハッシュという言葉に気になったんだが・・・
何で素数をハッシュに入れるの・・・
0486デフォルトの名無しさん
05/02/13 03:50:520487デフォルトの名無しさん
05/02/13 03:54:37pregiはどこからパクってきたか知ってるか?
0488デフォルトの名無しさん
05/02/13 05:18:46>>486 は eregi と言っているが
0489デフォルトの名無しさん
05/02/13 10:07:58eregi関数は知らないが
こんなことはperlの得意技だと思うのだが。
0490デフォルトの名無しさん
05/02/13 13:32:31eregiは「大文字小文字を区別せずに正規表現によるマッチングを行う」。
つまりm//iとまあだいたい同じ。
違うのは正規表現のマッチングの方法。
>>486
っつーわけで、当然のようにあります。関数じゃないけど。
0491486
05/02/14 03:01:200492デフォルトの名無しさん
05/02/14 03:08:340493デフォルトの名無しさん
05/02/14 03:13:01入門書の最初の方すら読まないあなたには教えてあげられません。
0494デフォルトの名無しさん
05/02/14 03:23:02PHPのeregiを知ってるくらいだからpregiも知ってるだろう。
pregiを知ってたらこんな質問はしないだろう。
という皮肉のつもりだったが、だめか?
0495デフォルトの名無しさん
05/02/14 03:41:07>>490さんが教えてくれてますよ。m//i。
詳しくはperldoc perlre
0496デフォルトの名無しさん
05/02/14 03:42:140497デフォルトの名無しさん
05/02/14 04:03:39空耳かよw
>>491
Perlで正規表現は関数じゃない。
だから検索キーワードから関数をはずせ
0498デフォルトの名無しさん
05/02/14 13:37:19使いたい関数はkernel32のProcess32Firstです。
0499デフォルトの名無しさん
05/02/14 18:18:07ハァ?渡すものが分かっていて、何を渡したらいいか
分からないって、アンタ真性の(ry
0500デフォルトの名無しさん
05/02/14 18:24:250501デフォルトの名無しさん
05/02/14 18:28:520502デフォルトの名無しさん
05/02/14 18:46:00そんなのよりXML::SimpleのXMLoutを使うと属性で書き出されるのだがどうしてだ?
実行結果
<opt title="TEST">
<chapter body="XML/Perl TEST" subtitle="TEST - 1" />
<chapter body="Chapter2 ARR Test" subtitle="TEST - 2" />
</opt>
$VAR1 = {
'chapter' => [
{
'body' => 'XML/Perl TEST',
'subtitle' => 'TEST - 1'
},
{
'body' => 'Chapter2 ARR Test',
'subtitle' => 'TEST - 2'
}
],
'title' => 'TEST'
};
0503502
05/02/14 18:53:57#! /usr/local/bin/perl
use utf8;
use XML::Simple;
use Data::Dumper;
$x = new XML::Simple;
my $xml = $x->XMLin('test.xml');
print XMLout($xml);
print Dumper($xml);
__END__
test.xmlだが適当なデータを用意してくれ
環境
ActivPerl v5.8.6 built 811
perl 5.8.6 (cygwin)
0504デフォルトの名無しさん
05/02/14 19:13:11MCPANでImage::Magickモジュールを入れようとしましたが、エラーになってしまいました。
そこで、ついforce installをしてしまいました。その結果か、入っていないにもかかわらず、
MCPANではImage::Magick is up to dateと表示されてしまうようになりました。
現状どおり、Image::Magickが入っていないと表示されるようにするには、どのようにしたら
良いのでしょうか。よろしくお願いします。
0505デフォルトの名無しさん
05/02/14 19:49:26XML::Simpleはこの間使ったから良く知ってる
属性で書き出されないようにするには
NoAttr => 1
すればいい。
あと、chapterの所の出力形式で困ったら、GroupTagsを調べてみるべし。
0506デフォルトの名無しさん
05/02/14 20:01:42XMLは回答ついてるようなのでSleepの方。
たぶん秒より小さい単位のsleepが欲しいのだと思うが、
そのためには
(1) Time::HiResのusleepを使う
(2) select(undef, undef, undef, 0.25); とかする。
0508486
05/02/14 21:03:04しかし関数じゃなくてこんなの(?)なんすね・・なんかカルチャーショック・・・
0509デフォルトの名無しさん
05/02/15 02:01:190510498
05/02/15 09:15:11サンプルコードをください。
0511デフォルトの名無しさん
05/02/15 10:10:52use Getopt::Std;
getopt("abcde");
みたいにした時、「二つ以上の$opt_hogeが正なら」みたいな判断、
みなさんはどうやってますか。
条件処理ごとにフラグを立てるくらいしか思い浮かばなかったんだけど
なんかうまい手がありそうな・・・・。
0512デフォルトの名無しさん
05/02/15 13:29:30Perに慣れると何で他の言語では正規表現が
関数やクラスなんだと思うようになる。
0513デフォルトの名無しさん
05/02/15 14:11:28エディタのカラー設定をする時は何で関数じゃないんだと思うことがある。
0514デフォルトの名無しさん
05/02/15 18:26:43動作できないのでしょうか? クーロンで起動させたいのですが・・
0515デフォルトの名無しさん
05/02/15 18:30:16できる。
0516デフォルトの名無しさん
05/02/15 18:32:18エディタのカラー設定でperl5互換の正規表現が欲しくなることがある。
0517デフォルトの名無しさん
05/02/15 19:15:04thxs こ
0518デフォルトの名無しさん
05/02/15 19:27:32オフラインでperlで作成したcgiを作成した場合で、cgiにパラメータを引き継がせたい場合
どのように起動すればいいのでしょうか?
./exsampl.cgi?a=abc
でやるとエラーになりますた
0519デフォルトの名無しさん
05/02/15 19:41:28>>1
0520デフォルトの名無しさん
05/02/15 19:42:290521デフォルトの名無しさん
05/02/15 19:42:39http://pc5.2ch.net/test/read.cgi/php/1106816922/
0522デフォルトの名無しさん
05/02/15 19:52:29>質問ですが
>オフラインでperlで作成したcgi
うーん、コマンドラインでperlスクリプトを引数付きで起動させたいってこと?
だとしたらcgiじゃないよ。別に拡張子が.cgiでもいいけど
>でやるとエラーになりますた
エラーログは?
なんか基本的に勘違いしてる様子。
--test.pl
#!/usr/local/bin/perl
my $cmt = $ARGV[0];
print "$cmt\n";
で、コマンドラインから
$ ./test.pl baka?
ってやってみ
0523デフォルトの名無しさん
05/02/15 19:52:53誘導サンクスコ
0524デフォルトの名無しさん
05/02/15 19:55:34うまくいきますた
ちゃんとbaka?って でましたよ
どうもです
0525デフォルトの名無しさん
05/02/16 00:05:54use Getopt::Std;
getopt('abcde', \%opt);
print "OK\n" if(2 <= grep { $opt{$_} > 0 } a..e);
シンボリックリファレンス使うのがやだからちょっと変えた。
0526デフォルトの名無しさん
05/02/16 13:41:37use Getopt::Std;
getopt('abcde',\%opt);
print "OK\n" if ( keys(%opt) >= 2 );
print "$_ = $opt{$_}\n" for (keys %opt); # 表示 :)
ハードコードなくした。
0527デフォルトの名無しさん
05/02/16 14:23:48>>526
全てのオプションの重複を調べたいのはむしろ特殊な場合であって
普通はオプションの一部のいくつかが重複不可な方が多いような気が
する。a..eもkeysもやりすぎで列挙した方がいいのではないか。
0528デフォルトの名無しさん
05/02/16 21:42:180529デフォルトの名無しさん
05/02/16 22:19:21レスありがとうございます。
昼には読んでいたのですが理解するのに時間かかってました。
望み通りの挙動得られました。
一応確認なんですけど、
(数字 <= 文字列)
といった条件式の場合、というか不等号のような算術演算子の場合は
文字列は文字数として読まれる、てことだったんですね。
まだまだダメだなあ。おらー。
0530デフォルトの名無しさん
05/02/16 22:32:05いや、スカラコンテキストでgrep()はマッチした回数を、
リストはリストの要素数を、それぞれ返すって事。
0531529など
05/02/17 02:35:50あれこれ申し訳ない。いろんなとこ逝ってきます。
0532デフォルトの名無しさん
05/02/18 18:45:04DB<1> $str="abcde123fgh";$str =~ /(\d+)/;print "$1\n";
123
DB<2> $str="abcde123fgh";$str =~ /(\d+)/;
DB<3> print "$1\n";
となるんだけど、どうして$1は2行に渡って書くとなくなるの???
あと、カーソルキー使えないんだけども
設定ファイルとかでなんとかならないですかね?
This is perl, v5.8.2 built for i386-linux-thread-multi
0533デフォルトの名無しさん
05/02/18 23:27:09デバッガ内部でコマンドライン解析の為にマッチングを行ってるからだろうよ。
デバッガ書き直さないかぎりむりぽ。
(@mached) = "foo" =~ /(o)/g;
とでもするしかないな。
0535デフォルトの名無しさん
05/02/19 21:00:13$huga = ($hoge =~ m/h/g);
@hoge = ($hoge =~ m/h/g);
print "$huga\n\a";
foreach (@hoge) { print "$_ "; };
print "\n\a";
というコードで、
1
h
というように表示されるのですが、
@hoge の内容はなぜ
hh
にならないのでしょうか…
動作環境:v5.8.6 built for MSWin32-x86-multi-thread
0536デフォルトの名無しさん
05/02/19 23:36:51> $huga = ($hoge =~ m/h/g);
カッコが余分。リスト数が代入される。
$huga = $hoge =~ m/h/g;
と、すれば?
0537デフォルトの名無しさん
05/02/20 00:05:32> > $huga = ($hoge =~ m/h/g);
> カッコが余分。リスト数が代入される。
> $huga = $hoge =~ m/h/g;
> と、すれば?
($huga = $hoge) =~ m/h/g;
っしょ。
0538デフォルトの名無しさん
05/02/20 00:13:290539デフォルトの名無しさん
05/02/20 01:44:50週ごとのシフト表を登録・管理するためのCGIを組んでいます。
それで、週ごとにcsvファイルを新たに作って記録していきたいのですが、
ファイル名を20050220.csvのように日曜日の日付を基準につけたい場合に
どうすればいいのか悩んでいます。
例えば、2月28日月曜日にCGIから登録すると、
CGIは次の週の日曜日の日付を基準に20050306.csvというファイルを作り、
そこに内容を記録するといった風にしたいです。
($sec, $min, $hour, $day, $month, $year, $wday, $yday) = localtime(time);
$year += 1900;
$month++;
これを使ってなんとかアルゴニズムを作ろうとしてるんですが
四苦八苦しています・・・。
現在の日付・曜日から次の日曜日までの日数を計算して、
そこから月や日を処理しようとしてるんですがなかなか上手くいきません・・・
何か見落としてるんでしょうか・・・
0540デフォルトの名無しさん
05/02/20 02:02:42↓ この辺を参考にしてみては?
http://www.din.or.jp/~ohzaki/perl.htm#Date2WDay
0541デフォルトの名無しさん
05/02/20 02:29:05foreach (0..6) {
($sec, $min, $hour, $day, $month, $year, $wday, $yday) = localtime(time + 60*60*24*$_);
last if ($wday == 0); # 日曜なら終了
}
これでいいべ?
0542デフォルトの名無しさん
05/02/20 02:34:27# 一日は何秒?
my$day_sec = 24 * 60 *60;
# 後何日で次の日曜?
my$wday =( localtime(time) )[6];
my$next_sunday =(7-$wday)%7;
# で、何日?
my( $day, $month, $year ) =( localtime($day_sec *$next_sunday +time) )[3,4,5];
printf "%4d%02d%02d.csv", $year +1900, $month +1, $day ;
0543デフォルトの名無しさん
05/02/20 02:55:54# my( $day, $month, $year ) =next_weekday_date($weekday_No);# sun0~sat6
sub next_weekday_date($){
( localtime( 86400 *($_[0]+(7 -localtime[6] )%7) +time) )[3,4,5]
}
0544デフォルトの名無しさん
05/02/20 09:54:070545デフォルトの名無しさん
05/02/20 10:40:17なんかイイなっ!「に」。常用しようっと。
0546535
05/02/20 20:46:54$hoge = "hh"; # h は2回だけ
$huga = ($hoge =~ m/h/g); # マッチする
print "$huga\n\a"; # 1
$huga = ($hoge =~ m/h/g); # マッチする
print "$huga\n\a"; # 1
$huga = ($hoge =~ m/h/g); # 3回目マッチしない
print "$huga\n\a"; # ヌルポ 以下同様
となるのですが、これは仕様なのでしょうか…
動作環境:v5.8.6 built for MSWin32-x86-multi-thread
0547539
05/02/20 21:01:47レスありがとうございます。
おかげさまでうまく出来ました。
7で割った余りをとるのがミソだったんですね・・・
とにかくどうもありがとうございました。
0548デフォルトの名無しさん
05/02/20 21:27:26自分で答出してるじゃんw
0549デフォルトの名無しさん
05/02/20 21:27:37同じ文字列に対する連続したマッチ処理は、前回マッチが成功した位置を
覚えていてそこから開始される。この位置は pos によって知る事ができ、
マッチしなかったり、既に末尾に達していたり、別の文字列を評価した際に
リセットされる。
my $str = 'abcde';
my($rv, @rv, $pos);
$rv = $str =~ /a/g; $pos = pos $str; print "[$rv][$pos]\n"; # [1][1]
$rv = $str =~ /b/g; $pos = pos $str; print "[$rv][$pos]\n"; # [1][2]
$rv = $str =~ /f/g; $pos = pos $str; print "[$rv][$pos]\n"; # [][]
@rv = $str =~ /./g; $pos = pos $str; print "[@rv][$pos]\n"; # [a b c d e][]
$rv = $str =~ /c/g; $pos = pos $str; print "[$rv][$pos]\n"; # [1][3]
@rv = $str =~ /./g; $pos = pos $str; print "[@rv][$pos]\n"; # [d e][]
0550デフォルトの名無しさん
05/02/20 21:39:10$hoge = "hh"; # h は2回だけ
$huga = ($hoge =~ m/h/);
print "$huga\n";
$huga = ($hoge =~ m/h/);
print "$huga\n";
$huga = ($hoge =~ m/h/);
print "$huga\n";
$huga = ($hoge =~ m/h/);
print "$huga\n";
print "gあり\n";
$huga = ($hoge =~ m/h/g);
print "$huga\n";
$huga = ($hoge =~ m/h/g);
print "$huga\n";
$huga = ($hoge =~ m/h/g);
print "$huga\n";
結果
1
1
1
1
gあり
1
1
0551デフォルトの名無しさん
05/02/20 22:27:17仕様もへったくれも、"hh"に "h" が2回しかマッチしないのは
当然だろうが。3回目に何にマッチするってんだよ。
0552デフォルトの名無しさん
05/02/20 22:58:350553デフォルトの名無しさん
05/02/21 00:25:32以下のような感じでMIME:Parserを使ってみているのですが、FOMAから送信してjpgのファイルの時は成功して、3gpのファイルの時は失敗してしまいます。
mimetypeは取得できていて(image/pjpegとvideo/3gpp)ハッシュと名前つける関数を使ってファイル名を決めています。
とりあえずこの部分ソースでどこかツッコミはありますでしょうか?
一応添付ファイルは1件だけを想定してて、複数件あっても一つだけ処理できれば良いという考えです。
my $parser = new MIME::Parser;
$parser->output_to_core(1);
$entity = $parser -> parse_open("/var/mail/user");
my %hash_mime = ( 'image/pjpeg' => 'jpg', 'video/3gpp' => '3gp' );
@parts = $entity->parts;
$mimetype = $entity->parts($#parts)->mime_type;
# 保存するファイル名を取得
open (FILE, "> /home/user/http_data/image/file") || die "file open error!\n";
if( $#parts == 0 ){
print FILE $entity->parts(0)->bodyhandle->as_string;
}
else{
print FILE $entity->parts($#parts)->bodyhandle->as_string;
}
my $size = (stat(FILE))[7];
close( FILE );
}
0554デフォルトの名無しさん
05/02/21 00:34:480555553
05/02/21 00:50:24ファイル名を決めてファイルをオープンするところまでは上手くいってるようなんです。
メールのマルチパート処理の部分で、$entity->parts($#parts)->bodyhandle->as_stringで添付ファイルが
取れる場合と取れない場合があるんですよね。
本文 有り/無し
添付 jpeg/3gpp
のマトリックスでテストケース作ってもうちょい絞り込みしてみます。
0556553
05/02/21 01:39:36スクリプトではなく、添付したファイルが問題だったみたいです。
きちんとした3gppのファイルを添付したら上手く切り出せたみたいです。
お騒がせしました。というかお目汚ししてスミマセン。
0557542
05/02/21 01:42:21> 7で割った余りをとるのがミソだったんですね・・・
単なる思いつきだよ。
my$next_sunday =(0,6,5,4,3,2,1)[$wday];
とか、
my$next_sunday =( !$wday ? 0 : 7-$wday);
とか、でもいいし。
0558デフォルトの名無しさん
05/02/22 00:40:582005-01-07 14:30:52
2005-01-07 14:29:52
・
・
・
といった日付・時間がかかれたデータをUnix時間に変換するにはどうすればいいでしょうか?
やはり 365× 24× 60× 60 とか閏年を考えつつやっていくしかないのでしょうか?
0559デフォルトの名無しさん
05/02/22 00:56:300560デフォルトの名無しさん
05/02/22 14:21:16$cmd = "/full/path/to/command/";
みたいにしなくても適当に ($ENV{"PATH"} などから) 実行ファイルのパスを
探してくれるような便利モジュールがあれば教えてください。
0561529など
05/02/22 15:46:01$cmd = `cmd_name';
で実行してくれない?
0562デフォルトの名無しさん
05/02/22 16:18:19一定のコーディング規約に則ることを前提にして。
たとえば、
my $class = Class->new();
$class->methed();
package Class;
sub new {bless {}, shift;}
sub method {}
を実行前にエラーとして検出するには、
インスタンスを ->new で作るという規約があれば自動化できますよね。
0563デフォルトの名無しさん
05/02/22 16:18:43あ、もちろんいきなり実行するだけで構わないもの (`cmd` や system('cmd')) は
それで良いのですが、
引数としてコマンドのパス文字列を渡す必要のあるケース
(Expect の spawn() や IPC::Open3 の open3() など) では
ちょっと具合が悪いのです。
0564デフォルトの名無しさん
05/02/22 16:30:05自分で書いてもたいしたことはなさそうだが出来合いのが
欲しければこのへんだろう
ttp://search.cpan.org/~pereinar/File-Which-0.05/Which.pm
0565デフォルトの名無しさん
05/02/22 16:58:27ありがとうございます。早速使ってみます。
0566デフォルトの名無しさん
05/02/22 17:02:50正規表現のデミリタを/以外の文字に代えると、
その文字がデミリタと見なされる。
たとえば、|だったらorとぶつかり、{}だと範囲指定とぶつかるetc.
($str =~ s|ab(?!(?:d|e))|zz|g;は不正な構文になる)
でも/をデミリタに使いたくない。
こういうときは何をデミリタに使ってます?
0567デフォルトの名無しさん
05/02/22 17:25:060568デフォルトの名無しさん
05/02/22 17:27:160569デフォルトの名無しさん
05/02/22 17:41:33ども。寝ぼけてる。
/x使ってずらずらなんがいからコメント入れたくて
#も使いたくないときはどうでしょ?
0570デフォルトの名無しさん
05/02/22 17:48:460571デフォルトの名無しさん
05/02/22 18:08:57そもそもカッコ系はちゃんとバランスみるから中でその文字使っても
ペアで出てくる分には問題ないよ。
m{a{3,4}}とかm[[a-z]]とか試してみ。
0572デフォルトの名無しさん
05/02/22 20:01:240573デフォルトの名無しさん
05/02/22 20:49:400574デフォルトの名無しさん
05/02/22 21:14:490575562なんだけど
05/02/22 21:28:49デバッグの手間省いたりとかしてないの?
0576デフォルトの名無しさん
05/02/22 22:29:53いいからテストコード書けよ。
0577566
05/02/22 22:50:39"は大丈夫だね。
>>571
確かに大丈夫だった。データの中括弧団子の帳尻あわせみたいなことを
やってるときにおかしなことになったんで使わなくなってたけど
自分のバグだったみたい。
>>573
!だと>>566の例では引っかかる。
0578574
05/02/22 23:10:52漏れは、比較的長い時はカッコとxを使うよ。
s{ [a-z]{ 1, 6 }
| [A-E]{ 2, 8 }
| [F-Z]{ 3, 9 } # (?# ~ )使わずコメント入るし。
}{
hoge\ moge\ mage\n
}x;
とか。
0579デフォルトの名無しさん
05/02/22 23:29:10ふつうにする。エディタの整形機能とskkの補完機能と
-w && use stict,-cのSyntax Checkで間に合ってる。
562みたいな希望に沿うようなものを知らんから書かな
かっただけだよ。
0580デフォルトの名無しさん
05/02/22 23:33:08xyzzy?
0581デフォルトの名無しさん
05/02/22 23:51:340582デフォルトの名無しさん
05/02/23 01:36:590583デフォルトの名無しさん
05/02/23 01:47:360584デフォルトの名無しさん
05/02/23 02:01:340585デフォルトの名無しさん
05/02/23 07:51:010586デフォルトの名無しさん
05/02/23 11:57:030587デフォルトの名無しさん
05/02/23 12:02:49To: hanako <[email protected]>
って文があったら[email protected] --> [email protected]
って表示させる正規表現教えてください。
0588デフォルトの名無しさん
05/02/23 12:21:58perlpod
perlpodspec
0589デフォルトの名無しさん
05/02/23 12:40:31ありがとうございます。Pod 形式のドキュメントも perldoc であったんですね。
考えてみたら当然か。早速それ読んで勉強します。
0590デフォルトの名無しさん
05/02/24 00:02:53正直もうそろそろPerlプログラマもエディタは卒業だと思うのよ。
EclipseなどのIDEを使うべきだろ?
正規表現のデバックなんかエディタじゃ限界来てるもんなぁ。
0591デフォルトの名無しさん
05/02/24 01:17:08ちょっと質問なのですが、perlで買いカゴを作っているのですが、
メーカー選択画面はhtmlにして、買い物をするページはcgiにしたいのですが
買い物途中に違うメーカーに移る時にhtmlへ移動してしまうと買いカゴの情報を
保持できなくて困っています。
つまり、確実にクライアントを特定できる情報をゲットしたいのですが、
有効な手段が思いつきません。どなたか知恵をかしていただけませんでしょうか?
ちなみにIPアドレスではproxyサーバを経由している(会社内・学校内)場合
ローカルエリアネットワーク共通の買い物籠となってしまいます(爆)
0592デフォルトの名無しさん
05/02/24 01:38:200593デフォルトの名無しさん
05/02/24 01:56:11なるほど。ですが、最近はクッキーを受け付けないと設定している人が
多いような気がします。やはりクッキーしかないですかね?
0594デフォルトの名無しさん
05/02/24 02:03:10> 正規表現のデバックなんかエディタじゃ限界来てるもんなぁ。
「デバック」とか抜かしてるようじゃ、バグ出しまくりなんだろうな。
0595デフォルトの名無しさん
05/02/24 02:13:100596デフォルトの名無しさん
05/02/24 05:14:35コンソールでの文字の色を変えたいのですが、良いモジュールはありませんか?
0597デフォルトの名無しさん
05/02/24 09:23:05Term::ANSIColorとかどうよ。
0598デフォルトの名無しさん
05/02/24 11:14:27セッション情報として鯖に持たせるとか、ほかにも手はある。
まあ板違いだ罠。WebProg板池。
0599デフォルトの名無しさん
05/02/24 20:32:03Perl だとどうすればいいでしょうか?
0600デフォルトの名無しさん
05/02/24 20:48:52perldoc -q daemon
0601デフォルトの名無しさん
05/02/24 20:58:00for my $handle (*STDIN, *STDOUT, *STDERR){
open($handle, "+<", "/dev/null" ) || die "$!";
}
0602デフォルトの名無しさん
05/02/24 21:14:24ありがとうございます。クックブックこういうのも載ってるのかあ。
0603デフォルトの名無しさん
05/02/24 21:19:54制御端末とかセッションとかのからみがあるので、600が示した
faqの最後の方に紹介されてるProc::Daemonモジュールを使うのが
オススメです。
0604デフォルトの名無しさん
05/02/25 02:34:55誰か面白いの作ってる?
0605デフォルトの名無しさん
05/02/25 07:55:080606デフォルトの名無しさん
05/02/25 09:42:170607デフォルトの名無しさん
05/02/25 11:27:35どなたか教えてください。
windows上にて、perlでutf-8のテキスト処理を行っています。
テキスト処理はうまくいっているのですが、取り出した
UTF-8テキストでフォルダーを作成すると、文字化けの
フォルダーになってしまいます。
windows上で、普通に新規フォルダーを作成し、名前変更でUTF-8テキストを
ペーストしたらうまくいくのに、perlからだとうまくいきません。
フォルダ作成は mkdir("utf-8テキスト"); としています。
何か設定があるのでしょうか?
お助けお願いします。
perlは5.8.6を使用しています。
0608デフォルトの名無しさん
05/02/25 11:47:14>windows上で、普通に新規フォルダーを作成し、名前変更でUTF-8テキストを
Windowsはsjis。よってUTF-8は文字化けするのが仕様。
0609デフォルトの名無しさん
05/02/25 11:54:57Win2000でのファイル名、フォルダー名にユニコード使えますよね。
perlがDOSベースで動作している?ので、できないということに
なるのでしょうか?
0610デフォルトの名無しさん
05/02/25 13:54:32どうしたら良いのでしょう?
というのは、serializerに何を使うかは、
use MLDBM qw(DB_File Storable);
と、use時に指定する仕様になっているのです。
この場合、どうしたら良いのでしょう?
0611デフォルトの名無しさん
05/02/25 14:06:04マニュアルを読む限りでは
$MLDBM::Serializer or $OBJ->Serializer([SZROBJECT])
The global $MLDBM::Serializer can be set to the name of the serial-
izing package to be used. Currently can be set to one of
"Data::Dumper", "Storable", or "FreezeThaw". Defaults to
"Data::Dumper". Alternatively, you can specify the name of the
serializer package at "use" time, as the second "parameter".
じゃないかと。
0612デフォルトの名無しさん
05/02/25 14:43:51でいないはずがない。
use Encode;
#utf8flagが立っているUTF-8テキスト
mkdir( Encode::encode('Shift_JIS', $dirname) );
#単なるバイト列 UTF-8以外でもEUC-JPなどなんでもあり
Encode::from_to($dirname, "UTF-8" => "Shift_JIS");
mkdir($dirname);
>>610
データベースを作り直すしかないね。
0613610
05/02/25 14:44:36つまり、Data::Dumperを使って作ったDBファイルを、Storableを使うものに
変換したいというわけです。
>>611
ところが、異なるserializerは排他のようなのです。
入力用と出力用に、tieなり$OBJ->Serializerで指定なりすると、
2番目の指定で
Can't locate auto/Storable/serialize.al in @INC (モジュールパス一覧) at /usr/local/lib/perl5/site_perl/5.8.6/MLDBM.pm line 160
などと出る始末。逆でもStorableがData::Dumperになるだけで同様です。
異なるpackage内でそれぞれやればなんとかなるかな?
あるいは、いったんダンプして、別プログラムで新DBを作る?
と、いろいろやってます。
0614デフォルトの名無しさん
05/02/25 14:55:270615デフォルトの名無しさん
05/02/25 15:09:14use Encode;
$fname = "■■■";
Encode::from_to($fname, "UTF-8" => "Shift_JIS");
open( OUT_FILE ,">$fname.txt");
close( OUT_FILE );
mkdir($fname);
上記スクリプトをUTF-8形式で作成。
上記実行でファイルとフォルダの名前は"■■■"に、
Encode行を外して実行すれば、ファイルとフォルダの名前は
"文字化け"になります。
実はこの名前全部もしくは中に「SHIFT-JIS外」の文字があった場合です。
この場合、
Encode行を外せばファイルとフォルダの名前は"文字化け"に
Encode行有効では、ファイルもフォルダもできません。
・・・
0616デフォルトの名無しさん
05/02/25 15:14:37こういうこと?
use MLDBM;
use Fcntl;
$dbm1 = tie %o1, 'MLDBM', 'testmldbm', O_CREAT|O_RDWR, 0640 or die $!;
$MLDBM::Serializer = 'Storable';
$dbm2 = tie %o2, 'MLDBM', 'testmldbm2', O_CREAT|O_RDWR, 0640 or die $!;
while (($k, $v) = each %o1) {
$o2{$k} = $v;
}
0617デフォルトの名無しさん
05/02/25 21:22:56あり得ます
0618デフォルトの名無しさん
05/02/25 21:34:04>実はこの名前全部もしくは中に「SHIFT-JIS外」の文字があった場合です。
意味不明。
0619デフォルトの名無しさん
05/02/25 21:36:46だめなときはopenとmkdir失敗してそうだから、or die $!つけて
エラーメッセージ見れば何か手がかりになるかもナ。
0620デフォルトの名無しさん
05/02/25 21:48:45き、貴様、まさかSantyを知らないのか!?
あれだけ大きなニュースになってたワーム(広義ではウィルス)を
ニュース
http://www.itmedia.co.jp/news/articles/0412/22/news005.html
http://www.itmedia.co.jp/enterprise/articles/0412/22/news026.html
http://www.itmedia.co.jp/enterprise/articles/0412/22/news031.html
Symantec
http://www.symantec.com/region/jp/avcenter/venc/data/jp-perl.santy.html
0621610
05/02/26 15:57:40> つまり、Data::Dumperを使って作ったDBファイルを、Storableを使うものに
> 変換したいというわけです。
> 異なるpackage内でそれぞれやればなんとかなるかな?
> あるいは、いったんダンプして、別プログラムで新DBを作る?
結局、Storableで一括ダンプして、別プログラムで
一括リストアしてStorableなMLDBMにするという方法で
逃げました。
なんか釈然としないけど、とりあえず結果報告しておきます。
0622デフォルトの名無しさん
05/02/26 18:36:40Shift-JISで書かれたテキストをUTF-8に変換して
s///やm//で必要な部分を取り出してどうのこうのするスクリプトを書いています。
環境はPerl5.8で文字コードの変換にはEncode.pmを使っています。
スクリプト自体はUTF8で書いています。
もとのテキストの中にある丸に数字などのいわゆる機種依存文字を
どの環境でも見れる文字列に変換したいのですが、やり方がわかりません。
ttp://x68000.q-e-d.net/~68user/webcgi/char-code-2.html
に書いてある事を応用すればよいのだと思いますが阿呆なもので何をどうすればいいのかわかりません。
どうかご指導よろしくお願いします。
0623デフォルトの名無しさん
05/02/27 02:27:50クッキーの内容がブラウザに表示されてしまいました。
以下のプログラムは間違っているのでしょうか? どうしてもできずに泣きそうです(泣)
$cookie = "123";
$cookie =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
print "Set-Cookie: test=$cookie; expires=Thu, 1-Jan-2030 00:00:00 GMT\n\n";
0624デフォルトの名無しさん
05/02/27 03:10:080625デフォルトの名無しさん
05/02/27 13:00:31print "Content-type: txt/html\n\n";
↓
print "Content-type: txt/html\n";
さらに、>>623 の部分をこの行より前に書け。
0626デフォルトの名無しさん
05/02/27 14:24:43cp932で変換したら普通にutf8にならない?
変換してもフォントになかったら見れないけど。
0627デフォルトの名無しさん
05/02/27 15:02:37「リャマ本」にのってるジョークがおもしろくありません。
講習会でバカ受けの最高のジョークらしいですが、
僕には意味すら分からないときがあります。
こんな僕は、Perlをマスターできませんか?
0628デフォルトの名無しさん
05/02/27 15:07:17必要に迫られていない時に勉強するのは最高
必要に迫られて勉強するのは最低
まぁ、がんばれ
0629デフォルトの名無しさん
05/02/27 19:05:07入力した引数に応じて、名前を表示させるだけですが、
3を入力したときは、なぜかnot exsitsになってしまいます。
chomp(@line =<STDIN>);
%name = (1 => jane,
2 => fred,
3 => amy);
@key = keys(%name);
foreach(@line){
if(exists $key[$_]){
print "$name{$_}\n"
}else{
print "not exists";
}
}
0630デフォルトの名無しさん
05/02/27 19:58:36> 下記のコードで3を入力したときに、表示されないのはなぜでしょうか。
> 入力した引数に応じて、名前を表示させるだけですが、
> 3を入力したときは、なぜかnot exsitsになってしまいます。
関係する変数をダンプしてみればわかる。
0631デフォルトの名無しさん
05/02/27 20:46:190632629
05/02/27 22:30:19ハッシュのキーを下記のように数値から文字に変更すると、
うまく表示できました。この数値と文字の動きの違いというのは
なぜですか。
%name = (a => jane,
b => fred,
c => amy);
0633デフォルトの名無しさん
05/02/27 23:24:53このとき@listの3番目の要素は何だ?
0634629
05/02/27 23:56:58>@list = (1,2,3)
>このとき@listの3番目の要素は何だ?
要素がないので、undefです。ようやくなぞが解けました。
ハッシュは、インデックスでなく、キーで値を取れるということで
入力も1 2 3とすれば、jane fred amyと返すはずだったけど、
@key = keys(%name); と配列に代入したときに、0番目から代入されるので
if(exists $key[$_])の時に存在しない3番目をアクセスしてしまう。
そのため、not existsになっていた。解決策としてif(exists $key[$_-1]){
とすると無事amyが表示されました。ありがとうございます。助かりました。
0635デフォルトの名無しさん
05/02/27 23:59:300636デフォルトの名無しさん
05/02/28 08:08:15リアルで見つけ次第解雇でいいじゃん。
0637デフォルトの名無しさん
05/02/28 09:57:33> 逆アセンブルソースのエミュレート実行
質問ですが、これってすごいですか?
0638デフォルトの名無しさん
05/02/28 10:34:350639デフォルトの名無しさん
05/02/28 18:33:520640デフォルトの名無しさん
05/03/01 01:56:500641デフォルトの名無しさん
05/03/01 11:56:57"タチツテト" =~ m/チ/i
これだとマッチするのに
"タチツテト" =~ m/タ/i
これだとマッチしません
他にも全角でできないのがいくつかあるようです
マッチしない全角をマッチするようにする方法なにかありませんか?
0642デフォルトの名無しさん
05/03/01 12:02:17SJISやめれ
0643デフォルトの名無しさん
05/03/01 13:17:25とりあえずそれだけ動けばいいのであれば use encoding。
0644デフォルトの名無しさん
05/03/01 21:51:40文字と数値を判断する方法ってありますか?
文字列なら cmp で数値なら <=> で比較したいのです。
0645デフォルトの名無しさん
05/03/01 22:02:12とかは?
0646デフォルトの名無しさん
05/03/01 22:28:17内部的には違いはあるといえばあるのだが、調べるモジュール
とかはあるのかな? 残念ながら私は知りません。
目的次第では数値として解釈できる文字列かどうかを判定する
Scalar::Utilのlooks_like_numberは使えるかもしれない。
どちらもlooks_like_numberなら数値比較、そうでなければ
文字列比較とか。
しかし同じScalar::Utilのdualvarを使って作った値とかを考えると
いやになると思うけどな(笑)
0647デフォルトの名無しさん
05/03/01 22:36:33それ、実際に自分で実行して書いてるの?
0648デフォルトの名無しさん
05/03/01 22:51:23Devel::PeekというモジュールのDumpってのを使うとperlの内部をのぞくことが
できる。コレを使うと
% perl -MDevel::Peek -e '$foo = 1; Dump($foo);'
SV = IV(0x816378c) at 0x8163d1c
REFCNT = 1
FLAGS = (IOK,pIOK)
IV = 1
% perl -MDevel::Peek -e '$foo = "1"; Dump($foo);'
SV = PV(0x814cef8) at 0x8163d1c
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x815d438 "1"\0
CUR = 1
LEN = 2
と一見区別できるように見えるのだが、
(改行多すぎといわれたので続く)
0649デフォルトの名無しさん
05/03/01 22:53:26% perl -MDevel::Peek -e '$foo = 1; $bar = "$foo"; Dump($foo);'
SV = PVIV(0x814d308) at 0x8163d2c
REFCNT = 1
FLAGS = (IOK,POK,pIOK,pPOK)
IV = 1
PV = 0x815d448 "1"\0
CUR = 1
LEN = 2
% perl -MDevel::Peek -e '$foo = "1"; $bar = $foo+1; Dump($foo);'
SV = PVIV(0x814d308) at 0x8163d2c
REFCNT = 1
FLAGS = (IOK,POK,pIOK,pPOK)
IV = 1
PV = 0x815d448 "1"\0
CUR = 1
LEN = 2
というように使われ方ですぐに元がどっちだったかは区別できなくなってしまう。
0650デフォルトの名無しさん
05/03/01 23:33:480651644
05/03/02 00:01:52を見ると、数値っぽい文字列なら数値として扱うのがperl流ってとこですかね。
あまりこだわらずに"1"は1として扱うようにしようと思います。
あと、Scalar::Utilのlooks_like_numberはやってることは>>645とほとんど
同じでした(あと浮動小数点への対応とか)。
0652デフォルトの名無しさん
05/03/02 00:14:460653デフォルトの名無しさん
05/03/02 13:45:49ExtUtils::MakeMaker::Tutorial を参考にファイルを整理しているんですが、
サンプルコードみたいなものはどこにおくべきかで迷っています。
``eg'' というディレクトリに入れているケースもあるようなのですが、
これが Perl モジュールの標準的なサンプルコードのディレクトリでしょうか?
0654デフォルトの名無しさん
05/03/02 18:28:24わかりやすい構成にしときゃ別にどこでも好きなように。
e.g. = exempli gratia = 「例えば」
0655デフォルトの名無しさん
05/03/02 18:28:34$aaa ← 配列のリファレンス
があります
これの内容を参照するには、@$aaa[添字]でとれますが、
要素数はどう指定すれば取得できますでしょうか?
0656デフォルトの名無しさん
05/03/02 18:33:160657デフォルトの名無しさん
05/03/02 18:39:25素直に「examples」としているモジュールが多いように思う。
>>655
my @{array} = (0..3); # 'array' という名の配列
print @{array}, ${array}[2], $#{array}, scalar @{array}, "\n"; # 0123234
print @array, $array[2], $#array, scalar @array, "\n"; # 0123234
my $array = \ @{array}; # 配列変数 @array のリファレンス
print @{$array}, ${$array}[2], $#{$array}, scalar @{$array}, "\n"; # 0123234
print @$array, $$array[2], $#$array, scalar @$array, "\n"; # 0123234
0658デフォルトの名無しさん
05/03/02 18:39:37ありがとうございます
0659デフォルトの名無しさん
05/03/02 18:44:06他の例まで書いて頂きまして、ありがとうございます。
0660デフォルトの名無しさん
05/03/02 20:57:28グループA,山田,水,3
グループB,鈴木,月,3
グループA,山田,水,4
グループB,鈴木,月,4
グループC,佐藤,木,2
グループA,山田,水,5
グループC,佐藤,月,3
のようなcsvファイルを@list = <FILE>;で読み込んで、その後に
グループA,山田,水,3,水,4,水,5
グループB,鈴木,月,3,月,4
グループC,佐藤,木,2,月,3
のように重複するグループ名と名前をまとめて、その後に曜日と時間をくっつける
構成の配列に直すところで悩んでいます。グループや曜日の順番は順不同で
かまわないのでくっつけるだけなのですが、上手くできません・・・。
いったいどうやったら上手くできますか・・・?
0661デフォルトの名無しさん
05/03/02 21:18:31グループと名前をキーにしたハシュにしてみては?
foreach (@List){
$_ = [split /,/];
$hash{sprintf qq|%s,%s|, $_->[0,1]} .= sprintf qq|,%s,%d|, $_->[2,3];
}
foreach (sort keys %hash){
push @List_new, $_ . $hash{$_};
}
みたいな。
0662デフォルトの名無しさん
05/03/02 23:55:030663デフォルトの名無しさん
05/03/03 00:28:390664デフォルトの名無しさん
05/03/03 00:31:320665デフォルトの名無しさん
05/03/03 08:14:42俺の趣味ではこうだな。やってることはほぼ同じだが。
#!/usr/bin/perl
open READ,"test.csv";
while(<READ>){
chomp;
split /,/;
push @{$dummy{join ',',@_[0,1]}},@_[2,3];
}
close READ;
open WRITE,">result.csv";
print WRITE (join ',',($_,(@{$dummy{$_}}))),"\n" for (sort keys %dummy);
close WRITE;
0666デフォルトの名無しさん
05/03/03 16:00:41色々調べましたが、とんとわかりませんのでよろしくです
$top_html = <<"<EXIT>";
<html>
<head>
<title>制作してみよう</title>
</head>
<body bgcolor="#FF0000">
test
</body>
</html>
<EXIT>
&jcode::convert(\$top_html, "sjis");
print "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n\n";
print $top_html;
0667デフォルトの名無しさん
05/03/03 16:04:100668デフォルトの名無しさん
05/03/03 16:18:46プリントしてますけど、アパッチのログにはヘッダーエラー?みたいなものがでます
malformed header from sc
ript. Bad header=<?xml version="1.0" encoding=": index.cgi
print "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n\n";
0669デフォルトの名無しさん
05/03/03 16:30:54いや、HTTPヘッダをね
0670デフォルトの名無しさん
05/03/03 16:39:48どうもありがとう、
ナオリマスタ
0671デフォルトの名無しさん
05/03/03 18:17:290673デフォルトの名無しさん
05/03/03 23:15:13> print "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n
> <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n\n";
xhtmlに見えません…
0674ηCar
05/03/04 03:24:09天文計算をperlで行なう人は、時間をどのように扱っていますか?
0675デフォルトの名無しさん
05/03/04 07:46:37ユリウスに変換するのがもっとものような。。。
0676デフォルトの名無しさん
05/03/04 08:17:11としたときに、プログラムを記述できますが、それを実行するにはどうしたらよいのですか?
0677デフォルトの名無しさん
05/03/04 08:27:12EOFの送り方か?
UNIXならCtrl+D
0678デフォルトの名無しさん
05/03/04 09:11:42これってどういうこと?
0679デフォルトの名無しさん
05/03/04 09:45:06THX!
ちょっとしたコードもファイルに書き出していたから助かります。
0680デフォルトの名無しさん
05/03/04 10:17:19perlはlibc呼んでるだけだし、glibcあたりはうるう秒に対応する
機能は持っている。ただしうるう秒がいつ入ったかの情報を設定
する必要があって、それをしてないシステムがほとんどですな。
オレも話には聞いてもやったことないし。この辺が参考になる。
ttp://www.netfort.gr.jp/~matsu/utc/
0681デフォルトの名無しさん
05/03/04 11:34:33うるう秒はシステム依存。
OS(というかlibraryまわり)によって対応してたりしてなかったりする。
うるう秒なシステム上のperlだとちゃんと働く。
>>680
うかつにうるう秒に対応させるとnfsやsambaなんかでハマるので気をつけれ。
周辺のマシン含め一斉にやらないと、makeが発狂したり、
ファイルコピー時にタイムスタンプがズレたりと、問題おこりまくり。
0682デフォルトの名無しさん
05/03/04 14:49:55>@$aaa
配列へのリファレンス変数のデリファレンス
0683デフォルトの名無しさん
05/03/04 20:44:17最初の ?xml
がXHTMLのヘッダや
0684デフォルトの名無しさん
05/03/04 20:51:16ほほぅ。
じゃあこれは何かね?
> <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n\n";
0685デフォルトの名無しさん
05/03/04 21:21:27それは、どこかのサイトに書いてあった
のをコピーしただけ 違うの?
0686デフォルトの名無しさん
05/03/04 22:09:38リャマ本読んで習得中の修習生です。(プログラム経験なし、13章で混乱中)
WINでperl使いたいのですが、初めてのWIN32(ワニ本)に切り替えた方が
良いでしょうか?リャマはUNIX的な表現が多くてWINに移行できるか不安です><
続perlは購入済
Q2.
続perl以降に読むべき本は 駱駝→Effective Perl→クック でOKですか?
0687デフォルトの名無しさん
05/03/04 22:23:58そんなこと教えるのは何処のサイトだまったく・・・
XHTMLのDOCTYPEはこれ
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
0688デフォルトの名無しさん
05/03/04 22:28:12$doc = get $url;
のようにして他のサーバーのファイルをgetするプログラムを作っています。
質問なのですが、このサーバーがとてもおもくて、応答が無いせいか、
プログラム自体がとまってしまうことがあります。
1分くらい応答がなかったらリトライするというふうにしたいのですが
どのように書けばいいのでしょうか?
ご指導よろしくお願いいたします。
0689デフォルトの名無しさん
05/03/04 22:39:080690デフォルトの名無しさん
05/03/04 23:02:48読むべき本など存在しない。
0691デフォルトの名無しさん
05/03/04 23:06:44LWP::Simpleじゃ無理。
マニュアルにある通り、
LWP::UserAgentを使え。
0692デフォルトの名無しさん
05/03/04 23:10:44UserAgentのtimeoutを60に設定して使うのがよろし。
ところで、サーバーを待っている間に他の処理をさせたいと思った場合は
なにを調べるのが良いでしょうか。
0693デフォルトの名無しさん
05/03/04 23:16:02timeoutを60でリトライになるのでしょうか?
それとも、新たに処理をかくのでしょうか?
0694デフォルトの名無しさん
05/03/04 23:19:34LWP::Simpleのソース見てみたんだが、
タイムアウト60にデフォルトで設定されているような。
となると、完全に応答がないわけじゃなくて、
少しずつデータが送られてきているような状態なんだろう。
となると、別スレッドで監視して、一定時間たったら
処理を中断させるなり何かしないと駄目だろうな
0695デフォルトの名無しさん
05/03/04 23:34:48AUのサイトにかいてありました
さんくすこ
0696デフォルトの名無しさん
05/03/04 23:46:07##############
ここから
ここまでのしょり
を60秒以内で済まさない限り外に出れない(繰り返される)
#############
こんなかんじでできないでしょうか?
いままでLWP::Simpleのgetで書いてきたんでなるべくそこのところは変えたくないのですが。
どなたかよろしくお願いします。
0697デフォルトの名無しさん
05/03/04 23:49:29インターバルタイマでシグナルを打って、
シグナルハンドラで後始末するんだな。
そんなややこしいことをしたがるなんて、チャレンジャーだな。がんばれ。
0698デフォルトの名無しさん
05/03/04 23:50:39おっと、別にインターバルタイマでなくてもいいか。
alarm使えばいいな。
0699デフォルトの名無しさん
05/03/04 23:53:21むむむー
やっぱややこしいんですか。
どなたか簡単なサンプルをいただけませんでしょうか?
他のサーバーのファイルをとってきて60秒間応答なかったらリロード(再読み込み)
みたいな感じなんですけど・・・・(。-人-。)
0700デフォルトの名無しさん
05/03/04 23:56:27> LWP::Simpleのソース見てみたんだが、
> タイムアウト60にデフォルトで設定されているような。
それはsocketのコネクション要求のタイムアウトだろう。
読み込みはすっぴんsysreadで読んでいるから、そこでブロックするだろう。
> となると、完全に応答がないわけじゃなくて、
> 少しずつデータが送られてきているような状態なんだろう。
でなきゃ、まったく送られてないかだな。
> となると、別スレッドで監視して、一定時間たったら
> 処理を中断させるなり何かしないと駄目だろうな
selectを使うのは最近は流行らないのかな。
0701デフォルトの名無しさん
05/03/05 00:15:45TT) 教えてください
0702デフォルトの名無しさん
05/03/05 00:21:35とりあえずWindowsにPerlのインストールはしてる?
本読んでるだけで実際に手を動かしてる様子じゃなさそうだな。
0703デフォルトの名無しさん
05/03/05 00:21:56もっとマシなもの参照するようにしろよな・・・
0704デフォルトの名無しさん
05/03/05 00:36:53KDDIって、xhtmlをWAPで正式採用してるから 問題な酢
0705デフォルトの名無しさん
05/03/05 00:50:48本の選択は間違っていないので買った本を良み進めるがよろし。
WindowsでActivePerl使うのでも基本的な部分は変わらない。
Effective Perlは読みやすいし短いし、Perlらしい表現を覚える
のに良いので続リャマの前に読んでも。
クックブックは読む順番は気にせず、実際にちょっとコード
書こうとした時とかにちらちら拾い良みすれ。
0706デフォルトの名無しさん
05/03/05 00:53:36ましてやPerlは汚物
0707デフォルトの名無しさん
05/03/05 01:21:05perlでできますか?
0708デフォルトの名無しさん
05/03/05 01:31:560709Hiro58
05/03/05 01:40:26アドレスをコピーして、他のブラウザに貼り付けしたらログイン
できないのですが、あれはどのような仕掛けになっているのですか?
ソースを見る限りformタグのhiddenを使っているのではないようなのですが…。
なぞです…。
0710デフォルトの名無しさん
05/03/05 01:52:51それともGET,POSTの話か?
0711Hiro58
05/03/05 01:59:00となってしまいます。(おそらく)
アドレスはhttp://〜.co.jp/〜.cgi?hoge=hoge&hogehoge=hogehoge
となっていたので、POSTではないようです。
やはり何か難しい処理をしているのでしょうか?
0712デフォルトの名無しさん
05/03/05 02:10:57>>1
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
0713デフォルトの名無しさん
05/03/05 02:13:500715デフォルトの名無しさん
05/03/05 02:33:05>>3で紹介されてるプログラミング講座を見ています
それについて質問ですが
講座の中にこんなのがありました
%weekday =(
1=>'Sunday',
2=>'Monday',
3=>'Tuesday',
4=>'Wednesday',
5=>'Thursday',
6=>'Friday',
7=>'Saturday');
if( exists $weekday{$ARGV[0]}){
print $weekday{$ARGV[0]};
}else{
print "範囲外です!!";
}
これをこのまま実行すると”範囲外です!!”となります
$ARGV[0]だから”Sunday”と表示されるんじゃないんですか?
0716デフォルトの名無しさん
05/03/05 02:39:16$ARGVについて調べてみませう。
0717デフォルトの名無しさん
05/03/05 02:42:52http://search.cpan.org/~neilw/Inline-Ruby-0.02/lib/Inline/Ruby.pod
0718デフォルトの名無しさん
05/03/05 02:43:39調べてきまつ
0719715
05/03/05 02:59:36スクリプトを実行するときに指定した引数のリストが格納される特殊な配列。
第一引数
$ARGV[0]
第一引数だからこの場合$ARGV[0]は1で
$weekday{$ARGV[0]} は $weekday{1}; になってSundayと表示されると言うことじゃないんですか?
0720デフォルトの名無しさん
05/03/05 03:08:24訊いてないで調べてみろよ。
0721715
05/03/05 03:16:54まったくもって分かりません
では違う質問してみます
>>715でsundayと表示させるにはどうすればいいのでしょうか
0722デフォルトの名無しさん
05/03/05 03:18:57>perl myscript.pl 1 [Enter]
と入力
0723715
05/03/05 03:27:01それでも範囲外ですってなります
0724デフォルトの名無しさん
05/03/05 03:29:46> さっきから調べてるのですが
関係する変数を表示させてみたのか?
0725715
05/03/05 03:37:03単語一つにしろググって調べないと意味もわからない
プログラムって難しいですね
今日はもう寝ます
いろいろありがとう
0726デフォルトの名無しさん
05/03/05 03:41:03って言っといて>>723みたいに答えてるからわかってなさそ。
0727デフォルトの名無しさん
05/03/05 04:05:13@ARGVのごく簡単な説明とperlスクリプト文での使い方は説明してあるが、
実際に@ARGVに値を入れて実行する方法が書いてないようだ。
0728デフォルトの名無しさん
05/03/05 09:36:35有難うございますm><m
0729デフォルトの名無しさん
05/03/05 09:56:420730デフォルトの名無しさん
05/03/05 10:05:15下のサイトをサンプルを動かして、動くことは動くのですが
動作についてイメージが湧きません。
http://www.stackasterisk.jp/tech/program/perl04_02.jsp
実行するとif($pid = fork)のブロックが実行されて、いつ(defined $pid)の
ブロックが実行されるのでしょうか。
浅はかな頭では最初のifで子プロセスを生成してから子プロセスの終了を待ってから
終わってしまうように見えます。
どなたか解説をお願いします。
0731デフォルトの名無しさん
05/03/05 10:27:59fork() した時点で、メモリ上で動作中のプログラムがコピーされて2個になると思えばいい。
全く同じ2つのメモリイメージだけど、親の方では $pid に(新しく作られた子の)プロセスIDが入る
子の方は0が入る
親では、 if($pid = fork) が true になる($pidに子プロセスIDがセットされる)から、waitまで行くが
子では if($pid = fork) がfalseになる( $pidが0にセットされる)ので、そこはパスして
elsif(defined $pid) の部分が実行される
正確な話は自分でmanでも読んでくれ、大体こんな感じ。
0732デフォルトの名無しさん
05/03/05 10:35:51なるほど。
丁寧な解説でようやく理解ができました。
ありがとうございました。
0733デフォルトの名無しさん
05/03/05 14:47:34open していたファイルはそっちでも open していることになるよね?
open していたものがデバイスだったら競合はしないの?
0734デフォルトの名無しさん
05/03/05 14:48:31後悔はしていないけど、Cしか知らなかった頃に比べて頭が悪くなったような希ガス
0735デフォルトの名無しさん
05/03/05 15:00:120736デフォルトの名無しさん
05/03/05 15:22:18close しなさい。
0737デフォルトの名無しさん
05/03/05 19:25:11while (<IN>) {
hoge($_) if $n..$m;
}
ってやってもうまくいかないのですが。
最初から最後まで処理されます。
0738デフォルトの名無しさん
05/03/05 19:58:51自動的に$.と比較してくれるのは定数のときだけなので、
今回のように$n,$mのような変数に入ってる場合は、明示的に
$.==$n .. $. == $m
のようにする必要があります。
0739デフォルトの名無しさん
05/03/06 00:45:58僕に最適な言語を教えてください。
0740デフォルトの名無しさん
05/03/06 00:53:53つ スワヒリ
0741デフォルトの名無しさん
05/03/06 02:18:56つ アラム語
0742ηCar
05/03/06 02:30:38>>675 >>680 >>681 ありがとうございます。
perlでなくシステムの話になるのですね。
makeが発狂しないように気を付けてポチポチいじってみます。
0743デフォルトの名無しさん
05/03/06 05:41:44添付めーるを送信する処理
}
このようなサブルーチンを作って、logディレクトリにある画像ファイルを片っ端から一通ずつ送るということをやろうとしています。
環境はwindows2000でsendmailの代わりにsendmane.exeを使っています。
jcode.plとmimew.plを使って添付処理をしているのですが
&mailer("file1.jpeg");
のように一回の処理だとうまく送ることができるのすが、
foreach $aa ($filelist){
&mailer($aa);
}
のようにやったり、
&mailer("file1.jpeg");
&mailer("file2.jpeg");
のようにやると、添付ファイルの一部が破損しているようで送信はできるのですが、
正常なファイルを送信することができません。
なんとか
foreach $aa ($filelist){
&mailer($aa);
}
のような処理をうまくやる方法はないでしょうか?
送信プログラムは
http://www.parkcity.ne.jp/~chaichan/src/perl05.htm
ココのを参考に作っています。
よろしくおねがいします。
0744デフォルトの名無しさん
05/03/06 05:55:32$filelist?????
0745デフォルトの名無しさん
05/03/06 06:10:01&mailer("file2.jpeg");
でうまくいかないんだから
mailer内で一回目に書き換えた変数を
二回目以降も使っているのだろう。
0746デフォルトの名無しさん
05/03/06 06:30:28euc-jp環境のLinuxでShift-jisのファイルを読み込み、
シェル上から日本語文字列のコマンドライン引数を受付け、
euc-jpの標準出力に出力、つうスクリプトでハマってます。
--
use Encode;
binmode STDOUT,':encoding(euc-jp)';
open IN, "< :encoding(shiftjis)","sjis.txt" or die;
...
ここまではいいんだけどこの状態で$ARGV[0]をprintするとエラー。
binmode $ARGV[0],':encoding(euc-jp)'; とか
binmode ARGV,':encoding(euc-jp)';
とかやってもダメ。
参考サイトだけでも教えてくださいませんか。
0747デフォルトの名無しさん
05/03/06 07:01:27$str = decode("euc-jp",$ARGV[0]);
でいいんですね。お邪魔しました。
0748デフォルトの名無しさん
05/03/06 10:46:11Jcode mailinglistで聞いたら?
0749デフォルトの名無しさん
05/03/06 14:27:59一応mailerサブルーチンの中身は全部my変数にしてあります。
jcodeとかmimewの問題なのでしょうか?
>>744
@filelistのなかに、送信するファイルの一覧が入っています。
0750デフォルトの名無しさん
05/03/06 14:37:03単独で送れば全てきちんと送られているわけね?
0751デフォルトの名無しさん
05/03/06 14:43:35$encodedata = &bodyencode($sdata);
$encodedata .= &benflush;
↓↓↓
$encodedata = &bodyencode($sdata, "b64");
$encodedata .= &benflush("b64");
にしたらうまくいきました
なんでだろー
0752デフォルトの名無しさん
05/03/06 15:08:050753デフォルトの名無しさん
05/03/06 15:12:30> PerlにCのような構造体を実装するモジュールってあるかな?
あるし、それ以前に、hashへのリファレンスを使えばやりたい放題だが。
0754デフォルトの名無しさん
05/03/06 15:14:55> >>744
> @filelistのなかに、送信するファイルの一覧が入っています。
こんなバカを言って澄ましている節穴眼野郎が、
> >>745
>
> 一応mailerサブルーチンの中身は全部my変数にしてあります。
> jcodeとかmimewの問題なのでしょうか?
とかほざいても信用できないね。
0755デフォルトの名無しさん
05/03/06 15:20:180756デフォルトの名無しさん
05/03/06 15:55:33あーわかった。
&benflushの形式で呼び出すと@_がひきつがれてしまうので、$codingに
不正なパラメタを与えてしまってたんだろう。benflushはしらない
パラメタが与えられると何もしないのでいろいろいやなことが置きそうだ。
最初の一つが大丈夫だったのもたぶん偶然半端がでてなかったとか
なんじゃないかな。
いまどきのperlではサブルーチン呼び出しに&つけるのはやめた方が
いいよ。(あえて必要な場合を除く)
0757デフォルトの名無しさん
05/03/06 16:10:550758デフォルトの名無しさん
05/03/06 16:57:43C++やjavaは、別に分からんことないのに、
perlのオブジェクト指向は、なんか良く分からん。
バカな俺のために、もっと見通し良く実装してくれ・・・
0759デフォルトの名無しさん
05/03/06 17:47:50perlのオブジェクト指向ってのは変数やサブルーチンを区分けされた
名前空間でリファレンスとして扱うってだけのことで、Javaのように
オブジェクト指向を徹底しているわけではないのね。
このなんちゃってOOPが慣れると結構使い易いんだわ。
Perlのいい所(あるいは最悪の点)は、他の言語のいい所を適当につまみ
食いしてるところなんだよね。
>>739
そんな貴方にはObjective-Cをお勧めします。
0760デフォルトの名無しさん
05/03/06 17:54:03Perlのオブジェクト指向メカニズムは、
確かに異常に変だな(笑
0761デフォルトの名無しさん
05/03/07 02:28:020762デフォルトの名無しさん
05/03/07 02:35:01Term::Cap
Term::ANSIColor
0763デフォルトの名無しさん
05/03/07 04:27:42ありがとう!
0764デフォルトの名無しさん
05/03/07 07:04:53use Encode;
binmode STDOUT, ":encoding(euc-jp)";
open IN, "< :encoding(shiftjis)","sjis.txt" or die;
としたファイルハンドラINをサブルーチンに渡すところで
またまたつまづいてしまいました。以下
$cnt = Getlines(\*IN);
print $cnt;
exit;
までがメイン。サブルーチンは
sub Getlines {
my $fh = shift;
my $count = 0;
while(<$fh>) {
$count++;
}
return $count;
}
なのですが、実行すると
shiftjis "\x87" does not map to Unicode at unko.pl line 20, <IN> line 829.
shiftjis "\x94" does not map to Unicode at unko.pl line 20, <IN> line 829.
とエラーを吐きます。Perlのバージョンは5.8.5。
サブルーチン内でも文字コード云々の対策が要るのでしょうか。
0765デフォルトの名無しさん
05/03/07 09:04:04それはエラーじゃなく警告だろ。
open IN, "<:encoding(CP932)", "sjis.txt" or die;
0766デフォルトの名無しさん
05/03/07 11:42:20CP932にしたらやたらと出てた警告も
"x85"と"x9F"だけになりました。
サンプルに2chの.datファイル20個ほど使って
警告二つなら安心して使えます。どうもです。
0767デフォルトの名無しさん
05/03/08 03:13:59何日で掲示板が作れるようになれますか?
就職がかかってますのでマジレスキボンぬです
0768デフォルトの名無しさん
05/03/08 03:24:160769デフォルトの名無しさん
05/03/08 03:25:26一応マジレスすると、一概に言える訳ないだろヴォケ。
perl以外の言語の経験、プログラミングの経験によって答えは変わる。
0770デフォルトの名無しさん
05/03/08 03:28:403日。
一通り網羅された本を手元において、
他人書いた掲示板のソースコードを解読してけばいいんじゃない。
0771デフォルトの名無しさん
05/03/08 04:15:263時間くらいという人もいるだろう。
0772デフォルトの名無しさん
05/03/08 06:41:46しかし書き込みの程度からして一ヶ月はかかるな、こりゃ
プログラミング経験がほとんどないように見える
新しい言語にすぐなじめるような経験がある人ならこんな質問はしない
0773デフォルトの名無しさん
05/03/08 06:48:37出来上がった掲示板が使い物になるかは別問題だけどなー
セキュリティ知識とかCGI動作原理とか覚えることは色々あるぞ
0774デフォルトの名無しさん
05/03/08 08:33:18最低限のセキュリティ知識がないと怪我をしかねない。
0775デフォルトの名無しさん
05/03/08 10:25:030776デフォルトの名無しさん
05/03/08 16:13:49767だけど
プログラミングは高校のときのベーシックでライン引いたりした以来です
0777デフォルトの名無しさん
05/03/08 16:29:10とりあえず、どんな掲示板が作りたいかくらい言えるようになれ。
0778デフォルトの名無しさん
05/03/08 17:02:15> 掲示板って言ってもめちゃめちゃピンキリなのでは
バンド幅が狭かった昔は、多くの大学でWeb掲示板を動かしたり作ったり
するのが禁止されてたりしたな。
よく分かってない人が作ると、利用者がリロードする毎に30MBも再ロード
するような何も考えてないシステムになるからな。
0779デフォルトの名無しさん
05/03/08 21:57:300780デフォルトの名無しさん
05/03/08 22:37:270781デフォルトの名無しさん
05/03/08 23:05:01CPANでmakeまでうまくできてるみたいなんですけど、
C:\.cpan\buildに展開されてるだけで、インストールされてないみたいなんですけど、
どこか設定ミスってしまったのでしょうか?
可能性あることをおしえてください
0782デフォルトの名無しさん
05/03/08 23:10:07で、やった手順は書かないの?
0783デフォルトの名無しさん
05/03/08 23:53:05http://search.cpan.org/~neilw/Inline-Ruby-0.02/lib/Inline/Ruby.pod
0784デフォルトの名無しさん
05/03/09 02:47:260785デフォルトの名無しさん
05/03/09 10:21:50数値又はバイナリとして出力する方法はありますでしょうか?
0786デフォルトの名無しさん
05/03/09 10:24:16pack
0787デフォルトの名無しさん
05/03/09 18:55:44doc見ても簡単すぎてさっぱりわからない。
0788デフォルトの名無しさん
05/03/09 20:18:49$h-i-rady = 'i-rady-mb'.$r.'jpg';
これで、エラーになるんですけど、なぜかわかりません
おせえて
0789デフォルトの名無しさん
05/03/09 20:24:54$h_i_rady = 'i-rady-mb'.$r.'jpg';
0790デフォルトの名無しさん
05/03/09 20:26:46どうも、thxです
0791デフォルトの名無しさん
05/03/10 16:43:59フリーで欲しいんだけど
0792デフォルトの名無しさん
05/03/10 18:46:39START
[% IF 1 -%]
[% IF name == 'doraemon' -%]
boku doraemon
[% ELSE -%]
boku nobita
[% END -%]
[% END -%]
END
だと出力結果が
start
boku nobita
end
bokuの前のスペースは仕様上しょうがないかもしれないけど、せめて
START
[% IF 1 -%]
[% IF name == 'doraemon' -%]
boku doraemon
[% ELSE -%]
boku nobita
[% END -%]
[% END -%]
END
と記述したいです 実際の出力結果は
START
boku nobita
END
今NOVAってますが日本語のドキュメントが少なくてつらひです
0793デフォルトの名無しさん
05/03/10 19:18:25START
[% IF 1 -%]
[% IF name == 'doraemon' -%]
boku doraemon
[% ELSE -%]
boku nobita
[% END -%]
[% END -%]
END
0794くれくれ厨スマソ
05/03/10 20:18:45だれかもってませんか?
0795デフォルトの名無しさん
05/03/10 20:40:30氏ね
0796デフォルトの名無しさん
05/03/10 21:00:49>>794
今すぐ死ね
0797てきとー
05/03/10 21:05:210798デフォルトの名無しさん
05/03/10 23:04:36[%- foo -%]
だと何か問題あるんだっけ?
0799デフォルトの名無しさん
05/03/11 01:42:54use LWP::Simple;
return get($_[0]) ? 1 : 0;
}
0800デフォルトの名無しさん
05/03/11 13:02:39PHPのbase_convert() みたいな感じです。
ttp://de3.php.net/manual/ja/function.base-convert.php
perlのを調べていたんですが、8進、16進はありましたけど、
標準でn進数ってのはないんでしょか?
0801デフォルトの名無しさん
05/03/11 13:36:320802デフォルトの名無しさん
05/03/11 20:23:00http://mikeneko.creator.club.ne.jp/~lab/perl/numerical_transform/
0803800
05/03/11 21:05:09>>801 そうですね、C言語で言うところのそれです。
ltoaなどなど。
>>802 20進数や30進数などが作りたいのですが、
ページの最終行を見る限り、perlはこういう処理は
苦手なのか…。
今回は頻繁に呼び出さない処理の予定なので、Cで作って
外部コマンドで実行した方が手っ取り早い気がしてきました。
0804デフォルトの名無しさん
05/03/11 21:34:58http://search.cpan.org/modlist/Data_and_Data_Types/Math
0805デフォルトの名無しさん
05/03/11 23:44:52Cの関数ならPOSIXモジュールに幾つか定義されているから使えるかもしれん。
0806デフォルトの名無しさん
05/03/12 01:35:37($a && $b)||($a && $c)||($b && $c)
これが一番短いですか?
0807デフォルトの名無しさん
05/03/12 01:47:59!$a+!$b+!$c<2
0808デフォルトの名無しさん
05/03/12 01:49:42演算子重視じゃなくていいなら、俺ならこんな感じにする。
(gerp {$_} $a, $b, $c) >= 2;
なんて言うか、意味的に分かりやすいから。
0809808
05/03/12 01:51:130810デフォルトの名無しさん
05/03/12 02:26:39後々にも役に立つ勉強になりました。
ありがとうございました。
0811デフォルトの名無しさん
05/03/12 10:04:10Math::BaseCalc を落として追加することで出来ました。
# perl Makefile.PL
# make install
で追加でき、下記ページを参考に簡単に実現できました。
http://perldoc.jp/docs/modules/Math-BaseCalc-1.011/Math/BaseCalc.pod
ありがとうございました。
0812792
05/03/12 19:36:38>>793
今すぐ実践出来そうなので早速使ってみようと思います(゚ー゚*)
>>798
[%-が直前の行の改行から[%-までのスペースを削除するというのが
今回の用途ではちょっと使いにくいんですよね><。
START
[% name = 'doraemon' -%]
[% IF 1 -%]
[%- IF name == 'doraemon' -%]
boku doraemon
[%- ELSE -%]
boku nobita
[%- END %]
[% END -%]
END
にて希望通りの動作しましたが削った改行、それを補うための改行を
出力する場所を考えると脳みそぷるるん
0813デフォルトの名無しさん
05/03/12 21:49:09Windows上で日本語ファイル名を読み取らなければならない時
どうしてますか。
カレントフォルダ内ののファイル名を得るとして
use Encode;
while(<*.txt>) {
$fname = decode("cp932",$_);
. . . .
みたいにしても
opendir DIR,".";
binmode DIR, "encoding(cp932);
. . . .
としても、結局入ってくる文字は化けてしまう…。
0814デフォルトの名無しさん
05/03/12 22:02:38あなたの言う「化ける」とは何をどうしたときにどうなることを指すのか説明してください。
で、ディレクトリハンドルに binmode してどうする、っつーか use warnings; したら警告でますが。
0815デフォルトの名無しさん
05/03/12 22:27:57<*>なりopendir() readdir()なりしてディレクトリ内にあるファイルの名前を得たいと。
得たそれをSTDOUTなりテキストファイルなりに書き出すと
x\[0023]x\[0021]....
みたいな記号の羅列になっているということです。これを元の日本語として出力するには
どうすればいいんでしょうか。
0816デフォルトの名無しさん
05/03/12 22:50:310817デフォルトの名無しさん
05/03/13 00:13:430818814
05/03/13 13:22:16decode() することによって文字コードが CP932 → UTF-8 になっていることは分かってますか?
従って、書き出したテキストファイルを UTF-8 が読めるエディタ等で開けば普通に日本語で読めるはずです。
あるいは、encode() し直せば CP932 に戻るので Windows 上で普通に読めるでしょうね。
ファイル名に対して文字列処理をしないのならばわざわざ decode()/encode() する必要はないでしょう。
0819デフォルトの名無しさん
05/03/13 21:34:13perlで構文エラーを出さないように
英語の文章を書く(※動作は見ない)
なんて冗談みたいな話があるって
聞いたのですが、googleで探しても
そんな情報が見つかりません。
誰かご存知ないですか?
0820デフォルトの名無しさん
05/03/13 21:45:40> 誰かご存知ないですか?
知ってるよ。詩を書いたりとかね。
0821デフォルトの名無しさん
05/03/13 21:47:04Perl Poetry
http://www.perlmonks.org/?node=Perl%20Poetry
0822デフォルトの名無しさん
05/03/13 22:13:100823デフォルトの名無しさん
05/03/14 01:47:37@num = qw ! one two three four five !;
print "数字を入れて\n";
chomp ($input=<STDIN>);
push @num,$input;
print @num;
これはどこがおかしいでしょうか。例えば6を入力して
one two tthree four five 6
という答えが返るようにしたいのですが、実際には何も表示せずに終了してしまいます
0824デフォルトの名無しさん
05/03/14 01:56:20最後に print "\n"; って付けてみな
Perl的には出力してるけど、シェルがかき消してる
改行すれば消されずに済むよ
ついでに、 $,=" "; ってしないと配列が繋がる。
0825デフォルトの名無しさん
05/03/14 02:09:580826デフォルトの名無しさん
05/03/14 03:18:020827デフォルトの名無しさん
05/03/14 16:19:25フリーでも有料でも。
0828デフォルトの名無しさん
05/03/14 19:05:16戻るのボタンクリックして戻ったり、更新ボタン押した時に
「戻らないで」と表示させる方法を教えてくれませんか?
教えてください。
0829デフォルトの名無しさん
05/03/14 19:06:43それのどこがPerlの質問なのかね
0830デフォルトの名無しさん
05/03/14 19:31:10とりあえず>>1嫁
0831デフォルトの名無しさん
05/03/14 21:00:55で小さいと予想してはずれた時、また、戻るのボタンを押してやり直すことを
できますよね?
そういう不正行為を無くしたいんです。
0832デフォルトの名無しさん
05/03/14 21:06:44それのどこがPerlの質問なのかね
0833デフォルトの名無しさん
05/03/14 21:06:54もしそういう目的なら、セッション管理して一度先に進んだら
戻ってやりなおしてもダメって制御した方がいいんじゃないの?
0834デフォルトの名無しさん
05/03/14 21:07:50とりあえず>>1嫁
0835デフォルトの名無しさん
05/03/14 21:07:50いや、「つまり」じゃなくてさ人の話を聞けよ
0836デフォルトの名無しさん
05/03/14 21:09:59>>1
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
0837デフォルトの名無しさん
05/03/14 21:23:190838デフォルトの名無しさん
05/03/14 21:28:160839デフォルトの名無しさん
05/03/14 22:13:160840デフォルトの名無しさん
05/03/14 22:14:380841デフォルトの名無しさん
05/03/14 22:26:570842デフォルトの名無しさん
05/03/14 23:18:08↓
0843デフォルトの名無しさん
05/03/14 23:33:11仲良しビームッッ!(ノ≧w≦)ノ・・・…━━━★ピキューン
0844デフォルトの名無しさん
05/03/15 00:11:54(゚д゚・)・∵; …━━━━
0845デフォルトの名無しさん
05/03/15 00:16:490846デフォルトの名無しさん
05/03/15 00:19:070847デフォルトの名無しさん
05/03/15 00:25:330848デフォルトの名無しさん
05/03/15 00:35:38それのどこがPerlの質問なのかね
0849デフォルトの名無しさん
05/03/15 00:40:340850デフォルトの名無しさん
05/03/15 03:00:55じゃぁ、perlで円周率を小数点以下100万桁まで計算する方法を教えて下さい。
0851デフォルトの名無しさん
05/03/15 03:07:33好きな公式使え
0852デフォルトの名無しさん
05/03/15 03:32:47それのどこがPerlの質問なのかね
0853デフォルトの名無しさん
05/03/15 08:19:38方法はあるはずなのですがどうしてもわかりません
0854デフォルトの名無しさん
05/03/15 10:52:55で小さいと予想してはずれた時、また、戻るのボタンを押してやり直すことを
できますよね?
0855デフォルトの名無しさん
05/03/15 11:18:58戻ってやりなおしてもダメって制御した方がいいんじゃないの?
0856デフォルトの名無しさん
05/03/15 11:45:520857デフォルトの名無しさん
05/03/15 12:59:000858デフォルトの名無しさん
05/03/15 13:06:49ありがとうございました。無事にできました。
0859デフォルトの名無しさん
05/03/15 13:11:02\__ _________
V
凸\_________/,凸、
ノ´⌒`ヽ三三三三三三三i三.ノ´⌒`ヽ、
[二ノ´金`ヽ二]二二二二二二i仁ノ´劵`ヽニフ
,.-┴―┬┴┐鬨鬩鬨鬩鬨鬨鬩鬨
/ΛΛ //ΛΛ||L匳匳||卅||匳匯||匳||
/_(゚д゚_//_゚Д゚,,)| |丗卅丗卅丗卅丗卅丗
_,,,.-―''''"_,,,.-―''''"|コ ̄ ∪i  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
i゛(}[王i王]I()0コ ―― |―――=|――――――――――〕
|_∈口∋ ̄_l_l⌒l ノ ノ ___l⌒l_ソ
 ̄ ̄`ー' ̄ `ー' ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄`ー' `ー'
0860デフォルトの名無しさん
05/03/15 14:02:18∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
0861デフォルトの名無しさん
05/03/15 14:48:59#メンテナンス中にするか(メンテナンス中は1。1にするとゲームを中断させることができます。
$mente = 1;
#メンテナンス中の時に出すメッセージ
$menteme = "ただいまメンテナンス中です。しばらくお待ち下さい。";
--------------------省略---------------------
#メンテナンス
if($mente == 1){&error("$menteme")}
と記述して、$menteme = 1;とやると500エラーになります。
なぜでしょうか?
0862デフォルトの名無しさん
05/03/15 15:03:49>>860
0863デフォルトの名無しさん
05/03/15 15:08:41Perlスレは下品だしスキル低いね・・・
0864デフォルトの名無しさん
05/03/15 15:09:02後継者とかいるの?
0865デフォルトの名無しさん
05/03/15 15:10:140866デフォルトの名無しさん
05/03/15 15:16:550867デフォルトの名無しさん
05/03/15 15:39:460868デフォルトの名無しさん
05/03/15 15:57:58> もし Larry Wall が死んじゃったらどうするの?
なんの変化もないよ。
0869デフォルトの名無しさん
05/03/15 16:41:48ExtUtils::MakeMaker で作った Makefile を使うと、
Test::Unit や Test::Class と一緒に使うのがスゲーまんどくせーです。
# Test::Unit の方は Test::Unit::HarnessUnit があるから幾分マシだけど…。
ExtUtils::MakeMaker で、make test の挙動を変更したりとかできませんか?
Test::Harness 嫌い(#´Д`)
0870デフォルトの名無しさん
05/03/15 16:46:57せめて maintain と書いて欲しい
0871869
05/03/15 17:05:59ExtUtils::MakeMaker(3pm) の Overriding MakeMaker Methods にやり方が書いてありました。
Makefile.PL の中で、MY::test() を定義してやれば上手く行きそうです。
0872861
05/03/15 17:45:32文法チェックしてみましたが記述は間違えていなかったようです。
0873デフォルトの名無しさん
05/03/15 17:47:30errorログを嫁
0874デフォルトの名無しさん
05/03/15 17:52:06∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| /
| /● \
| / ) )
∪ ( \
\_) ちんこちっさっ!!
0875デフォルトの名無しさん
05/03/15 18:26:11とりあえず>>1嫁
0876デフォルトの名無しさん
05/03/15 18:30:351. 断片的で答えようがない
2. シンタクス的に問題はない
3. errorというサブルーチンが無いという落ちではありませんよね?
4. まさかPerl以前の問題だったりはしませんよね?
5. 時に、>>1は読まれましたか?
0877デフォルトの名無しさん
05/03/15 18:45:06>>1
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
0878デフォルトの名無しさん
05/03/15 18:45:34条件判断が $mente == 1 なのに入力が $menteme = 1 となってて、変数名を混乱してるようだな
0879デフォルトの名無しさん
05/03/15 20:09:58セミコロン抜けてねえか?
0880デフォルトの名無しさん
05/03/15 20:21:310881861
05/03/15 20:26:49perlとはCGIの開発によく使われるプログラミング言語のこと。
CGIとはWEBサーバーとブラウザ側で双方向のデータのやりとりができるプログラムのこと。
CGIとperlの区別はついていますよ?大体どこがCGIの質問なんですか?
どこ考えてもperlの質問でしょう?
0882デフォルトの名無しさん
05/03/15 20:33:54Web プログラミング板に行ってくれ。というか俺がいるスレで質問するな。
…と、そういう事が言いたいんじゃないのか?(´ー`)
0883デフォルトの名無しさん
05/03/15 20:49:07じゃあ「500エラーになります」って何なんだよ?
実行環境もエラーメッセージも適切に示さずに
的確な回答を得ようなんて浅ましすぎるんだよ。
0884デフォルトの名無しさん
05/03/15 20:49:180885861
05/03/15 20:57:35OS:WINDOWS XP
ウェブサーバアプリケーション Apache
エラーメッセージ 500 Internal Server Error
0886デフォルトの名無しさん
05/03/15 20:58:07じゃあ、Webサーバー通さずにそのスクリプトのみで実行してから質問しろ
0887デフォルトの名無しさん
05/03/15 20:59:26error_log も出すんだよ。ヴォケが。
0888デフォルトの名無しさん
05/03/15 21:00:45> エラーメッセージ 500 Internal Server Error
こんなこと書くようではなぁ。
webprog板に行けばきっと幸せになるよ。
0889861
05/03/15 21:04:56The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
0890デフォルトの名無しさん
05/03/15 21:07:320891デフォルトの名無しさん
05/03/15 21:08:18まさしく「CGIとPerlの区別がつかないバカ」だな。
0892デフォルトの名無しさん
05/03/15 21:08:43画面じゃなくてApachのエラーログだろ。どこにあるか知ってるよね?
0893デフォルトの名無しさん
05/03/15 21:09:39> More information about this error may be available in the server error log.
それだよ、それ
0894デフォルトの名無しさん
05/03/15 21:10:460895デフォルトの名無しさん
05/03/15 21:11:230896デフォルトの名無しさん
05/03/15 21:12:470897デフォルトの名無しさん
05/03/15 21:16:07あなたと同じぐらいのスキルの人たちがいっぱいいるよヴァカ
>>892この誤りに関する詳しい情報はサーバ障害記録で利用可能であるかもしれません。
という意味だよ。。。ヴォケ
>>892 Apachって何?Apacheの名前もしらない人がそんなこと言う資格はないと思うよ。
0898デフォルトの名無しさん
05/03/15 21:20:51早くおうちに帰りなさい
0899デフォルトの名無しさん
05/03/15 21:24:090900デフォルトの名無しさん
05/03/15 21:27:23何だこれ。
分裂症か?
0901デフォルトの名無しさん
05/03/15 21:28:37送信と受信を別々のスレッドで動かしてみたんだけど、
受信スレッドでselect中に送信スレッドで同じソケットに
sendしたところ、selectがタイムアウトするまでsendが
ブロックされてしまいました。同じスクリプトをLinuxで
実行してみましたが、sendがブロックされるようなことは
ありませんでした。
これ、sendがブロックされる原因は何処にあるのか
ご存知の方いませんか?
0902861
05/03/15 21:32:47これからはもっともっとperlの勉強をして出直したいと思います。
0903デフォルトの名無しさん
05/03/15 21:41:53いや、perlの勉強って訳じゃなくてね・・・。
perlの勉強はこのスレでしても良いんだよ?
0904デフォルトの名無しさん
05/03/15 21:47:55スキルの問題じゃなくて、質問の仕方が問題なの。
もっと的確にエラーや状況を説明するようにしないと。
0905861
05/03/15 21:55:53教えてもらおうなんて虫が良すぎますよね。
次からは気をつけます。本当にすみませんでした。
0906デフォルトの名無しさん
05/03/15 22:32:05> 誰も>>879-880につっこまないの?
そっとしておいてやれ。
今ごろ、顔を真っ赤にしてもじもじしている
かもしれないんだから。
見ないふりしてやれ。
0907デフォルトの名無しさん
05/03/15 22:39:08最近はJAVAに浮気中
ひさびさにPerl触ると、文字でも数字でも入る変数に便利さより戸惑いの方が大きい・・・
0908デフォルトの名無しさん
05/03/16 00:09:06まあ・・・原因は予想つくけどね
# ここでは言わないのがマナーであろうな
まだ解決してなかったら素直にWebProg板に行ってらっしゃい
向こうで見かけたら答えてあげるから
0909デフォルトの名無しさん
05/03/16 00:10:370910デフォルトの名無しさん
05/03/16 00:34:110911デフォルトの名無しさん
05/03/16 01:14:11ithreadsはネイティヴスレッドなので実装はOSによって大きく異なる。
…漏れに判るのはそれだけ。すまん。
0912デフォルトの名無しさん
05/03/16 01:48:16WebProg板で同じ質問したら多分答えてもらえる。
パンを食いたきゃパン屋へ行け。肉が欲しけりゃ肉屋行け。
そんな当たり前のことが何故できん?
0913デフォルトの名無しさん
05/03/16 07:00:04スーパーに行ったらパンも肉も買えるよw
0914デフォルトの名無しさん
05/03/16 07:05:53疑問なのですが、どうしてそんな的外れな発言が出来るのでしょうか?
才能?
精肉コーナーに行ってもパンは手に入らず、パンのコーナーにも
肉は置いてないだろう?
0915デフォルトの名無しさん
05/03/16 07:19:44別に的外れでもないと思うぞ。言っていることは頓珍漢だけど
問題はここがスーパーじゃないということだろが
0916デフォルトの名無しさん
05/03/16 08:00:02スーパーの裏のゴミ捨て場。
0917デフォルトの名無しさん
05/03/16 08:03:260918デフォルトの名無しさん
05/03/16 09:10:31頓珍漢なのが才能なのでしょうか?
2ちゃんねる全体はスーパーではあるけどね。
0919デフォルトの名無しさん
05/03/16 09:32:40語尾は統一してください。
0920デフォルトの名無しさん
05/03/16 10:58:390921デフォルトの名無しさん
05/03/16 11:07:21統合なんたらダ (σ゚з゚)σ
0922デフォルトの名無しさん
05/03/16 11:13:20君の彼女が君の父親に浮気しても
「彼女の動作も父親の動作も
すべて仕様どおり。想定の範囲内だす」と
0923デフォルトの名無しさん
05/03/16 13:12:360924デフォルトの名無しさん
05/03/16 15:18:270925デフォルトの名無しさん
05/03/16 17:22:40http://www.2ch.net/2ch.html
http://www.amazon.co.jp/
http://www.rakuten.co.jp/category/book/
http://www.kinokuniya.co.jp/
http://www.yahoo.co.jp/r/ac
http://messages.yahoo.co.jp/bbs?action=topics&board=1835099&sid=1835099&type=r
http://oshiete1.goo.ne.jp/oshiete.php3?c=255
http://www.google.co.jp/
http://www.cs.cmu.edu/Web/People/rgs/pl-regex.html
http://virtual.park.uga.edu/humcomp/perl/regex2a.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html
http://www.komonet.ne.jp/~perl/chap7.htm
http://www.sixnine.net/regexp/
0926デフォルトの名無しさん
05/03/16 17:56:18OS WindowsXP Pro ,
Perl ActivePerl-5.8.6.811-MSWin32-x86-122208
apache_1.3.26-win32-x86-no_src
を使っています。
ActiveperlはC:\usr\localにインストールし、
apacheを起動させて、ブラウザのアドレスに " ttp://local/・・・・ " と打つと、
CGI以外のhtml等はちゃんと表示されるのですが、拡張子がCGIではInternal server errorが出てしまいます。
CGIファイル中のperlのパスも合ってるんですが・・
どなたかこの問題の解決方法がわかる方、教えていただけませんか
0927デフォルトの名無しさん
05/03/16 17:58:59>>1を100万回読んでからapacheのエラーログを見ろ
0928デフォルトの名無しさん
05/03/16 18:26:470929デフォルトの名無しさん
05/03/16 19:13:36荒れてる中レスしてくれてサンクス
今のところWindowsでの解決策がないので、切り捨てるしかなさそうです。
0930デフォルトの名無しさん
05/03/16 21:24:49Apacheのhttpd.confでCGIを許可する必要がある。
Options ExecCGI, Include, AddHandler あたりがキーワードだ。
あとはググるかWebProg板へ煎って暮。これはPerlの問題でもFAQでもないんでね。
無事動いた後、Perlのテクニック的な問題で壁につきあたったらまた来るがいい。
グドラク!
0931デフォルトの名無しさん
05/03/16 22:02:43色々いじってみたんですがやっぱりうまくいきません・・
具体的に教えていただけませんか
0932デフォルトの名無しさん
05/03/16 22:13:42釣りじゃなければ、まずお前が具体的にソースコード教えろ。
そうじゃなきゃ誰にもわからん。
0933デフォルトの名無しさん
05/03/16 22:14:32いじりかたがわるいんだろうね
0934デフォルトの名無しさん
05/03/16 23:59:37>>930が読めねーのかよ。
氏ね!
0935930
05/03/17 00:11:33しかたないな、のび太くんは。
「ScriptAlias」でcgi-binフォルダが外部にエイリアスされてないか確認。
俺も昔いつだったかhttpd.confがデフォでScriptAliasを設定するように
なった時、htdocs以下のcgi-binフォルダを無視されてえらいハマったっけな。
がんがれ。スレ違いなんでホントに最後だからな。あとはWebProg板へ池。
print "表1を参照";
print "<table><tr><td>";
:
:
がうまく表示されないよぅ、とかのレベルになったらまた来るがいい。
スレ汚し許せ>ALL
なんかちょっとperl覚えてCGIとかやりたい初心者が、環境構築が出来ない
故にperlを嫌いになって欲しくないんで助けてやりたくなったのさ。
0936デフォルトの名無しさん
05/03/17 00:31:15スクリプトの最初の行は
#!/usr/local/perl/bin/perl
だと思われるが、それは大丈夫だろうな。
というか、エラーログ嫁。
0937デフォルトの名無しさん
05/03/17 02:03:300938デフォルトの名無しさん
05/03/17 02:08:400939デフォルトの名無しさん
05/03/17 02:43:140940デフォルトの名無しさん
05/03/17 02:46:37いやいや、上のやり取り見てたらね・・・
俺はApache使ってないからわからないんだけど・・・
WindowsでPerlのパスが通ってないってオチじゃないよね・・・
0941デフォルトの名無しさん
05/03/17 02:52:290942デフォルトの名無しさん
05/03/17 03:56:51> スレ汚し許せ>ALL
> なんかちょっとperl覚えてCGIとかやりたい初心者が、環境構築が出来ない
> 故にperlを嫌いになって欲しくないんで助けてやりたくなったのさ。
この汚れを拭い去るのに、数スレを消費し、優に1年を要することは珍しくないのである。
0943デフォルトの名無しさん
05/03/17 05:51:440944デフォルトの名無しさん
05/03/17 06:48:500945デフォルトの名無しさん
05/03/17 07:08:300946デフォルトの名無しさん
05/03/17 07:42:390947デフォルトの名無しさん
05/03/17 09:23:080948デフォルトの名無しさん
05/03/17 10:54:320949デフォルトの名無しさん
05/03/17 12:07:49双方にとっていいと思うのだが。
0950デフォルトの名無しさん
05/03/17 12:55:49それが分からないバカな子が居るってだけの話さ
0951デフォルトの名無しさん
05/03/17 13:29:39だな。質問する方もする方だが、答える方も答える方だ。
というわけで、次スレよろしく。> >>950
0952デフォルトの名無しさん
05/03/17 13:46:28http://pc5.2ch.net/test/read.cgi/tech/1111034732/l50
丁度2ヶ月で使い切ったな、今スレ
0953デフォルトの名無しさん
05/03/17 18:08:170954デフォルトの名無しさん
05/03/18 19:02:430955デフォルトの名無しさん
05/03/18 20:20:400956デフォルトの名無しさん
05/03/19 09:11:530957デフォルトの名無しさん
05/03/19 13:46:525.9は5.10になるから6とは関係ない。
6は……ある程度なら実装があるっぽい。
ライブラリとかがないから仕事で使いにくそうだけど。遊びなら。
0958デフォルトの名無しさん
05/03/19 14:08:450959デフォルトの名無しさん
05/03/19 14:18:20まぁおそらくプリプロセスかましてるだろうから
速度的にアレなんだろうな。
0960デフォルトの名無しさん
05/03/19 21:35:42getppid
0961デフォルトの名無しさん
05/03/19 21:46:440962デフォルトの名無しさん
05/03/19 21:46:580963デフォルトの名無しさん
05/03/19 21:47:230964デフォルトの名無しさん
05/03/19 21:52:570965デフォルトの名無しさん
05/03/19 21:56:590966デフォルトの名無しさん
05/03/19 22:00:420967デフォルトの名無しさん
05/03/19 22:57:070968デフォルトの名無しさん
05/03/19 23:05:510969デフォルトの名無しさん
05/03/20 00:17:21continue;
0970デフォルトの名無しさん
05/03/20 00:22:590971デフォルトの名無しさん
05/03/20 00:23:590972デフォルトの名無しさん
05/03/20 01:09:30Cですか?
0973デフォルトの名無しさん
05/03/20 03:34:240974デフォルトの名無しさん
05/03/20 03:56:010975デフォルトの名無しさん
05/03/20 04:33:15ってやってハマることってよくあるよね?
0976デフォルトの名無しさん
05/03/20 06:47:06D知ってる奴は慣れっこだ
なにせ、DMDは0.99->0.100になったからな
# イツニナッタラ1.0ニナルンダヨ
0977デフォルトの名無しさん
05/03/20 06:57:45例えばXFree86なんかがこの方式
0978デフォルトの名無しさん
05/03/20 11:02:12$VERSION = v1.10;
とするとか。
0979デフォルトの名無しさん
05/03/20 15:13:12v-stringはdeprecated。
0980デフォルトの名無しさん
05/03/20 18:21:21可能ですか?
フォームに自動記入とか、オートログインやりたいことが沢山あるのですが
作業の自動化とか...何から手をつけてよいものやら...リャマ本を何度も何度も
読み返してはいるのですが、やりたいことの敷居が高すぎて、
遊びで計算、集計などチマチマとコーディングしながら学習中です
0981デフォルトの名無しさん
05/03/20 18:23:42> リャマ本読んで習得中の者ですが、perlでVB、VCのような視覚的コードディんグって
> 可能ですか?
お前に可能だとはとても思えない。
0982デフォルトの名無しさん
05/03/20 18:41:41オイラにはコマンドライン→ファイル出力が限界なのですね...
素直にVB,VC選択しとけばよかった...はうう、明日、宅配便ラマ本到着
するなあ、手遅れか。 切腹
0983デフォルトの名無しさん
05/03/20 19:26:47視覚的コードディんグってのが何なのかわかんない
CGIの質問なら板違い
0984デフォルトの名無しさん
05/03/20 19:51:55クラス分けしコーディングしてますよね?
それを視覚的と呼びましたスイマセン><
perlもオブジェクト指向なのですが、オイラの技量じゃコンソールが精一杯
なのです。コマンドライン操作ではなく、直感的なボタン等が欲しかったのです。
また、他のアプリ定型作業をperlで自動化させたいなあ っと儚い夢を抱いておりました
0985デフォルトの名無しさん
05/03/20 20:01:24適当なGUIモジュールを入れれ
[GUI perl]でググれば出てくる。
VB,VCみたいなやさしい環境は期待するな。
0986デフォルトの名無しさん
05/03/20 20:11:390987デフォルトの名無しさん
05/03/20 20:23:03詳しくはO'Reillyの入門Perl/Tkを読んでください、と
0988デフォルトの名無しさん
05/03/20 20:24:17難しそうですが、乗り換えずにperlで頑張ってみます。
有難うございました。m><m
ttp://www.geocities.jp/m_hiroi/perl_tk/index.html
今後の参考までに記述しておきます。
0989デフォルトの名無しさん
05/03/20 20:36:110990デフォルトの名無しさん
05/03/20 23:30:220991デフォルトの名無しさん
05/03/21 01:12:42簡単なGUIビルダーもついてるよ。
0992デフォルトの名無しさん
2005/03/21(月) 18:45:29http://camelbones.sourceforge.net/index.php
CamelBoneのサイト久々に見たら更新されててびっくりした
0993デフォルトの名無しさん
2005/03/21(月) 22:49:02http://pc5.2ch.net/test/read.cgi/tech/1111034732/
0994デフォルトの名無しさん
2005/03/21(月) 23:21:06レス数が950を超えています。1000を超えると書き込みができなくなります。