Perlコーディング初心者質問スレ Part 55
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/30(水) 11:34:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc11.2ch.net/test/read.cgi/php/1171102883/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0097nobodyさん
2007/06/12(火) 11:51:51ID:???俺は君の回答がさっぱりわからない。
cutしてからリンクタグだと、リンクの飛び先も…になるじゃない。
しかも>>93が言っている変換対象の変数にはURLがひとつというわけでもなさそうだし。
0098nobodyさん
2007/06/12(火) 12:40:01ID:???初心者にも程があるだろ
0099nobodyさん
2007/06/12(火) 12:43:17ID:???氏ね
$_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1 . '<a href="' . $2 . '">' . (length $2 > 30 ? substr($2, 0, 30) . '…' : $2 ) . '<\/a>'/egx;
0100nobodyさん
2007/06/12(火) 12:44:13ID:???0102nobodyさん
2007/06/12(火) 13:12:38ID:???use String::Multibyte;
my $mcbs = String::Multibyte->new('shiftjis');
(my $str = <<"EOF") =~ tr/\r\n//d;
前走の大敗がよく分からないが、引き続き毛ヅヤや馬体の
張り等は際立って良く、見える。
EOF
my $length = 6;
my @array;
my @str = $mcbs->strsplit('', $str);
while(@str){
foreach(0..$length-1){
unshift(@{$array[$_]}, shift(@str) || ' ');
}
unshift(@{$array[$length]}, ($mcbs->strspn($str[0], '、。') ? shift(@str) : ' '));
}
foreach(@array){
print @{$_}, "\n";
}
# つか、乗り遅れた感。
>>92
一度、MIME::LiteやMIME::toolsとかモジュール使ってみて比較してみれば。
0103nobodyさん
2007/06/12(火) 13:25:10ID:???ふつーに変数2つとか配列とかハッシュとかに突っ込んで片方cutすりゃいいだけだろ
ソースもクソもねえよ
0104nobodyさん
2007/06/12(火) 13:25:13ID:???一度にやらない方が見通しがよいんじゃないか? 前半はJcodeのjfoldとか
使えばいいわけだし。
0105nobodyさん
2007/06/12(火) 13:43:40ID:???文字の切り分けは、どこかで一文字単位にしないといけないので、一度にsplitした方がいいように思う。
my @str = $mcbs->strsplit('', $str);
my @array;
# 一定の長さで区切って配列を作る
while(@str){
my $l = [map{shift(@str) || ' '}(1..$length)];
push(@{$l}, ($mcbs->strspn($str[0], '、。') ? shift(@str) : ' '));
push(@array, $l);
}
# 縦横を変える
my @array2;
for my $i (0..$length){
push(@array2, [reverse map{$array[$_]->[$i]}(0..$#array)]);
}
foreach(@array2){
print @{$_}, "\n";
}
0107nobodyさん
2007/06/12(火) 13:51:06ID:???0108nobodyさん
2007/06/12(火) 13:54:55ID:???0110nobodyさん
2007/06/13(水) 07:53:10ID:???0111nobodyさん
2007/06/13(水) 09:14:14ID:???0112nobodyさん
2007/06/13(水) 18:24:42ID:???文字列だと1000文字まで、数値だと100桁まで...等
検索してもそれらしい情報が見つかりません…。
0113nobodyさん
2007/06/13(水) 18:59:02ID:???0114nobodyさん
2007/06/14(木) 19:22:36ID:???一定文字数を越えると文字化けしてしまう。。
誰かこの文字化けが何系の文字コードか分かる方います??
$"$($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($3$3$G2~9T$*$*$*$*$*$*$*$*$*$*$*$*$
0115nobodyさん
2007/06/14(木) 19:39:52ID:???そんな風に出るわけねーと思うけど
0116nobodyさん
2007/06/14(木) 19:52:43ID:???ヘッダに
Content-Transfer-Encoding: 7bit
を付加してみましたが結果変わらず。。
途中までは普通に文字が表示されてるんだけど途中から急に上みたいな文字列になってしまう。
メール分を生成してるところで本文が入っている変数をDumpしてみたけど
そこは特に文字化けも無く全ての文字が正常に格納されている状態。。。
メールのヘッダとかその辺の設定しか考えられる余地が無いのだけど、うーん。。。
0117nobodyさん
2007/06/14(木) 19:55:49ID:???見るからにJISのひらがなあたりだろ。EUCのMSB落ちかもしれない。
とりあえず頭にESC-$-B補ってnkfに食わせたら
あえええええええええええええええええええええええええええええええええええここで改行おおおおおおおおおおおお
と出ました。
0118nobodyさん
2007/06/14(木) 20:01:39ID:???>頭にESC-$-B補ってnkfに食わせたら
この部分がさっぱりですがググリながら実装方法を調べてます。
感動しましたw
0119nobodyさん
2007/06/14(木) 20:07:49ID:???0120nobodyさん
2007/06/14(木) 20:10:02ID:???0121nobodyさん
2007/06/14(木) 20:11:35ID:???わらたw
0122nobodyさん
2007/06/15(金) 09:18:42ID:???0123nobodyさん
2007/06/15(金) 10:00:59ID:???$content = <FH>;
$content or die;
close(FH);
みたいに、closeする前に終了する(可能性がある)のはあまりよろしくないでしょうか?
0124nobodyさん
2007/06/15(金) 10:09:53ID:???0126nobodyさん
2007/06/15(金) 23:57:47ID:???0127nobodyさん
2007/06/16(土) 02:33:58ID:???0128nobodyさん
2007/06/16(土) 03:01:26ID:???0129nobodyさん
2007/06/16(土) 03:12:20ID:???0131nobodyさん
2007/06/16(土) 04:25:42ID:???or のあとにブロック書ける?
0132nobodyさん
2007/06/16(土) 05:43:36ID:???0133nobodyさん
2007/06/16(土) 05:46:41ID:???こんな高い位置にブロック書くの?
ちょっと書いてみて。
sub error
{
my($str) = @_;
print $str;
exit;
}
sub main
{
open(FILE, "< uso.txt") or &error("そんなファイルないよ");
my @lines = <FILE>;
close(FILE);
$#lines < 0 and &error("中身ないよ");
# 以下略
}
はースッキリ快適。
0134nobodyさん
2007/06/16(土) 09:51:02ID:???「 can か cannot」かって聞かれて(と判断して) can と答えたんじゃね?
実際やるか とは別でしょ。
0136nobodyさん
2007/06/16(土) 12:43:25ID:???0137nobodyさん
2007/06/16(土) 13:49:35ID:???この板らしいっちゃらしいな
0138nobodyさん
2007/06/16(土) 17:06:40ID:???0139nobodyさん
2007/06/16(土) 17:39:20ID:???長らくの御愛顧ありがとうございました。
ttp://www.ayni.com/perldoc/
--完--
0140nobodyさん
2007/06/16(土) 17:51:06ID:???あ、ム板の方は高レベルなので残して置いて下さいね^^
0141nobodyさん
2007/06/16(土) 17:53:36ID:???どこにでも5.6以上のPerlが置いてあるなんて考えるのは甘い。
0142nobodyさん
2007/06/16(土) 18:25:16ID:???0143nobodyさん
2007/06/16(土) 18:25:26ID:???0144nobodyさん
2007/06/16(土) 18:36:36ID:???前スレの終わり辺りから何かあると盛んに出てくるけど
0145nobodyさん
2007/06/16(土) 18:50:25ID:???ttp://pc11.2ch.net/test/read.cgi/tech/1173880452/
2chか。レベル高いってネタだよね?
105 デフォルトの名無しさん [sage] Date:2007/03/22(木) 22:45:19 ID: Be:
HTTP 500 - 内部サーバー エラー です
106 デフォルトの名無しさん [sage] Date:2007/03/22(木) 22:48:42 ID: Be:
なんでブラウザにエラーが出るわけ?
↑
いやApacheの設定なんですけどね…
前スレの終わりでuse Benchmark;使ったら全員で猿のようにベンチマーク。
未だに。2chばかり見てるとますますバカになるよ。
0148nobodyさん
2007/06/16(土) 21:08:54ID:???0149nobodyさん
2007/06/17(日) 00:01:52ID:???Win (no cygwin) + lighttpd + FastCGIでPerl 5.8を動かしたいのですが、ppmで引っかかりませんでした
0150nobodyさん
2007/06/17(日) 10:35:59ID:???Win32 PPM packages for "ExtUtils-Embed"
trouchelle.com Perl 5.8 repository [ v 1.14 ]
0151nobodyさん
2007/06/18(月) 00:25:21ID:k4WptDOcどうしたらよいでしょうか?
MovableTypeやWordPressのメール投稿のようなイメージです。
mail@hoge.comに送信して、www.hoge.comのCGIで
その投稿内容を読むといった感じです。
PerlでPOPクライアントを書いて、内容を取得して、
それをcronで回すくらいしか思いつかないのですが、
cronを回せるレンタルサーバも少ないですし、
回せても1時間毎くらいがせいぜいだったりしますし。
0152nobodyさん
2007/06/18(月) 00:46:35ID:???0153nobodyさん
2007/06/18(月) 05:55:05ID:???152 みたいなバカは死ぬとよい。
0156nobodyさん
2007/06/18(月) 06:45:55ID:???0157154
2007/06/18(月) 07:36:43ID:???まぁ、そうくるだろうと思ったよ。マジレスすると152は漏れじゃない。
信じなくても良いけど、>>153を援護すればする程、>>151の質問に
答える奴はいなくなるよ?(w
0158nobodyさん
2007/06/18(月) 07:57:34ID:???0159nobodyさん
2007/06/18(月) 08:46:27ID:???0160nobodyさん
2007/06/18(月) 09:05:53ID:???答える能力はないが煽っていますということ?
0161nobodyさん
2007/06/18(月) 09:30:18ID:???他のメールサーバーでも同じことはできるかと思う
0162nobodyさん
2007/06/18(月) 13:27:43ID:???0163nobodyさん
2007/06/18(月) 13:29:32ID:???それがどうしたの?
0164nobodyさん
2007/06/18(月) 13:59:19ID:???それがどうしたの、と言われましても…
ここはPerl"コーディング"質問スレな訳ですし。
ロジック的なことを聞きたいのならば、
この板にも適切なスレッドがありますし、
更に深い内容ならUNIX板とかに行けば良いでしょう。
しかし、そのロジックを理解した上でのコーディングに関する
質問はスレ違いではありませんが、レベル的に
"自分で考えれば分かる"程度なので、処理をアシストする
モジュールくらいしか案内出来ないでしょう。
少なくとも 151 の書き込みを読む限りでは。
0166nobodyさん
2007/06/18(月) 14:47:39ID:???0168nobodyさん
2007/06/18(月) 15:52:52ID:???0169nobodyさん
2007/06/18(月) 16:14:07ID:???0170nobodyさん
2007/06/18(月) 16:21:21ID:???システム構成によって方法が違うから。
禁止されてるかも知れないし、maildropが使われてるかも知れない。
ここからPerlコーディングについての質問。
0171nobodyさん
2007/06/18(月) 18:46:23ID:???>>153を援護する奴が>>151(質問者)だろ?
大体、質問した奴がこの流れで16時間も静観してる訳無いだろ?
しかも口調が一緒だし(w
>>151 = >>153 = >>155 = >>160 = >>163
質問に答えてもらおうと必死。
0174nobodyさん
2007/06/18(月) 19:39:27ID:???while( $intAnchor < 1001 ) {
>>172 += $intAnchor;
$intAnchor++;
}
0175nobodyさん
2007/06/18(月) 19:57:19ID:???0176nobodyさん
2007/06/18(月) 20:07:15ID:???>>152 = >>154 = >>157 = >>165 = >>171もなんか必死すぎて嫌いだ
お前ら皆どっかいっちゃえ!!!11
0177nobodyさん
2007/06/18(月) 21:04:16ID:???CGIで読むってことは、CGIがメーラー(POPクライアント)の役割をするわけだから、
CGI起動時にメールボックスから届いたメールを読み出せばいいのでは。
Net::POP3でも使ったらどうですか? 読み出したらサーバから削除するなどの
処理はすべて自分で書く必要があります。GUIのないメーラーを作るようなもんです。
…ていうことではなくて、届いたタイミングで、届いたメールデータを処理したい
ってことかしら。であれば、perlというよりは、.forwardまたはdot-qmailファイル
にでもプログラムにパイプで渡す設定をしておけば、プログラムから標準入力
を読んで処理すれば済む。MIME::Parserを使うと便利。
まずはコードを書いてみることです。
0178nobodyさん
2007/06/18(月) 21:31:22ID:???CGIで、場合によってLocationヘッダを返した場合、
ユーザからみると、即座にページを飛ばされるんですが、
そのCGIはLocationヘッダを返したあともexitしない限り、
以後の処理をし続けるんでしょうか。
0179nobodyさん
2007/06/18(月) 21:41:57ID:???use strict;
print "Location: http://www.yahoo.co.jp/\n\n";
sleep(10);
exit;
0180nobodyさん
2007/06/18(月) 21:45:01ID:???飛ばした後にファイル出力できたので、ちゃんと最後まで処理しますね。
てことは飛ばした場合もちゃんとexitしたほうが無駄が少ないということ
ですよね??
0181nobodyさん
2007/06/18(月) 21:57:32ID:???0182nobodyさん
2007/06/18(月) 22:27:24ID:???例えば、通常、ウェブページをきちんと出力するルーチンの途中で例外的に
飛ばした場合の、その後のページ出力処理、とか。
0183nobodyさん
2007/06/18(月) 23:07:27ID:???飛ばないんですね。面目ない。
0184nobodyさん
2007/06/18(月) 23:15:58ID:???0185151
2007/06/18(月) 23:52:23ID:k4WptDOc普通に帰るのが遅い人間&出先から書きにくい状態でした。
意図としては>>177さんが書いてくださったような、
「届いたタイミングで、届いたメールデータを処理したい」、
つまり、メールを受けたことをトリガとしてバックエンドの処理を動かすという
というものでした。
例えば、メールで「1+1」と送ると、バックエンドで計算処理をして、
答えを「2」で返す、というような。
ご指摘いただいたように、Perlコーディングという内容ではないので、
いただいたお答えを元に、うちの環境で確かめることにしてみます。
ほんとうにありがとうございました。
0186nobodyさん
2007/06/20(水) 13:54:26ID:???kani
kanimiso@
kanikama
上のような文字列(@部分がいろいろ変わる)からmiso@を抜き出したいんだけど
s/.*kani(.*)\n/$1/;
みたいにするとmiso@\nkanikama\nまでが取れてしまいます。
0187nobodyさん
2007/06/20(水) 14:25:25ID:???0188nobodyさん
2007/06/20(水) 14:53:02ID:???0189nobodyさん
2007/06/20(水) 18:37:42ID:???<html>
<head></head>
<body>
</body>
</html>
になってるファイルに<p>hogehoge</p>を書き込んで
<html>
<head></head>
<body>
<p>hogehoge</p>
</body>
</html>
にしたいのですがどうしたらよいでしょうか。
0191nobodyさん
2007/06/20(水) 18:40:41ID:???0193nobodyさん
2007/06/20(水) 18:43:32ID:???<body>〜</body>に<p>hogehoge</p>以外に既に何か文字が入っていても
それを消さずにその下に追記するようにしたいのです。
<body>
<p>fugafuga</p>
</body>
を
<body>
<p>fugafuga</p>
<p>hogehoge</p>
</body>
こんな感じです
0194nobodyさん
2007/06/20(水) 19:04:32ID:???0195nobodyさん
2007/06/20(水) 20:24:57ID:???my $html = <FILE>;
close(FILE);
$html =~ /<\/body>/;
my $top = $`;
my $bottom = $';
$top .= "<p>追加する文字列</p>\n";
$top .= $bottom;
open(FILE,">index.html");
print <FILE> $top;
close(FILE);
exit;
This is not confident.
Please point it out when the mistake is found.
0196nobodyさん
2007/06/20(水) 21:07:55ID:???■ このスレッドは過去ログ倉庫に格納されています