Perlコーディング初心者質問スレ Part 53
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/26(日) 14:38:23ID:SlmGsFMB【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0382nobodyさん
2006/12/21(木) 19:32:25ID:???正直余計わからんわw
リンクがされるかどうかは、正規表現にマッチするかどうかの判断でしょ?
まずURLは抜き出せるの?
0384nobodyさん
2006/12/21(木) 22:10:23ID:v7yMEHCt今perlを用いてCGIで
画像をUPできるようなものを作ろうとしています。
画像をうpする方は
<form method="POST" ENCTYPE="multipart/form-data" action="edit_completion.cgi">
<input type="file" name="TENSOU">
:
とやっていて受け取る方は
my $cgi = new CGI;
my $image = $cgi->param('TENSOU');
my $file_name="./test.jpg";
my $buffer;
open(OUT, ">$file_name") or die(qq(Can't open "$file_name".));
binmode OUT;
while (read($champ1_image, $buffer, 1024)) {
print OUT $buffer;
}
close OUT;
とやっています。
やってみると
白いページで止まってしまうのですが
お手数だと思いますが
正しいやり方を教えていただきますとありがたいです。
スレ違いでしたら誘導をお願いします。
0385nobodyさん
2006/12/21(木) 22:42:34ID:???0386nobodyさん
2006/12/21(木) 22:50:08ID:???○ while (read($image, $buffer, 1024)) {
0387nobodyさん
2006/12/21(木) 23:01:44ID:???use CGI::Carp qw(fatalsToBrowser);
と書いておくと、エラーがブラウザに表示されるようになるよ。参考までに。
0388nobodyさん
2006/12/21(木) 23:20:52ID:???$comment=~ s/(https?\:\/\/[^\s|\:|\<]+)\.(\/?)([\-_\.\!\~〜\*\'\(\)a-zA-Z0-9\;\/\?\:\@\&\=\+\$\,\%\#]*)(jpg|gif|png)/<a href=$1.$2$3$4$5><img src=$1.$2$3$4$5 hight=50 absbottom border=1><\/a>/ig;
これは末尾が画像の場合、画像でない場合はリンクだけにしたいんです
if使うと一旦配列に入れて展開しないとだめじゃないですか?
そんなことないですか?
それで、URL末尾(拡張子)が画像とそうでないものを置換演算で並べて
やろうと思ったんです
0389nobodyさん
2006/12/22(金) 01:00:50ID:???%hash = ('aaa' => @list);
$num = $hash{aaa};
これで、$numに3が入ってほしいんですが、test1が入ってしまいます。
%hash = ('aaa' => @list+0);
とすると3が入ります。
+0を付けなくても3を返してほしいんです。
助言をお願いします。
0390nobodyさん
2006/12/22(金) 01:05:13ID:???0391388
2006/12/22(金) 01:29:59ID:???さらに自動リンクした<a href>のタグと(jpg|gif|png)含むものをマッチさせ
その部分だけimg srcで画像表示させることにしました
お騒がせしました
0392nobodyさん
2006/12/22(金) 11:06:11ID:DIJoWwwOgrepで@namelistという配列に何個$nameがあるかどうか調べています。
$number=grep(/$name/, @namelist);
@namelistに様々な名前を入れてみたのですが、たまたま$name=キムタクと入れた
時だけ、@namelistにもキムタクがあるのにカウントしてくれません。(ネタじゃありません…)
まだ沢山カウントされない文字列があるのかもしれませんが、なぜ「キムタク」はカウントされなかったのでしょうか?
文字自体に問題があるのでしょうか?さっぱりです。。
0393nobodyさん
2006/12/22(金) 11:09:46ID:DIJoWwwO大丈夫でした。どういうことだ…
0395nobodyさん
2006/12/22(金) 11:26:02ID:DIJoWwwO「文字コード」ですか?
「キムタク」も「クサナギ」も文字コードは同じですよ。
ですから文字コードの問題ではないのではないでしょうか。
0396nobodyさん
2006/12/22(金) 11:40:31ID:???でもキムタクってダメ文字じゃないような。
0397nobodyさん
2006/12/22(金) 11:52:49ID:???文字を含んだ文字コードというのがあるのよ。
いいから>>2-3をきちんと読め。そういう反応するってことは読んでないだろ。
特にPerlメモ
ttp://www.din.or.jp/~ohzaki/perl.htm
の「日本語を扱う」のあたり。
0398nobodyさん
2006/12/22(金) 12:19:49ID:???0399nobodyさん
2006/12/22(金) 12:21:45ID:???覚えておこうっと。
0400nobodyさん
2006/12/22(金) 12:30:46ID:???0401nobodyさん
2006/12/22(金) 13:49:50ID:???0402nobodyさん
2006/12/22(金) 14:15:14ID:???0403nobodyさん
2006/12/22(金) 14:28:59ID:???0404nobodyさん
2006/12/22(金) 14:48:59ID:6wQis76n「�U」という文字をS-JISからEUCに変換しようと思っています。
Encode::from_to( $tmp, "CP932", "EUC-JP"); #Encode.pm
$tmp = jcode($tmp)->euc; #Jcode.pm
jcode::convert(\$tmp, 'euc'); #jcode.pl
正しく変換できるのはjcode.plのみでした。
Encode.pmあるいはJcode.pmで変換する方法はありますか?
0405nobodyさん
2006/12/22(金) 17:44:39ID:???http://search.cpan.org/~naruse/Encode-EUCJPMS-0.07/EUCJPMS.pm
> 正しく変換できるのはjcode.plのみでした。
$tmp = '�A'; # 0xFA41(CP932)
jcode::convert(\$tmp, 'euc', 'sjis'); # 0x13A2 ?
NEC特殊文字をやっつけてくれたjcode.plもIBM拡張文字を食わされると困る模様。
0406nobodyさん
2006/12/22(金) 18:10:36ID:6wQis76nありがとうございます
��や�ケもダメですね
Perlで全ての日本語の文字コード変換を行うことはできないのでしょうか?
入力される可能性のある文字についてみなさんどのように処理されていますか?
0407nobodyさん
2006/12/22(金) 18:27:46ID:???けっこうあるし、unicode以前は統一されていた部分ですら
どうunicodeに対応させるかでさらに分裂してしまってる現状
なので個人的にはあきらめているな。
どうしても満足できなければ、自前で好きな変換表を定義してe
nc2xsでperlから使えるようにするのがいいんじゃないか。
いいのができたら公開すると世の中のためにもなる。
0408nobodyさん
2006/12/22(金) 19:29:11ID:???0409nobodyさん
2006/12/22(金) 22:04:52ID:???0410nobodyさん
2006/12/23(土) 01:35:39ID:rkaYYOb9できない制限をつけたいのですが、わかりません。
(来訪者の割りに投稿者が少なく、DOMを減らしたいため)
書込みルーチン内に、coookieを使って投稿カウントを保存
し、閲覧時にcoookieを読んで条件分岐すれば良さそうな気が
していますが、具体的にどうしたらよいのかわかりません。
「imgboard」で実現したいのですが。
http://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi
いますが、
0411nobodyさん
2006/12/23(土) 01:42:38ID:rkaYYOb9coookie⇒cookieでした。失礼しました。
0412nobodyさん
2006/12/23(土) 02:33:17ID:???わかってるじゃん。あとは、クッキーを読み書きする方法を調べるだけだろう。
「Perl クッキー」とかで検索すれば、すぐにわかるよね。
0413nobodyさん
2006/12/23(土) 04:12:05ID:???0415nobodyさん
2006/12/23(土) 07:57:13ID:vvP1Ez0I0416nobodyさん
2006/12/23(土) 10:26:34ID:9XJJytw/おなじnameで複数のvalueをPOSTする方法に悩んでいます。
0417nobodyさん
2006/12/23(土) 10:31:34ID:???0418nobodyさん
2006/12/23(土) 14:34:05ID:???Date::Simpleは何か違うような感じだったので
例
1900/01/01 12:00:00
↓
01/01 12:00
0419nobodyさん
2006/12/23(土) 14:36:03ID:???0420nobodyさん
2006/12/23(土) 15:28:46ID:???0421nobodyさん
2006/12/23(土) 15:49:44ID:???たくさんモジュール使っても混乱するだけだし。
いまだとDateTimeモジュールがベストプラクティスなんじゃないの。
0422nobodyさん
2006/12/23(土) 16:14:47ID:MDS/ay7MApache2 + mod_perl2
--httpd.conf------
PerlSwitches -I/var/www/Hello/lib
PerlLoadModule Hello
PerlTransHandler Hello
<Location /Hello>
PerlSetEnv Hello_DEBUG 0
SetHandler modperl
PerlResponseHandler Hello
</Location>
の設定をして、アパッチ再起動すると
WWWサーバー内のデータ全てがmod_perl2化しているようになり、
speedyCGIなどのスクリプトの動きがおかしくなるのですが、
どのように解決したらよいでしょうか
0423nobodyさん
2006/12/23(土) 16:43:07ID:???検索したけど具体的な使用例とか見つからず分かりませんですた。
でもありがとうございます。今度また調べます。
>>421
ありがとうございます。DateTimeはいい感じですね。
ttp://iandeth.dyndns.org/mt/ian/archives/000619.html
>>420
文字コード変換とかXMLパースとかも全部自前でやってろ(^ω^)
0424nobodyさん
2006/12/23(土) 23:10:40ID:HvJ8lenr$1に放りこんであるものを
そのファイルの最後の<b>名前<\b>にマッチングさせてたいのだが、、、。
0425nobodyさん
2006/12/23(土) 23:17:38ID:HvJ8lenr($ts, $file) = split(/,/, $dir[$i]);
last if $ts eq ' ';
open(R, "$bbspath/$dir/$file");
@resthred = <R>;
close(R);
$resthred[0]=~ /<b>([^\<]*)<\/b>/;
$restitle = $1;
$restitle =~ s/\s+$//;
$resthred[$#resthred-1] =~ /<dt>(\d+)/;
$k = $1; # 投稿記事数
$j = $i + 1; # スレッド表示番号
if ($k ne "1") {$k = "($k)";} else { undef $k; }
$file =~ s/\.html$//;
if ($threadnum > $i) {
print W qq(<br>$j.<a href="$cgiurl$logbbscgi/$dir/${file}/" target="contents"><font size=3>$restitle$k</font></a> );
}
print W2 qq($j.<a href="${file}/">$restitle$k</a> \n);
}
#ソースはこんな感じ。
0426nobodyさん
2006/12/23(土) 23:21:27ID:HvJ8lenrここらへんのメタキャラクタを^から$に変えるということでもないし。
そもそもこのインデックスナンバーの意味もわからないのだが、、、。
0427410-411
2006/12/23(土) 23:40:58ID:rkaYYOb9レスありがとうございます。
考え方としては間違ってないということですね。
>>413
>(´-`).。oO(投稿しないと見れない掲示板にどうやって投稿するのやら…)
投稿していない段階では、新規書込画面しか出ないようにしたいのです。
>>414
>パスワード制にすりゃいいのにね
すでに導入しているのですが、カキコしてくれる人とそうでない人とに
不公平さが出てしまっていて悩んでいるんです。
0428nobodyさん
2006/12/23(土) 23:46:08ID:MDS/ay7M$resthred[0]=~ /<b>([^\<]*)<\/b>/;
<b>名前<\b> なら こうじゃないかな?
/<b>(.+)<\/b>/
0429nobodyさん
2006/12/23(土) 23:46:51ID:???0430nobodyさん
2006/12/24(日) 00:25:34ID:AWC9vzHT<b>改編fdsfdfd </b></font>投稿者:<font color="forestgreen"><b>太郎 </b>
<br><hr><a name="bottom"></a><a href="index.html">掲示板に戻る</a> <a href="
まあ要するに最初の<b>改編fdsfdfd</b>になってるものを
最後の<b>太郎 </b>がひっかかるようなマッチングをしたいだけなんですが
現状はこのメタキャラクタで最初の<b>~</b>で
きちんとひっかかる。
0431nobodyさん
2006/12/24(日) 00:47:39ID:???0432nobodyさん
2006/12/24(日) 00:57:31ID:???スクリプトで2chに負荷かけそうで心配
0433nobodyさん
2006/12/24(日) 01:10:15ID:???それちょっと前にも話題にでたけど、否定先読み使って
$regex(?!.*$regex)
で $regex にマッチする一番最後の部分が得られる。
$_ = <<EOT;
<html><head><title>fdsfdfd </title></head>
<b>改編fdsfdfd </b></font>投稿者:<font color="forestgreen"><b>太郎 </b>
<br><hr><a name="bottom"></a><a href="index.html">掲示板に戻る</a> <a href="
EOT
my $regex = qr{<b>([^<>]*)</b>};
print "$1\n" if m{$regex(?!.*$regex)};
0434nobodyさん
2006/12/24(日) 01:12:35ID:???m{<font color="forestgreen"><b>([^<>]*)</b>}
でマッチできるね(´・ω・)
0435nobodyさん
2006/12/24(日) 07:03:20ID:???2項分布の計算をperlでやりたいんですが、一定の数値以上になると、階乗のところで変数の容量オーバー(? #INFとの表示)でおかしくなってしまいます
・変数の扱える桁数を大幅に増やす方法はありませんか?
・ExcelのBINOMDIST関数的なライブラリ(?)は無いのでしょうか
スレ違いだったらごめんなさい。よろしくお願いします
0436nobodyさん
2006/12/24(日) 07:07:05ID:???bigintプラグマ(整数)
bignumプラグマ(実数)
実体はMath::BigIntやMath::BigFloat
他に分数で扱うMath::BigRatもある。
0438nobodyさん
2006/12/24(日) 12:01:21ID:AWC9vzHTお答えくださってありがとうございます。
しかしなかなかうまくいかないので
プロにおまかせすることも検討してます。
やはり正当な知識には正当な料金というものが発生するものという
考えが正しいのかと。
それでは。
0439nobodyさん
2006/12/24(日) 12:57:49ID:???料金云々の話は確かに間違いではないけど、何より>>424>>430の説明(≒仕様)がわかりにくいんです。
プロに頼むにしても仕様があやふやだったり後出しが続いたりすると「なかなか」なのは同じですよ。
「また仕変ですか」と呆れられたり値上がりしたりするだけですけど。
行末にある<b>太郎 </b>の「太郎 」が$1として使えるだけでいいんだったら
$ を書き足すだけでもいいのかもしれない。>>434が書いたものでうまくいかない理由は不明。
(実はcolor="forestgreen"じゃない場合があるとか、そんな問題のような気がする)
$resthred[0]=~ m|<b>([^<>]*)</b>$|; # スラッシュをエスケープするのが面倒です版
$resthred[0]=~ /<b>([^\<]*)<\/b>$/; # 元ソース使い回しました版
>>430の「最後の」が行末でも何でもない場合は、プロにお金を積む方向で。
0440nobodyさん
2006/12/24(日) 14:06:39ID:AWC9vzHTやはりなかなかうまくいきません。
「最後の」というのは行末ということではなく
加工前のログにたくさんある<b>名前</b>のなかで最後の<b>名前</b>
=最新レスポンス者の名前をひっかけたいということです。
まあ、最初からそのログを改行して区分けするというやりかたも
ありだとは思いますが。
いろいろと模索中であります。
金云々にしてはすでに三十万近くかけて作らせてるものです。
私は多少のPerl/CGI知識を持っているのですが
運用に力をいれたいほうなので外注に頼ってるわけであります。
0441nobodyさん
2006/12/24(日) 14:36:15ID:???こんなこと言うのもなんだが、
「運用に力を入れたいから知識はあるけど外注」ってレベルじゃないだろ。
その程度なら素直に信頼できる実績があるとこに外注がいい。
0442nobodyさん
2006/12/24(日) 14:55:58ID:AWC9vzHTおかしくはないと思うんですが
まあ、すべてのソースをみてのことじゃないからわかりませんよね。
よく元ソースを解読してから出直します。
結果としてそのファイルのあるフォルダ名が$restitleにはいってしまうので
別の問題にも思われます。
ここまで考えて改造費出すのも個人的に馬鹿馬鹿しいので
自分なりに実験してみますわ。
御意見ありがとうございました。
0443nobodyさん
2006/12/24(日) 14:58:03ID:AWC9vzHTうるせえよ。
てめえに聞いてねえんだよ。
ガタガタ口はさむなクソが。
じゃあな。
0444nobodyさん
2006/12/24(日) 15:04:54ID:???哀れだがなにもしてやれん…
0445nobodyさん
2006/12/24(日) 15:14:21ID:???0446nobodyさん
2006/12/24(日) 16:56:38ID:???0447nobodyさん
2006/12/24(日) 17:10:57ID:AWC9vzHTただより高いものはない、なんて言うしな。
プログラミングは誰にこだわる理由はないし、
結果のでない親切より結果のでるお金だわな。
まあ、それはそれで駆け引きの技術だが。
てめえらもこんな腐れ掲示板で悪態奉仕活動してねえで
技術で金むしりとることに専念したほうがよくねえか?
俺が最初に頼んだ職人もそうだった。
あんまり調子こくんで他の外注にするつもりだが。
競争にさらされねえとそこらへんはわかんねえんだよな。
0448nobodyさん
2006/12/24(日) 17:12:56ID:???0449nobodyさん
2006/12/24(日) 17:14:29ID:AWC9vzHTその職人もこういう掲示板とかで聞いたり他のソースを拾ったりして
やっつけ仕事とかしてやがんの。
おまえらそういう連中にも利用されてるんだよ。
0450nobodyさん
2006/12/24(日) 17:21:57ID:AWC9vzHTそんで聞いてる連中が要領のいい継ぎはぎ職人のプロだったら皮肉で笑えるけどな(w
0451nobodyさん
2006/12/24(日) 17:24:12ID:???その解釈は正確にはそれはちょっと違います。他ならぬ貴方からの依頼だからこそ
出来合いのソースを拾ってきてやっつけ仕事で片付けているんです。
つまり貴方はその程度の顧客です^^
0452nobodyさん
2006/12/24(日) 17:28:48ID:???0453nobodyさん
2006/12/24(日) 17:29:35ID:AWC9vzHTフリーソフトの作者さんのサイトでねえ。
安い仕事だと思ったから。そこらへんまで譲歩したのだ。
無償のオープンソースを利用してるのはそういった要領のいいやつだ。
俺もそこらへんは共通の金銭の価値観なのでな。
0454nobodyさん
2006/12/24(日) 17:35:09ID:AWC9vzHT変数の名前だけ変えてフルスクラッチすればとか言ってやってな。
親切だろ。
まあ、というのも俺も金儲け目的のサイトをつくろうと思ってるから
投資は必要だしな。
0455nobodyさん
2006/12/24(日) 17:37:16ID:???> 変数の名前だけ変えてフルスクラッチすれば
> 変数の名前だけ変えてフルスクラッチすれば
(゚Д゚)…!?
0456nobodyさん
2006/12/24(日) 17:43:58ID:???0457nobodyさん
2006/12/24(日) 17:45:50ID:AWC9vzHT答えてる人間がどういう人間だかわからん。
ただよく無料で答えるなあとは思うわなあ。
0458nobodyさん
2006/12/24(日) 17:50:31ID:???> フリーソフトの作者さんのサイトでねえ。
> 安い仕事だと思ったから。そこらへんまで譲歩したのだ。
↓
> その職人もこういう掲示板とかで聞いたり他のソースを拾ったりして
> やっつけ仕事とかしてやがんの。
↓
> 俺が最初に頼んだ職人もそうだった。
> あんまり調子こくんで他の外注にするつもりだが。
凄い釣りだぜ…。
0459nobodyさん
2006/12/24(日) 17:51:40ID:AWC9vzHTいろいろ。
俺はねえ金を儲けたいのね。
ほんと正直な気持ち。
だから金使うのも筋だと思うわけ。
たとえ少額でも1円と無料には大きな開きがある。
君等もこんな腐れ掲示板はさっさと放棄して
私がこんどつくる掲示板を利用したほうがいいだろう。
0461nobodyさん
2006/12/24(日) 17:55:54ID:AWC9vzHTスロットマシーンのプログラ厶のようなものだ。
0462nobodyさん
2006/12/24(日) 17:59:18ID:???誰か3行くらいでまとめてくれない?
0463nobodyさん
2006/12/24(日) 18:00:29ID:AWC9vzHTどうも俺はナマケモノでねえ。
先伸ばし、先伸ばしで五年はたつ。
しかしシステムは確立したよ。
0466nobodyさん
2006/12/24(日) 18:08:53ID:AWC9vzHT以前、このスレッドであるメタキャラクタを
聞いたときはたまたまいい回答が帰ってきて
もうけものだったのだが
やはり無料には限界があるようだな。
無料の限界=2chの限界=匿名の君等の限界だのう。
0467nobodyさん
2006/12/24(日) 18:10:52ID:AWC9vzHT利用者から金とるってやつだろ。
あんなものダメに決まってるじゃあないか。
0468nobodyさん
2006/12/24(日) 18:13:51ID:???0469nobodyさん
2006/12/24(日) 18:14:43ID:AWC9vzHTPerlコーディングスレなのに私の妄想のはけぐちスレにして
なにか申し訳なくってきたねえ。
まあそれも2chだからしょうがないのう。
すっきりするまでつきあってほしい。
0471nobodyさん
2006/12/24(日) 18:17:28ID:AWC9vzHTなんかいい金になる情報なんかあるの?。
2chで金になる情報なんかあったためしがない。
0472nobodyさん
2006/12/24(日) 18:29:11ID:AWC9vzHTつうか今それは問い合わせ中なのでまた今度な。
まあ、そのときは自己解決しましただろうけど。
求めるととこはプラスの結果だけ。
そういうプラスの結果を出すシステムを作りたかったのだ。
なにか答える。なにか結果を出す。なにか教えてくれる。
俺は金を請求するし金は払う。
それでおしまいだな。
0473nobodyさん
2006/12/24(日) 18:30:56ID:AWC9vzHT失礼しました。
0477nobodyさん
2006/12/24(日) 18:41:03ID:???0478nobodyさん
2006/12/24(日) 18:47:14ID:???文字列fooのあとに、bar以外の文字列が来て、しかも最後までにbazが現れないという
条件にマッチする正規表現が書きたくて、下のようなのを書いてみたんだけど。
/foo(?:(?:(?!bar)).(?<!baz))+$/
さすがにアレなんで、ちょっとどうにかならないものかなと。複数のパターンに分割するのはなしで。
0479nobodyさん
2006/12/24(日) 19:01:58ID:???0480nobodyさん
2006/12/24(日) 19:06:21ID:???0481nobodyさん
2006/12/24(日) 19:08:59ID:???>>479 で正解が出ているけれど、実際問題、可能であれば分割した方が効率と可読性の両面から好ましい場合が多い気がするよ。
0482JAPU ◆lVJAPUTeX.
2006/12/24(日) 20:55:14ID:???my $x = $1;
$x =~ /\.(?:gif|png|jpg)$/? qq{<img src="$x" alt="">}: qq{<a href="$x">$x</a>}
}eg;'
正規表現部分は適当に置き換えて。
>>422
Location の中に全部入れれば?
ちなみに、mod_perlは必要な部分だけ分離 (別サーバにするかApache2個立ち上げるか) するのがお勧め。
■ このスレッドは過去ログ倉庫に格納されています