Perlについての質問箱 12箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGPerlについての質問箱です
"There's more than one way to do it"ということで
ぱぁるの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
WEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
姉妹スレッド(Perl コーディング初心者質問コーナー Part37@WebProg)
http://pc5.2ch.net/test/read.cgi/php/1093106507/
過去ログは>>2-1001あたり
0232デフォルトの名無しさん
NGNG>>3
0233デフォルトの名無しさん
NGNGおまえCSVファイルって何のことか分かってて言ってる?
0234デフォルトの名無しさん
NGNGPerlの勉強よりアルゴリズムの勉強が必要だと思う
手順を論理的に考える能力が足らないんじゃないのかな
0235デフォルトの名無しさん
NGNGで、foo bar ahoを文字列のリストとして取得するのはどうやるんでしょうか。
my $input = $_;はできても
my @inputs = @_;はできないですよね。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGカンマ区切りテキスト
0238デフォルトの名無しさん
NGNGthx
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGWin32モジュール使えばいいんですか?
0242161
NGNG根本的な解決方法かどうかはわかりませんがPARのアップグレードを試みたので状況報告です。
(PAR-0.85の)makefile.plを実行してmissingと出たものをppmで追加し、全てloadedと表示されるようにしました。
しかし、Fetching 'PAR-0.85-MSWin32-x86-multi-thread-5.8.2.par' に失敗し、'script/parl.exe'の生成にも失敗しました。
そこで独自にparファイルをダウンロードしたのですが、@INCやMakefile.plと同じディレクトリに置いてもそれを使ってくれません。
parファイルを解凍しての手動インストールは難しそうなので断念しました。
0243デフォルトの名無しさん
NGNGs/\x0d\x0a?$//;
にしてる。
0244デフォルトの名無しさん
NGNGttp://www.bribes.org/perl/ppmdir.html は見たのか?
0245デフォルトの名無しさん
NGNG私も同じようなエラーが出たので
ttp://aut.dyndns.org/par/
から使っているPerlのバージョンにあう
PAR-0.XX-*.parをダウンロードして
手動でインストールした所、エラーが出なくなりました。
(Win2K Perl 5.8.3)
でも、結局、
PAR-0.85はエラーが出てインストールできなかったので、
もしかしたらPerlを最新バージョンにアップするとうまくいくかもしれません。
0246161
NGNG---
>>245 回答ありがとうございます。
今Perlを5.8.2->5.8.4にバージョンアップさせました。
>>244 回答ありがとうございます。
そのサイトは見ていませんでした。
コンパイル済みPARの配布を行っているんですね。
・Perlのバージョンアップ
・ttp://www.bribes.org/perl/ppm/PAR.ppd からインストール
両方行ったところ「pp --gui -a test.gld -o test.exe test.pl」で実行ファイルを作成でき、起動も無事行えました。
具体的な原因は判らなかったもののこれが過去ログとなった時に役立てば幸いです。
本当にありがとうございました・゚・(ノД`)・゚・
0247デフォルトの名無しさん
NGNG情報Thx.
0248デフォルトの名無しさん
NGNGMac 使い?
0249243
NGNG0250デフォルトの名無しさん
NGNGchomp使わないで、
そうする利点がわかってんなら、
それでいいんじゃない。
あーっそって感じ。
0251デフォルトの名無しさん
NGNG0252243
NGNG0253デフォルトの名無しさん
NGNG勘弁してくれよ。
終わった話を得意気に持ってくるヤツに、
あっそ。と言ってあげたまでの話。
お前には、はいはい。と言ってあげよう。
0254デフォルトの名無しさん
NGNG取敢えず、駄目ならソース出せということで。
0255デフォルトの名無しさん
NGNG>b0005 gtgaaaaagatgcaatct
>yaaA atgctgattcttatttca
>Zaw atgaggttggccccccca
...
>Z0005 gtgaaaaagatgcaatct
>yaaA atgctgattcttatttca
>Eae atgagagagagccgagccgag
...
を
gtgaaaaagatgcaatct b0005 Z0005
atgctgattcttatttca yaaA yaaA
...
と表示させる方法を教えてください。
(二つのファイルを比較して、塩基配列(右の部分)が等しいものの名前を表示する。
同じファイル内では等しくても表示しません。)
自分は塩基配列をそれぞれ変数にして等しい時表示すると書きたかったのですができませんでした。
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNGopen A, "file-a.txt" or die;
while(<A>){
my ($tag, $enki) = split;
$enkis{$enki} ||= [$tag];
}
close A;
open B, "file-b.txt" or die;
while(<B>){
my($tag, $enki) = split:
unless($enkis{$enki}){
$enkis{$enki} = [$tag];
}else{
push $enkis{$enki}, $tag;
}
close B;
print qq/$_ @$enkis{$_}\n/ foreach (keys %enkis);
0258デフォルトの名無しさん
NGNG>>255は、自分が分かっているんだから相手もわかる。
相手が理解しやすいよう伝えようとは考えない。
この辺で、自己中心的な部分があります。
また、こういう考えをする人は頭の良い人に多いように思います。
また、他人が自分に力を貸すのは当たり前。
そういう思想の持ち主のように思います。
また、物を例えて表現するのが苦手に思います。
これは逆に、例えた物を置き換えて理解するのが苦手に繋がります。
たとえば、ライターの火は危ないよ、と教えてもらっても、
「ライターの火は危ない」とだけ学習し、コンロの火も危ないとは学習しません。
「火は危ない」そう学習するのが苦手に思います。
こういう人は、人とのコミュニケーションが苦手で、
自分を表現するのが下手な奥手な人。
以外な所で知的で、内面は大胆不敵。
しかし、外には出さない。
煽りっぽくなりましたが、正直なあなたの印象です。
たとえ、ここで答えを聞いても、
応用し、違う局面で生かす事ができないと思うのであります。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG質問者のレベルも下がってしまった。
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG落ち着くんだ!(# =ΦωΦ=)フーフー…!!
0265デフォルトの名無しさん
NGNG図星を指されてむかついた時は、もっと文章を捻ろう。
定型文に依存すると、真っ赤な顔したDQNってバレちゃうぞ☆
0266デフォルトの名無しさん
NGNGPerlで次のようなHTTPクライアントプログラムを作ったのですが、
iswebのcgiを取得しようとすると、どうしても403になってしまいます。
何か解決策知ってる方いませんでしょうか?
#!/usr/bin/perl
use Socket;
$u = "http://nekyo.hp.infoseek.co.jp/cgi-bin/wiki/wiki.cgi";
if($u =~ m|^http://([-_\.a-zA-Z0-9]+)/?(.*)$| ){
$host = $1; $port = getservbyname('http', 'tcp'); $path = $2;
}elsif($u =~ m|^http://([-_\.a-zA-Z0-9]+):([0-9]+)/?(.*)$| ){
$host = $1; $port = $2; $path = $3;
}
$iaddr = inet_aton($host) || die 'err';
$sock_addr = pack_sockaddr_in($port, $iaddr) || die 'err';
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || die 'err';
connect(SOCKET, $sock_addr) || die 'err';
select(SOCKET); $|=1; select(STDOUT);
print SOCKET "GET $u HTTP/1.0\r\n";
print SOCKET "Referer: $u\r\n";
print SOCKET "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)\r\n";
print SOCKET "Host: $host:$port\r\n\r\n";
while(<SOCKET>){ print; m/^\r\n$/ && last; }
while(<SOCKET>){ print; }
0267デフォルトの名無しさん
NGNG顔を真っ赤にする奴がいるんだろうか。
0268デフォルトの名無しさん
NGNGLWP使えって。
0269デフォルトの名無しさん
NGNGGET /cgi-bin/wiki/wiki.cgi HTTP/1.0
っとするべきところが
GET http://nekyo.hp.infoseek.co.jp/cgi-bin/wiki/wiki.cgi HTTP/1.0
となったるだーよ
0270263
NGNG0271デフォルトの名無しさん
NGNG0272263
NGNG0273デフォルトの名無しさん
NGNG0274263
NGNG0275デフォルトの名無しさん
NGNGありがとう!できました!
0276デフォルトの名無しさん
NGNGマルチコアプロセッサ対応版のperl、みたいなのはあるんでしょうか。
0277デフォルトの名無しさん
NGNGブラウザを閉じたら閉ループから抜け、プロセスを終了させる方法とかりますでしょう
か?
監視処理的な事をやらせたいので、
閉ループとsleepとを使って行なわせてるのですが、
ブラウザを閉じてもプロセスが動きっぱなしになるので、
タスクマネージャーでいちいち終了させるのが、
面倒でありまして。
0280デフォルトの名無しさん
NGNGHTML、reloadでぐぐるぐらいのことが出来なくてどうする。
それにもうPerlの話じゃないし、初心者だという開き直りも印象が悪い。
出直して来い。
0281デフォルトの名無しさん
NGNGOSもわからんし監視処理「的」ってのも意味不明だけど
forkしてexecして親からpid監視すりゃいいンじゃないの?
って既に他所で開いてあるブラウザを監視したいとかいう話だったら
もう知らんけど。
0282デフォルトの名無しさん
NGNGおすすめは何ですか?
ついでに手術してくれる病院も
紹介してもらえるとありがたいのですが。
0283デフォルトの名無しさん
NGNG自分でBB弾でも詰めとけよ
0284デフォルトの名無しさん
NGNG悪い事言わないから。
真珠を埋める手術受ける前に、
真性包茎の手術を受けろ。
な?
0285デフォルトの名無しさん
NGNGmod_perlみたいなのを使った場合は知らんけど、
普通cgiはブラウザ〜で読みだしたときの状態を見るものだとおもわれ。
よってブラウザリロードをしてとりこむ。->鯖のプロセス自体はその都度終了。
監視処理とやらは常駐処理になるだろうから別プログラムにせにゃならん筈。
0286デフォルトの名無しさん
NGNG$conn = 'Provider=Microsoft.Jet.OLEDB4.0;';
$conn .= 'DataSource=test.mdb;';
$db = Win32::OLE->new('ADODB.Connection');
$db -> Open($conn);
$rs = $db->Execute("SELECT * FROM [TEST];");
while (!$rs->EOF) {
print $rs->Fields('ID')->Value;
$rs->MoveNext;
}
$rs->Close;
$db->Close;
----------------
while (!$rs-EOF) { の行でエラー
Can't call Method "EOF" on an undefilned value text.cgi line xx.
今まで動いてた物が急に動かなくなりました。
原因又は、原因の突き止め方を教えてください。
Win2k-Server, IIS ,ActivePerl v5.8.4 ,Access2000
0287デフォルトの名無しさん
NGNG学校で聞いたらXPだと入ってると言われたんですが・・・
馬鹿な質問すいません
0288デフォルトの名無しさん
NGNGそれどこの学校だよw
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG287 「先生、学校のパソでもパールとかできるんすか?」
クソ先公 「(あ?実習室にはXP機があるし、図書館にはiMacがあるが、どっちの事だ?
XP機には漏れが Perl をインスコしておいたが……)
おう、Perl なんかよく知ってたな。どこで使いたいよ?」
287 「あー、実習室のパソで……」
クソ 「あそこなら使えるぞ。自由に使え」
287 「押忍! アリガトッシタ!」
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG多分それビンゴ
0293デフォルトの名無しさん
NGNGXP以外に98やらMeやらMacやらLinuxやらが入ってるPCがあり、
XP(が入ってるPC)にはPerl(インストールしておいたから)入ってるよ。
の説明を受けたのをXPには最初から入ってる物と勘違いしたに1000カノッサ
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG$db->Executeの戻り値がundefだから。
どういう条件でundefが返るのかは自分で調べてちょ。
(テーブルがなくなったとか、あるいはファイルに接続できなくなったとか、排他制御とか、いろいろ想像できるけど)
0296デフォルトの名無しさん
NGNGC:\Documents and Settings\masayuki>ppm
Error: neither 'HKEY_LOCAL_MACHINE/SOFTWARE/ActiveState/PPM//InstallLocation' no
r 'HKEY_CURRENT_USER/SOFTWARE/ActiveState/PPM//InstallLocation' found in registr
y at E:\www\usr\bin\ppm.bat line 29.
なんて言われてしまったんですが、どうしたらいいんでしょう?
ちなみにパールはE:\usr\local\binにインストールしてあるのですが・・・
Windows XP
ActivePerl 5.8.1 Build 807
です。誰かアドバイスよろしくお願いします。
0297デフォルトの名無しさん
NGNGXPだってさ
0298デフォルトの名無しさん
NGNGそれがどうかしましたか?
0299デフォルトの名無しさん
NGNG再インスコ
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGボーダフォンの絵文字変換の部分らしき部分の抜粋です
else {
$str =~ s/(\d\d\d\d\d);/<img src=\"$ImodeEmojiDir$1\.png\" border=0 width=12 height=12>/g;
if ($str =~ /\x1B\$/) {
$str .= "\x0F";
1 while ($str =~ s/(\x1B\$[\45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)(\x0F)/$1$2$4$1$3$4/g);
$str =~ s/\x1B\$([\45-\x47\x4F-\x51][\x21-\x7A])\x0F/'<img src="' . $JskyEmojiDir . unpack('n',$1) . '.gif" border=0 width=12 height=12>'/eg;
$str =~ s/\x0F$//; }
「Unicode E539」「ウェブコード $QY」が「20513.gif」と変換されます。
ttp://www.dp.j-phone.com/dp/tool_dl/web/picword_06.php
順序良く並んでいれば連番で問題ないのですが、変換されると番号が飛びメチャクチャになります。
何か良い方法は無いでしょうか?
0302301
NGNG←と※は半角(?)で、※の部分は小さすぎて見えませんでしたので推測です。
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG>$str =~ s/\x1B\$([\45-\x47\x4F-\x51][\x21-\x7A])\x0F/'<img src="' . $JskyEmojiDir . unpack('n',$1) . '.gif" border=0 width=12 height=12>'/eg;
>$str =~ s/\x0F$//; }
とりあえず、whileの中の置換gオプションは間違いじゃかと。
あと1、2行目の文字クラスで\45もおかしいよね。。。
0306デフォルトの名無しさん
NGNG仕事ではありません、まぁ甘いと言われても仕方ありませんが
>>304
全文でもいいのですが、サブルーチンなので意味が無いかと思いまして
>>305
出来ればおかしい部分を、助言して頂けませんでしょうか?
助言が得られなければ、違約金覚悟で契約してきますが..貧乏なもんで
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG\45は\x45の間違いだろう。そこ直してみれば?
gはなくてもいいけどあってもいいはず。
しかし「変換されると番号がとびめちゃくちゃ」と
いわれてもなにがなんだかさっぱりわかんない。
具体的に例をあげて、これを変換したらこうなった
けど自分はこうなることを期待しているというのを
はっきり書かないと。
0309デフォルトの名無しさん
NGNGとなって
$str =~ s/\x1B\$([ry][ry])\x0F/ry . unpack('n',$1) . ry'/eg;
だから
画像ファイル名の決定には1度目の置換の $1$2$4 までしか使ってないし、なんで妙な挿入になってんのかも謎
0310305
NGNG1 while (s/(<)(\w)(\w+)(>)/$1$2$4$1$3$4/g);
print ;#$_ = <b><c><d><d><f><f><f><f>で表示
gオプションは正しいってことで。上の例場合、
<>内に2文字以上あったら1文字になるまで置換しつくすってことで。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGドキュメントくらい読めよ。またはpp --helpとかさ。
pp --icon=myicon.ico script.pl
0313デフォルトの名無しさん
NGNGあのコード片じゃそこまでややこしく画像ファイル名を作る理由がワカランからもうこのネタはお終いじゃ
0314デフォルトの名無しさん
NGNG文字コードに対応した絵文字の画像ファイルがあらかじめ
用意してあるんじゃないかと思われ。
0315デフォルトの名無しさん
NGNGリンク先のHTMLソース解析して、ハッシュにでも突っ込むのが一番早いと思われ
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG-ep は -e "p" とするのと同じ意味になる。
-e は後ろに引数を取るオプションだから、後ろに変なの続けちゃダメでしょ。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGmkdirで新規ディレクトリを作成し、そのディレクトリに新規ファイルを作成する事までは出来たのですが
そのファイルのパーミッションを変えることが出来ません。。
chmodでも変わらないのですが、何かいい方法ないでしょうか?
よろしくお願いします
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG一応777にしてますです
0324デフォルトの名無しさん
NGNGゼロだった場合は $! を表示。で分かるかも知れず分からぬかも知れず。
つうか書き捨てのスクリプトはともかく、なにかちゃんとしたものを
作ってるんだったら外部に作用する関数(ファイル操作とかDBとか)
を呼ぶときは必ず失敗か成功かチェックするコードを入れる癖をつけるべし。
0325perlマン
NGNGどのようにしたら 一番大きな変数表示が出来るperl スクリプトができるでしょうか?
0326デフォルトの名無しさん
NGNG$a = 1;
$b = 2;
$c = 3;
print "a がデケエ" if($a > $b && $a > $c);
print "b がデケエ" if($b > $a && $b > $c);
print "c がデケエ" if($c > $a && $c > $b);
0327デフォルトの名無しさん
NGNG$user = 'aaa';
$passwd = 'bbb';
$db = DBI->connect('DBI:mysql:localhost',$user,$passwd);
$sth = $db->prepare("SELECT * FROM hoge");
これ実行するとInternal Server Errorになるのですが
最後の$sthの行を消すとエラーはでないのです
なぜでしょうか?
0328デフォルトの名無しさん
NGNG等号も入れたほうがいいかも知れない
>327
$sth = $db->prepare("SELECT * FROM hoge;");
だと思われ
0329デフォルトの名無しさん
NGNGエラーログ見ろよ。Internal Server Errorになったときの基本だ。
0330デフォルトの名無しさん
NGNGなるほど!
と思ったけどそれでも無理でした。。
0331デフォルトの名無しさん
NGNGエラーログ見ろよ。Internal Server Errorになったときの基本だ。
■ このスレッドは過去ログ倉庫に格納されています