Perlについての質問箱 14箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG"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
● 2004/11/28現在の最新版: 5.8.5
● 2004/11/28現在の開発版: 5.9.1
0002デフォルトの名無しさん
NGNG1 http://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 http://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 http://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 http://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/
0003デフォルトの名無しさん
NGNGPerlプログラミング講座: 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
0004デフォルトの名無しさん
NGNGスレ立て乙!
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGhttp://www.perl.com/CPAN/src/
まだ出ていないのか、もうすぐ出るのか、ガセなのか、、、
0007デフォルトの名無しさん
NGNGあれ?なんでperl.comに無いんだろう。
http://search.cpan.org/~nwclark/perl-5.8.6/
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGそれよか、5.8.5→5.8.6の変更点教えれ。
それによってインスコするかどう−か考えるから。
0011デフォルトの名無しさん
NGNGメンテナンスリリースです。
http://www.cpan.org/src/
http://www.cpan.org/src/perl-5.8.6.tar.gz
Changes はこちら。
http://search.cpan.org/src/NWCLARK/perl-5.8.6/Changes
0012デフォルトの名無しさん
NGNGChanges より perldelta の方が嬉しい人多いんじゃないかな。
http://search.cpan.org/src/NWCLARK/perl-5.8.6/pod/perl586delta.pod
0013デフォルトの名無しさん
NGNG結構、バグフィクスありまつね。utf-8の扱いで不正な文字があっても
正常に対応できるようになったとか。漏れなんか、utf-8で多言語扱って
るからバージョンアップした方がいいみたい。
0014デフォルトの名無しさん
NGNGDebian GNU/Linux 3.1 colinux tty1
This is perl, v5.8.4 built for i386-linux-thread-multi
colinux/Debian で環境構築中です。
CPANからいろいろモジュールをインストしようとしてるのですが、
たとえばJcodeを入れようとすると、
/usr/lib/perl/5.8/CORE/perl.h:380:30: sys/types.h: No such file or directory
/usr/lib/perl/5.8/CORE/perl.h:411:19: ctype.h: No such file or directory
(延々と続く)
などといわれてインストールできません。
他に、Email::Valid::Loose はテストに失敗するようで、
これも駄目でした。
RHL9環境下の This is perl, v5.8.4 built for i686-linux では問題なく
インストールできているのです。
最初、makeがないといわれてmakeをいれ、次にccがないと怒られたので
gcc入れました。
原因わかる方いらっしゃいますか?
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGなんのためにメンテナーががんばってると思ってんじゃボケ
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGwget を使って実現するにはどうすればよいでしょうか。
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGすいません。>18はperlの話です。
0021デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGそういうことじゃないです。脳が少ないようなのでもういいです。
0024デフォルトの名無しさん
NGNGもっとちゃんと説明する必要があるんじゃないの?
>>18 の質問だと、おそらくみんな >>21 が正解だと思うよ。
0025デフォルトの名無しさん
NGNGみんなって誰と誰と誰ですか?
あなたの脳内の人たちですか?
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGウワ。逃げやがった。
0028デフォルトの名無しさん
NGNGまあ私の脳内と思ってもらってもいいけども、
実際、ちゃんとしたレスがもらえて無いじゃない?
0029デフォルトの名無しさん
NGNGちゃんとしたレスがもらえませんでした。
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGまた逃げやがった。
0032デフォルトの名無しさん
NGNGそういうことじゃないです。脳が少ないようなのでもういいです。
0033デフォルトの名無しさん
NGNGみんなって誰と誰と誰ですか?
あなたの脳内の人たちですか?
0034デフォルトの名無しさん
NGNG$date1 = '(?:(\d+)[-/.](\d?\d)[-/.](\d?\d))';
$date2 = '(?:(\d\d\d\d)(\d\d)(\d\d))';
$time1 = '(?:(\d?\d)\:(\d?\d)\:(\d?\d))';
$time2 = '(?:(\d\d)(\d\d)(\d\d))';
$regex = "^(?:$date1|$date2)(?:\\s+(?:$time1|$time2))?\$";
@dateval = $targetstr =~ m%$regex%;
ここで言う「日時っぽぃ文字列」とは
●日付部
・区切り文字「-/.」があれば桁揃え不要…710/3/10等
・区切り文字なしなら8桁固定…20041129等
●時間部
・区切り文字「:」があれば桁揃え不要…1:1:1等
・区切り文字なしなら6桁固定…235959等
という定義で、日付部と時間部は1つ以上のスペースで区切って
時間部は省略可とし、日時としての妥当性チェックは
正規表現だけだと閏年判定等で大変なのでこの後の処理で行う予定です。
で、上記コードでマッチング自体はできるのですが、
@dateval[3 .. 5]に何かがキャプチャされてしまいます。
@datevalは年,月,日,時,分,秒になるようにしたつもりなんですがこれはなんでしょうか?
#ActivePerl 5.8.3で確認
あるいは他にいい正規表現があれば教えてください。
0035デフォルトの名無しさん
NGNGたとえば、 (:?$date1|$date2) に着目すると、
$date1 か $date2 のどちらか片方にマッチしたとしても、
そこだけで $1 から $6 まで占めちゃう。
ので、@dateval の内容を取り出す際に、
$1, $2, $3 または $4, $5, $6 のうちのセットされているどちらか一方だけを
とりだして 年,月,日 とするようにすればいいかと。
0036デフォルトの名無しさん
NGNG> たとえば、 (:?$date1|$date2) に着目すると、
> $date1 か $date2 のどちらか片方にマッチしたとしても、
> そこだけで $1 から $6 まで占めちゃう。
なるほど。
たしかに例えば「2004/11/29 235959」という文字列に対してマッチングさせたら
@dateval[0 .. 2]と@dateval[9 .. 11]にキャプチャされていて
仮に時間が省略されていたとしてもマッチさえすれば
$#dateval=11になっていることも確認できました。
ありがとうございましたm(_"_)m
0037デフォルトの名無しさん
NGNGStrange distribution name [Filter::Simple]
Module id = Filter::Simple
DESCRIPTION Simplified source filtering
CPAN_USERID DCONWAY (Damian Conway <[email protected]>)
CPAN_VERSION 0.79
CPAN_FILE D/DC/DCONWAY/Filter-Simple-0.79.tar.gz
DSLI_STATUS RdpO (released,developer,perl,object-oriented)
MANPAGE Filter::Simple - Simplified source filtering
INST_FILE /usr/local/lib/perl5/5.8.6/Filter/Simple.pm
INST_VERSION 0.78
直して欲しいかも。
$VERSION = '0.78';
のままだし。。。
0038デフォルトの名無しさん
NGNGあれ?CPANのは0.79になっているなぁ。。。
0039デフォルトの名無しさん
NGNGこれを使って、『半角文字5個分』のマッチングを行いたいのです。
例えば、
:abcde:
:fgh__:
:ijkl_:
:m____:
:no___:
(_ は半角スペースだと思ってください)
のようにコロンとコロンの間に半角文字5個分の領域を取って書いてあるテキストで
パターンマッチングを行いたいのですが、:と:の間のマッチングを
どのように記述していいのかわからないのです。
\w{5} を使えば:abcde: の部分はマッチングが行えますが、他の4行はダメですよね。
\S{5} を使っても、\Sは『スペース以外の全ての文字』なのでダメだと思います。
全ての文字と、スペースを含めて半角5個分をマッチングさせる方法があったら教えてください。
よろしくお願いします。
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGこれでいい?
/[\w\s]{5}/
0043デフォルトの名無しさん
NGNG004439
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG見分ける手段というのはありますでしょうか?
別にPerlじゃなくたってこれでできるというのがあれば、ポインタでも教えて頂ければありがたいです。
0049デフォルトの名無しさん
NGNGあるかないかと言えばある。回答終わり。
ポインタ?
0050デフォルトの名無しさん
NGNGjcode.pl の getcode() 関数を使うとできるかも。
0051デフォルトの名無しさん
NGNGポインタっていうか、ここ見たらあるから見れとかそういうのでもってことでした。
ちなみに、手間でなければその方法をお教え願えないでしょうか?m(_ _)m
>>50
ありがとございます。
試みてみます。
0052デフォルトの名無しさん
NGNG$binary = 1 if $str =~ /[\x0-\x8\xb\xc\xe-\x1f]/;
こんな感じかな。どうせ厳密なのはできないし。
0053デフォルトの名無しさん
NGNGそれだと ISO-2022-JP が救えなさそうだけど大丈夫かな?
0054デフォルトの名無しさん
NGNG見てみたら、ドイツ語と日本語混在のDOCてutf-16で書かれてたよ。
>>48は、ひょっとして同じことやろうとしてるのか。
0055デフォルトの名無しさん
NGNGCOM でやれば?
0056デフォルトの名無しさん
NGNGhttp://www.dehenken.co.jp/products/doccat/doccat.html
0057デフォルトの名無しさん
NGNGwv でやれば?
005854
NGNG情報、どもども。
とりあえず、wv(うぉーunix対応)ダウソしてみまつた。
これまで、xdoc2txt(free)つーのと「なんでもテキスト屋さん」
(share)つーの試して未丹やけど、日本語はうまくいくんだが、
ドイツ語特殊文字がぜんーぶダメポだったんよ。
でけたら、いつか報告始末ね。(今日は忙し)
005954
NGNGだけだと。何つうかな、記号類(機種依存文字かな)をいちいち指定
しないとダメポですたが。
006054
NGNGOpenOffice入れなくて済むのにぃ。
0061デフォルトの名無しさん
NGNGカンマ区切りかタブ区切りかぐらいにしてくれるツール無い?
perlで作ったやつ一人くらい居そうな気がするんだが
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGで、 CPAN は調べたんだろうな?
0064デフォルトの名無しさん
NGNGforeach (@abc) {
と
foreach (@$abc) {
の違いって何でしょうか?
前者は 配列 abc の各要素毎の処理で、
後者は 変数 abc で示された文字列の名称の配列の各要素毎の処理、
という理解であってますか?
0065デフォルトの名無しさん
NGNG@{$abc}の省略記法です。ラクダ本のリファレンスの章を読んでみると分かりやすいと思います。
0066デフォルトの名無しさん
NGNGあえがとうございます。
リファレンス、ですね。
勉強してみます。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGActivePerl
ttp://www.activestate.com/
GUI作りたいならPerl/Tk使っとけ
0069デフォルトの名無しさん
NGNG$ua->cookie_jar($cookie_jar);
$ua->timeout(600);
$request = POST("https://〜hogehoge〜/" ,[%form_data]);
$res = $ua->request($request);
$_ = $res->content;
上で'500 read failed:'って帰ってくるんですけど、対処方法はないですか?
timeoutは意味をなしていない見たいだし。
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG$c=4;
ではエラーになる(当然)のに、
use strict;
$a=4;
ではエラーにならないのはなぜですか? $aを$bにしても同じです。
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGちゃんと読め
0074デフォルトの名無しさん
NGNGDBDにSQLserver用のドライバありませんでしたっけ?
前に見た記憶があるんですが..私の記憶違い??
CPANさんやーいorz
0075デフォルトの名無しさん
NGNGCPAN
って、どう読めばいいのでつか?
0076デフォルトの名無しさん
NGNG惜しい! 7秒前に書き込めば・・・
0077デフォルトの名無しさん
NGNGハッシをまだ使いこなせていません。例えば、
一つのファイルは、
106 1473
106 764
1762 48
1762 38
1762 91
と、左の数字に対して、いくつかデータがあって、もう一つのファイルは、
106 30
1762 50
と、左の数字に対して一つしかデータがないものがあった時に、
これを、
106 1473 30
106 764 30
1762 48 50
1762 38 50
1762 91 50
のようにハッシュをつかって表示させるのはどうやればいいのでしょうか?
0078デフォルトの名無しさん
NGNG$hash[$file1_leftvalue} = $file1_rightvalue;
}
ループ{
printf("%d %d %d\n", $file2_leftvalue, $hash{$file2_leftvalue}, $file2_rightvalue);
}
0079デフォルトの名無しさん
NGNG@NEW1 ← 1データ
@NEW2 ← 2データ
・
・
@NEW100 ← 100データ
が入っており
これを
if (!open(OUT,">$ufile"))
print OUT @NEW1;
close;
if (!open(OUT,">$ufile"))
print OUT @NEW2;
close;
と別のファイルに出力します。@NEWの数が多いので
下記のようにループでやろうと思うのですが、print 分の@NEWの記載方法がわかりません
@NEW1 @NEW2 **** @NEW100 のようにカウントを用いたいのですがうまく認識してくれませんでした。
お願いします。
foreach my $num(1..100){
$ufile = $UDATA_DIR_C[$num].;
if (!open(OUT,">$ufile")) { &error('個人ファイルが書き込めません'); }
print OUT "@NEW$num"; ← これではだめでした
close(OUT);
}
0080デフォルトの名無しさん
NGNGprint OUT @NEW1;
close;
if (!open(OUT,">$ufile"))
print OUT @NEW2;
close;
同じファイルに出力しているようなのですが?・・・
0081デフォルトの名無しさん
NGNG$ufile = $UDATA_DIR_C[$num].;
としているので、違うファイルです
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGprint OUT "@{'NEW'.$num}";
とすればその部分はいけると思うけど、全体見直した方がいくない?
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG>>83
まじ、サンクスコです
0086デフォルトの名無しさん
NGNG配列の中の空白をとる置換をしようとおもうのですが
@NEW =~ tr/ //;
だと置換が行われないようです。一レコードづつ置換しないとだめでしょうか?
0087デフォルトの名無しさん
NGNGYES.
tr/ //d for @NEW;
0088デフォルトの名無しさん
NGNGおまえはスクリプトが完成するまで質問し続ける気かね
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG最初はハッシュ要素に配列入れようとしてたが、方法が分からずに
>>79みたいな変な実装になってるんだろう
>>78は全然間違った回答してるしw
0091デフォルトの名無しさん
NGNGサンクスです
0092デフォルトの名無しさん
NGNGforeach $num (0 .. $#STOCK) {
$line = $STOCK[$num];
($WORD,$PRON,$MEAN,$LVL,$CAT1,$CAT2,$YOBI1,$YOBI2,$YOBI3,$YOBI4,$YOBI5) = split(/@@@/,$line);
$line2 =$WORD.'@@@'.$CAT1.'@@@0@@@'.$CAT2.'@@@0@@@'.$YOBI1.'@@@0@@@'.$YOBI2.'@@@0@@@'.$YOBI3.'@@@0@@@'.$YOBI4.'@@@0@@@'.$YOBI5.'@@@0@@@'."\n";
#カテゴリーごとにユーザファイルを分割する
if ($CAT1 > 100 && $CAT1 < 200){push(@NLINE,$line2);}
}
@STOCKの内容を取り出して、条件に合えば、@NLINEに吐き出すのですが、
一行目が AAAAAAA だとするとちゃんとはいるのですが、2レコード目以降
BBBBBBだとすると先頭に半角の空白が入って@NLINEにはいってしまいます 具体的には
AAAAAA
BBBBBBB
CCCCCCC
です。直前(PUSHする前の)$line2のダンプを取ってみても空白は、まったくはいっていないので
pushをすると自動的に空白がはいってしまうようです。なぜでしょうか?
0093デフォルトの名無しさん
NGNG前スレ866さん、出番です(笑)
866 名前:デフォルトの名無しさん 投稿日:04/11/23 19:26:38
>>864
どっかで
print WRITE "@value";
とかやってんだろ。
0094デフォルトの名無しさん
NGNGおまえはスクリプトが完成するまで質問し続ける気かね
0095デフォルトの名無しさん
NGNGSir! 完成後も続けます! Sir!
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGんや、半角の空白
どう考えてもおかしい pushする直前にダンプしてもはいてないけど、push後にははいっている
perl5のバグかな
0099デフォルトの名無しさん
NGNG'@@@0@@@'."\n";
を
'@@@0'."\n";
ではだめですか?
010092
NGNGどうもです、今試したんですが
なぜかうまくいきました・・・ サンクスです
が理由がわかりましぇん
0101デフォルトの名無しさん
NGNGforeach $num (0 .. $#STOCK) {
$line = $STOCK[$num];
なんてやるぐらいならはじめから
foreach $line (@STOCK) {
にしろよ。$numそこでしか使ってないからいらないだろ。
■ このスレッドは過去ログ倉庫に格納されています