Perlコーディング初心者質問スレ Part 63

このエントリーをはてなブックマークに追加
1nobodyさん
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >>2 以降

前スレ http://hibari.2ch.net/test/read.cgi/php/1295170172/
2nobodyさん:2011/09/09(金) 18:12:10.08 ID:???
[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/

[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://ascii.asciimw.jp/books/books/detail/4-7561-3057-7.shtml
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/

[オンラインマニュアル]
最新のドキュメント: ttp://perldoc.perl.org/
perldoc きまぐれ訳: ttp://fleur.hio.jp/perldoc/
perldoc.jp: ttp://perldoc.jp/

[モジュール]
CPAN: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/

[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/

[Perl5.8Unicodeメモ]
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
3nobodyさん:2011/09/09(金) 19:26:14.96 ID:???
>>1
4nobodyさん:2011/09/12(月) 12:01:09.82 ID:???
[
{
key1 => 123,
key2 => 456,
},
{
key1 => 324,
key2 => 135,
},
{
key1 => 123,
key2 => 135,
},
続く...
]
こんな感じの配列をソートするにはどういう方法が最適でしょうか?
key1で昇順にソートして、key1が同じ場合はkey2で降順にソートします。
key2も同じ場合はどちらが先になってもかまいません。
5nobodyさん:2011/09/12(月) 12:40:13.04 ID:???
sort { $a->{key1} <=> $b->{key1} || $b->{key2} <=> $a->{key2} } @$aref
6nobodyさん:2011/09/12(月) 12:51:03.86 ID:???
ありがとうございます。||こんなのつかえたんですね。
7Perl忍者:2011/09/12(月) 18:53:28.33 ID:???
>>5
こいつは上忍級
8nobodyさん:2011/09/12(月) 19:06:55.08 ID:???
どあほ、perldoc -f sort に書いてある程度の
基礎の基礎じゃねーか。
9nobodyさん:2011/09/12(月) 21:12:13.88 ID:sQBBrYdo
全スレでファイルのロックの質問があったけど
読み込んで表示のみ=ロックの必要はない

読み込んだデータを加工して書き込む場合=

ファイルロック1
ファイル読み込み
データ加工
ファイル書き込み
ファイルロック1の解除

というようにするが正解だろ

読み込んで表示のみにロックする必要あったら
普通のHTMLファイルだってロックしなきゃならんだろ
10nobodyさん:2011/09/12(月) 21:20:12.75 ID:???
読み込んでる途中にファイルが書き換えられても困らないんならする必要はないよ





flockとはなんだったのか
11nobodyさん:2011/09/12(月) 21:28:34.15 ID:???
>>9-10
>>1
【総合】 Webprog板質問雑談スレッド 1
http://hibari.2ch.net/test/read.cgi/php/1131016915/
12nobodyさん:2011/09/12(月) 21:37:37.12 ID:???
余りに遅レスって批判は出来るにせよ、質問に答えてるじゃん
13nobodyさん:2011/09/15(木) 00:40:46.86 ID:???
データベースやってれば
書き込みロックと読み込みロックが
あることぐらい知ってるだろ。
14nobodyさん:2011/09/15(木) 12:48:03.24 ID:???
フォームのPOST情報を送ったあとのページを取得し、HTML::TreeBuilderあたりで
情報を取得しようとしています。
下記だと@はヘッダ?の情報が出てきますが、Aは何も出てきません。
どこか間違えているのでしょうか?

my $url = 'http://example.com';

my $formdata = ['id' => '***', 'pass' => '***'];
my $request = POST($url, $formdata);
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);

print $res->as_string; #@
print $res->content; #A

#my $tree = HTML::TreeBuilder->new;
#$tree->parse($res->content);
#$tree->eof();
15nobodyさん:2011/09/15(木) 13:12:03.71 ID:???
as_string()はHTTP::Responseの全文、つまりheader+body
content()はbodyを返す

example.comを見るならば、Content-Length: 0なんで当然content()は空になる
1614:2011/09/15(木) 13:39:08.06 ID:???
>>15
example.comは仮で書いただけなんですが、そのことを書いていませんでした。
失礼しました。

コード的には間違っていないようなので、別の要因を探ってみます。
ありがとうございました。
17nobodyさん:2011/09/18(日) 03:39:18.09 ID:bhwW9jAX
すいません、質問です

foreach $data (@isbn){
if(length($data) != 13){
$error_message = "length error";
break;
}
if($data =~ /[^0-9]/){
$error_message = "charactor error";
break;
}
}

$dataに入っている数字が13文字以外の時と、0-9の数字以外の時に
#error_messageにエラーを書き込んでforeachループを抜けるようにしたいのですが、なぜか13文字&数字だけの時にも両ifともtrueになってしまいます。

先に述べている動作をさせたい時の条件の書き方を教えていただけないでしょうか?
18nobodyさん:2011/09/18(日) 03:40:47.27 ID:bhwW9jAX
foreach $data (@isbn){
    if(length($data) != 13){
        $error_message = "length error";
        break;
    }
    if($data =~ /[^0-9]/){
        $error_message = "charactor error";
        break;
    }
}

見づらいだろうので修正
19nobodyさん:2011/09/18(日) 04:16:55.44 ID:???
例えばどんな@isbn?
20nobodyさん:2011/09/18(日) 04:18:05.84 ID:bhwW9jAX
ほんとにすいません、フォームから送ったデータに改行コードが入ってたせいでおかしくなってたようです
失礼しました・・・。
21nobodyさん:2011/09/18(日) 04:20:28.78 ID:???
my $error_message;
for my $data (@isbn){
if (length $data != 13){
$error_message = "length error";
last;
}
if ($data !~ /^\d+$/){
$error_message = "charactor error";
last;
}
}



次から >>1 には「use strict; use warnings; を必ず使う事」とでも書いとけ。
22nobodyさん:2011/09/18(日) 06:57:46.48 ID:???
break は last の誤用だと思われるのだが・・・

ってことで break が自作の関数だったりしなくて、ループから抜けることを意図としてるなら
last としませう。
23nobodyさん:2011/09/18(日) 07:08:32.40 ID:???
% perldoc -f break

break Break out of a "given()" block.

This keyword is enabled by the "switch" feature: see feature
for more information. Alternately, include a "use v5.10" or
later to the current scope.
24nobodyさん:2011/09/18(日) 08:49:12.63 ID:???
>>22
Perl以外のほとんどの言語はcontinueやbreakだから
他の言語を先に知っててPerlにあまり馴染みがないと
最初のうちは間違っちゃったりするよね

Perl / C,JavaScript,PHP,Ruby,Python,etc.
next / continue
last / break
25デフォルトの名無しさん:2011/09/18(日) 09:43:41.96 ID:???
単語の意味を考えると、Perl で採用した next, last の
よさがじわじわと分かる。continue, break だとあいまい
な感じがして、(単語からは)何をしてくれるのか想像しに
くい。
26nobodyさん:2011/09/18(日) 10:47:25.20 ID:???
printlnとか書いてて発狂しないのかな、あっちの言語圏は。
27nobodyさん:2011/09/18(日) 12:27:04.36 ID:???
printlnってperlでいえばsayだよな。
28nobodyさん:2011/09/18(日) 12:29:59.21 ID:???
あっちの言語圏は変数名と被ると駄目なんだっけ?
29nobodyさん:2011/09/18(日) 12:36:42.87 ID:???
>>28
関数名は動詞、変数名は名詞にしましょうねw
30nobodyさん:2011/09/18(日) 12:47:06.08 ID:???
形容詞は?
31nobodyさん:2011/09/18(日) 15:24:44.69 ID:???
引数
32nobodyさん:2011/09/18(日) 18:47:48.04 ID:???
はじめまして
現在SQLを勉強するためにPERLを使いMYSQLにつなぐ練習をしています

DBIを使用してデータベースへの接続およびテーブルを作成することはできました。
このデータを更新する為にユーザーから ユーザーIDおよびパスワード データを新規ユーザー登録フォームなどから受け取るにはどうしたらいいのか、
またデータベースから受け取ったデータから全体のソートをかけたい全表示したい場合 どうしたらいいのかわからず困っています

かってですがURLのところに?userid=foo&password=fooのようにはできるだけ表示しない方向でよろしくお願いします
33nobodyさん:2011/09/18(日) 20:09:22.61 ID:???
34nobodyさん:2011/09/18(日) 20:29:52.84 ID:???
>>33
すみません・・・リンクの中を見るとフォームのデータはこれでできそうですね
テンプレを読まず・・・申し訳ない
35nobodyさん:2011/09/19(月) 03:55:08.18 ID:tSer8QMI
すみません、質問です

XML::Simpleを使ってXMLを解析しているのですが、 <Creator Role="イラスト">名前</Creator> 
のような属性(エレメント?)付きの値を取り出すにはどうすればいいのでしょうか?

普通に~~~->{Creator}->{Role}とすると属性の中身?の"イラスト"は取り出せるのですがその先が分かりません・・・。
もしかして::Simpleでは取り出せないのでしょうか?
36nobodyさん:2011/09/19(月) 05:24:45.14 ID:tSer8QMI
失礼、解決しました

~~~{creator}->{content}で中身を取り出すことが出来ました
37nobodyさん:2011/09/19(月) 07:45:02.88 ID:tSer8QMI
再度失礼します

現在Padreで開発しているのですが、なぜかPadre上ではうまく動いているのですが、
サーバーにUPすると500エラーを吐いてしまいます。

確認してみた所、my $ua = LWP::UserAgent->new();が原因でエラーを吐いているようで、
ライブラリ自体はちゃんと所定の場所にあり、パーミッションも他のライブラリと同じ設(705)で問題は無いはず。
そもそも頭のuse LWP::UserAgent;ではエラー吐いてないのでライブラリ自体は読み込めてるようです。

エラーの無い状態で上記のmy $ua = LWP::UserAgent->new();を追記した時点でエラーになるのですが、
これってただnewしただけでも他の物に影響を与える物なのでしょうか?
38nobodyさん:2011/09/19(月) 09:21:31.99 ID:???
39nobodyさん:2011/09/19(月) 13:08:32.75 ID:tSer8QMI
>>38
すいません、そこは既にチェックした後だったのですが一向に解決していません
LWP::UserAgentは止めて、LWP::Simpleを使おうとするも今度はuseした時点でエラー・・・。

use LWP::Simple (); にして、後でgetすればエラーでないというのも見かけましたが関係なくエラーが。
40nobodyさん:2011/09/19(月) 13:24:50.46 ID:???
エラーの内容を画面に表示すればわかるよ。
41nobodyさん:2011/09/19(月) 14:01:11.27 ID:tSer8QMI
すいません、use worningsだけじゃエラーが出なかったんですね・・・

Can't locate HTTP/Config.pm in @INC
エラー先を見たらUserAgent.pm内の require HTTP::Config;  これがエラーの原因のようです
42nobodyさん:2011/09/19(月) 16:11:08.06 ID:tSer8QMI
まさかと思ってHTTP::ConfigをDLしてきてユーザー固有のフォルダに入れてみたら動きました
LWP:;UserAgent自体が使うファイルも色々CPANから拾ってきておかなきゃだめだったようです・・・というか外部ソース依存多すぎる

そして私の場合、レンタルスペースを利用している為、XML::Parserのコンパイルとか出来ないんですがこの場合どうしたらいいんでしょうか・・・?
43nobodyさん:2011/09/19(月) 16:24:36.58 ID:???
>>42
> この場合どうしたらいいんでしょうか・・・?
・管理者にインストールしてもらう
・設置先と同じ環境を手元にも構築してコンパイルしたものを持っていく
・設置先で利用できる形にまとめてくれている人を探して一式もらう
・Pure Perl なモジュールのみを使うよう書き換える
・サーバを替える

いずれにしてもスレ違い。
44nobodyさん:2011/09/19(月) 16:30:26.87 ID:???
pure perlな実装で代用すれば良いんじゃね。
45nobodyさん:2011/09/19(月) 18:25:25.97 ID:???
コンパイルもできるレンサバに替えるのがいいとおもふ。

#そして次は「すいません、できないと思ってたけどコンパイルできました」とか書き込まれそうな予感
46nobodyさん:2011/09/19(月) 20:13:19.63 ID:tSer8QMI
すいません、できないと思ったけどコンパイル・・・という冗談は置いといて、
結局 XML::UserAgent も XML::Simple も使わずに済むPurePerlな XML::TreePP を使う事にしました。

こういう放置は本当はあまりよくないんでしょうけど、とりあえず完成させたいもので、とりあえず後で再考する事に。
失礼しました。
47nobodyさん:2011/09/19(月) 20:32:26.25 ID:???
>>46
> こういう放置は本当はあまりよくないんでしょうけど、とりあえず完成させたいもので、とりあえず後で再考する事に。

いえいえ、良い選択だと思います。ご健闘を。
48nobodyさん:2011/09/19(月) 23:13:46.60 ID:???
コンパイルができないと諦めるもんじゃない。
たとえshellが使えなくともtelnet.cgiみたいなのを使って
コンパイルすればいいのだ。

サーバーの環境を特定し、それに近い環境で
自宅コンパイルしたものをアップする方法もある。
諦める必要はないぞ!
49nobodyさん:2011/09/20(火) 00:23:18.16 ID:VRYqCB7t
初心者です。2ちゃんの統計を出力するスクリプトを作りたくて、色んな場所からつぎはぎして作っていたのですが、問題がでて進めなくなりました。
板の中のスレの内容を表示しようというところまできたんですが、カウンターの i が動いていないような感じで、同じスレ(dat)が何回も表示されてしまいます。
ほかにもツッコミどころがあったら教えてください。
ソースは次のレスです。
50nobodyさん:2011/09/20(火) 00:24:28.62 ID:VRYqCB7t
全部は入らないので関わってると思うところだけ抜きました。

use LWP::UserAgent;
use HTTP::Request::Common;

$url = "http://hidar.2ch.net/news4vip/subject.txt";
$durl = "http://hidari.2ch.net/news4vip/dat/";

&getData($url);

$threadlist = $response->content;

while($threadlist =~ m|\n(.*?)\.dat<>|g){
        push(@dat, $1);
        }

for ($i=0; $i<=$#dat; $i++){
        $url = $durl . $dat[i] . ".dat";
        &getData($url);
        $content .= $response->content . "\n";
}

print $content;

sub getData
{
        $ua = LWP::UserAgent->new;
        $ua->agent('');
        $request = GET($_[0]);
        $response = $ua->request($request);
}
51nobodyさん:2011/09/20(火) 00:41:47.24 ID:VRYqCB7t
ごめんなさい、>>50です。
$url = "http://hidar.2ch.net/news4vip/subject.txt";
$durl = "http://hidari.2ch.net/news4vip/dat/";

はそれぞれ

$url = "http://hibari.2ch.net/news4vip/subject.txt";
$durl = "http://hibari.2ch.net/news4vip/dat/";

でした。別なURLでテストしてたのをごまかしたので、URLが間違っていたせいじゃないです。
ていうかdatディレクトリがそのまま見られるみたいだからそっちから抽出したほうがよかったかな・・・
52nobodyさん:2011/09/20(火) 00:41:59.51 ID:???
>>50
コードはともかく、とりあえずiはミスタイプで正しくは$iだね
53nobodyさん:2011/09/20(火) 00:54:00.21 ID:VRYqCB7t
>>52
できました!
ありがとうございます!!!
54nobodyさん:2011/09/20(火) 02:27:48.40 ID:???
use strict;
use warnings;
この2つは必須!
55nobodyさん:2011/09/20(火) 21:27:29.45 ID:P4zYemZJ
他のスレからこちらに誘導していただきましたのでここでも質問させていただきます。

初心者なのですが、どなたか教えてください。
サーバーに最新のapache(onWindowsXP)をインストールし、Activeperl(最新版)
によるcgiで、Win32::OLEをつかって、
サーバー側でAccess起動→マクロを走らせる→Access閉じる
を行いたいのですが、上手くいきません。
同じPERLソースで、AN HTTPD だと上手くいくので、apacheの設定の問題だと思うのですが、
どこをどう設定するのかが分かりません。

56nobodyさん:2011/09/20(火) 21:29:54.54 ID:P4zYemZJ
つづきです。すみません。

ちなみにソースは
# Accesオブジェクトを生成、起動
my $access = CreateObject Win32::OLE 'Access.Application' || die "Cannot create Access object\n$!\n";
my $mdb = 'C:/hoge.mdb';
$access -> {'Visible'} = 1;
$access -> OpenCurrentDatabase($mdb);
$access -> DoCmd -> RunMacro('hoge');
$access-> quit();
undef $access;

です。

57nobodyさん:2011/09/20(火) 21:30:56.13 ID:???
5855:2011/09/20(火) 21:33:07.43 ID:P4zYemZJ
つづきです。最後です。すみません。

現象としては、ログにもエラーはなく、サーバー側でタスクマネージャで確認すると
Accessが起動していることまでは確認できるのですが、そのまま止まってしまいます。
タスクマネージャーからAccessを強制終了すると、それ以後のperlスクリプトが処理されるようです。
どなたか同じようなご経験をお持ちの方はおられませんでしょうか。

宜しくお願い致します。
59nobodyさん:2011/09/20(火) 21:57:09.80 ID:???
>>56
my $access = CreateObject Win32::OLE 'Access.Application' || die "Cannot create Access object\n$!\n";

my $access = Win32::OLE->CreateObject('Access.Application' || die "Cannot create Access object\n$!\n");
と等価なので CreateObject() が偽を返しても die しない。

http://perldoc.jp/docs/perl/5.14.1/perlop.pod#Operator32Precedence32and32Associativity

>>58
「それ以後」がどのステップを指していて処理自体は期待通りに終わっているのかどうか不明なので
同じ症状かは分からんが、「perl Win32::OLE access」でググれば

http://www.kaimei.org/read/internal/perl_w32
> 私が Win32::OLE から Excel へアクセスするプログラムを書いてみたところ、
> Perl スクリプトからだと問題ないのに CGI からこれを呼び出すと失敗するケースがあった。
> きちんとした原因まで把握できていないのだが、少なくともオープンする Excel ファイルのパスは
> / ではなく \ で区切らないとアプリケーション・オブジェクトの取得に失敗するようである。

という話が出てくる。
60nobodyさん:2011/09/21(水) 12:11:47.99 ID:???
PSGI に対応した WAF では何が使い易いのでしょうか?
それぞれの WAF の特色とか違いとかが分かるサイトとかあるのでしょうか?
ご教示いただければと思います。
61nobodyさん:2011/09/21(水) 15:19:36.21 ID:???
スレッドごとにファイルがあって
それをまとめるスレッドリストファイルがある場合のロックについて

ファイルロック1
スレッドNファイルへの書き込み
スレッドリストファイルへの書き込み
ファイルロック1の解除

というようにしなければならないので
例えばスレッド1にだれかが書き込んでいる最中は他スレッドでも書き込みができない
ということになる。
ということで間違いないんですか?

それとスレッドを誰かが見るだけの場合でも

ファイルロック1
スレッドNファイルの読み込み
スレッドリストファイルの読み込み
ファイルロック1の解除
としなければならないので

誰かが任意のスレッドを見ている間はどこのスレッドにも書き込めない

ということでいいんでしょうか?
そうするとロックかかりまくりじゃないんですか?
62nobodyさん:2011/09/21(水) 15:57:23.72 ID:???
それぞれのファイルに対してロックすればいいだろ
63nobodyさん:2011/09/21(水) 16:36:39.63 ID:???
>>62
それぞれのファイルにロックすると
スレッドNファイルには書き込まれて
スレッドリストファイルにロックがかかるという場合も考えられる
そうするとデータの連動がずれる
64nobodyさん:2011/09/21(水) 16:43:12.02 ID:???
>>61
マルチスレッドプログラミング相談室 その8
http://hibari.2ch.net/test/read.cgi/tech/1253521167/
65nobodyさん:2011/09/21(水) 19:47:38.85 ID:???
>>64
スレッドってそのスレッドじゃないと思うんだw
66nobodyさん:2011/09/21(水) 20:45:57.38 ID:???
>>61
ロックかかりまくりとはいうけど
実際は各リクエストがケンカしないように順番に処理されていくわけだから特に問題はないだろ。
67nobodyさん:2011/09/21(水) 21:52:54.67 ID:???
DBMSみたいに、まとめ役のプロセスが1つだけ起動して、もちろん複数起動しないようにして、
そいつが全部取り仕切るように動かせばいいんだ。疑似マルチタスクみたいに。
68nobodyさん:2011/09/22(木) 00:58:45.67 ID:???
ロックには排他ロックと共有ロックがあってだな
・・という話ではない、これ?
69nobodyさん:2011/09/22(木) 01:17:49.95 ID:???
シェケナベイベー
70nobodyさん:2011/09/22(木) 01:23:50.84 ID:???
>>68
この件は全部排他
横からだけど>>61の解答は気になる
71nobodyさん:2011/09/22(木) 12:59:33.86 ID:nJD1QeKS
教えてください
Perlで2chの特定のキーワードのスレを自動取得するCGIを改造したいのですが、

#板名「@BoadName」にある、スレッド名に「$KeyWord」を含む板の一覧を表示する。
$BoardName[0] = "大規模MMO";
$BoardName[1] = "ネトゲサロン";
$BoardName[2] = "ネットwatch";
$Keyword = "●○";

この条件のところで、大規模MMO板だけでなく、例えば
ニュー速等複数の板を指定するにはどういう風にコードを書き換えれば良いでしょうか?
なるべく簡単な方法を教えてください。

スクリプト
http://aceof.s57.xrea.com/?p=sp





72nobodyさん:2011/09/22(木) 13:11:19.13 ID:???
>>71
正規表現を使えるようにすればいいんじゃないの。
7371:2011/09/22(木) 13:39:16.30 ID:nJD1QeKS
>>72
…?どうやるのでしょうか?
COBOLは昔習いましたが…
条件のところの
$BoardName[0] = "大規模MMO"; を
A(大規模MMO) AND B(ニュー速) のような条件にしたいのですが、
parlでの表記が分かりません。
コードを教えてください。



7471:2011/09/22(木) 13:54:59.74 ID:nJD1QeKS
例えば

$BoardName[0] = "大規模MMO" AND "涙目ニュース";

ではエラーになりますよね??

75nobodyさん:2011/09/22(木) 14:45:57.55 ID:???
$BoardName[0] = "大規模MMO";
$BoardName[1] = "ネトゲサロン";
$BoardName[2] = "ネットwatch";

$BoardName[3] = "ニュース速報";
$BoardName[4] = "WebProg";

でいいんじゃないかな?
Socket って使ったことないからわかんないけど BoardName で追ってみると
http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html
↑ここから $BoardName[n] でURL取ってるみたいだし
確認してないけど
7671:2011/09/22(木) 15:29:52.18 ID:nJD1QeKS
>>75
すみません、基本的に大きな勘違いをしていました

$BoardName[0] = "大規模MMO";  板名
$BoardName[1] = "ネトゲサロン"; スレット名
$BoardName[2] = "ネットwatch"; ?

かと思っていましたが、全部板名で、番号を増やしていけばいいだけですよね^^:

で、
$Keyword = "●○"; の所を2〜3個指定したいんですが、
複数指定したい場合はどう書けば良いのでしょうか?

$Keyword = "●○" "●▲" "××";

$Keyword = "●○" AND "●▲";
  でしょうか?
ANDの代替がぐぐっても分かりません・・・
ちなみにスレ一覧のURLは移動してましたので書き換えます。
77nobodyさん:2011/09/22(木) 15:44:33.61 ID:???
>>71-76
【 スクリプト改造依頼スレ 】(丸投げ) part8
http://hibari.2ch.net/test/read.cgi/php/1314546533/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://hibari.2ch.net/test/read.cgi/php/1143834740/
金出すから改造してよvol.3
http://hibari.2ch.net/test/read.cgi/php/1162147035/
7871:2011/09/22(木) 16:01:22.71 ID:nJD1QeKS
>>77
ありがとうございます。
あと、条件を複数指定する場合にどう記述すれば良いかだけ教えていただければ
十分なのですが…。
$Keyword = "●○" "●▲" "××";

$Keyword = "●○" AND "●▲";
  でしょうか?

それとも $Keyword = "●○","●▲";



79nobodyさん:2011/09/22(木) 16:13:15.01 ID:???
うーん
COBOLをやってたというのがよく伝わってくる思考だw

$Keyword は GetData で

if (/$Keyword/){

というふうに正規表現で使われてるから論理演算子は使えないと思われ
$Keyword を @Keyword にしていっぱい入れられるようにして正規表現で | を使うか
if じゃない関数を使うかじゃないかな〜
80nobodyさん:2011/09/22(木) 18:12:10.54 ID:5FtK50r8
読み込んで表示だけのページ=ロックの必要はない

読み込んだデータを更新して書き込むページ=
ファイルロック1
ファイル読み込みモードでオープン
ファイルを配列に読み込み
ファイルを閉じる

データ更新

ファイル書き込みモードでオープン
更新したデータをファイルに書き込む
ファイルを閉じる
ファイルロック1の解除

これでいいはず
仮に読み込んで表示だけのページを
ファイルロック1
ファイルを読み込みモードでオープン
データを配列に入れる
ファイルを閉じる
ファイルロック1の解除とすると
表示するだけのページを開く間は書き込みができなくなるから
そうすると書き込める隙がなかなかない
81nobodyさん:2011/09/22(木) 19:43:11.98 ID:7t8BkGQU
use strict;
use warnings;

my @city = ("東京", "大阪", "名古屋");
delete($city[0]);
print "@city";

こんな簡単なので Use of unitialized value in join or string at *** line 6. っていう警告が出たんですが、どうしてですか?
それに Use of unitialized ... というエラーしょっちゅう見かけますが、調べてみてもよくわかりませんでした。
教えてくださいm(_ _)m
82nobodyさん:2011/09/22(木) 19:52:11.16 ID:???
delete $city[0]; で undef になった $city[0] を print するのに使ったから

とりあえずexcite翻訳から初めてみたらどうでしょうか
83nobodyさん:2011/09/22(木) 20:01:45.61 ID:???
84nobodyさん:2011/09/22(木) 20:15:05.37 ID:7t8BkGQU
>>82-83
ありがとうごさいます。
@city = grep($_ ne "", @city);
で $city[0] を消しても残ってたので不便な関数だなと思いました。
undef の値を消すような操作をすればいいんですね。
85nobodyさん:2011/09/22(木) 20:16:16.72 ID:???
つshift
86nobodyさん:2011/09/22(木) 21:48:02.28 ID:???
$city[0] = "東京" を削除して詰めちゃってもいい ($city[0] = "大阪" とずれていい) なら
shift @city;
要素をずらさずに $city[0] だけ消したいなら
$city[0] = "";
87nobodyさん:2011/09/22(木) 21:53:14.20 ID:???
あれ、$city[0] = undef;とdelete($city[0]);って同じ?
88nobodyさん:2011/09/22(木) 22:07:16.08 ID:???
89nobodyさん:2011/09/22(木) 23:43:44.90 ID:???
delete が非推奨とか・・・splice で削除しろとか書いてあるけどさ、
巨大な配列に対して splice すると、すごく遅そう・・・
90nobodyさん:2011/09/22(木) 23:56:59.38 ID:???
>>89
Perl処理系のソースを見ずに言うが、
そのへんはパフォーマンスがガタ落ちにならん程度にはうまいこと処理してるだろうと思う。
91nobodyさん:2011/09/23(金) 00:35:13.51 ID:???
ん?配列の要素に対する delete が非推奨なのは別に問題ないっしょ?
delete $array[$n] は要素を削除するのではなくて、むしろ undef $array[$n] に近いんだから。
92nobodyさん:2011/09/23(金) 00:37:24.81 ID:???
spliceは引数多くて邪魔くさい
93nobodyさん:2011/09/23(金) 00:38:06.92 ID:???
>>89
誤読すんなよ。

(特殊挙動の切り詰めの事を想定してるなら別だが)
splice で対処しろってのは、要素を本当に削除するケースに関してだ。
@arr = 1 .. 5 ; => @arr = qw( 1 2 5 );

delete の代りなら、
splice @arr, 2, 2, (undef) x 2 なんてしなくても
@arr[2,3] = (undef)x2 ;なりの方法があろう。
94nobodyさん:2011/09/23(金) 01:21:24.31 ID:???
8万の配列に長さ1の文字列を入れて、delete、undef、spliceでベンチマーク取ったけど、
spliceが一番遅かったけど大きな速度差は出なかった
95nobodyさん:2011/09/23(金) 01:24:44.39 ID:???
>>94
あと1つか2つ桁増やしてよろしく。
96nobodyさん:2011/09/23(金) 07:44:14.40 ID:???
use Benchmark qw( timethese cmpthese ) ;
cmpthese timethese ( undef, {
delete => sub{ my @arr = ARRAY ; delete @arr[ 99999 .. 999999] },
splice => sub{ my @arr = ARRAY ; splice @arr, 99999, 900000, (undef) x 900000 },
slice => sub{ my @arr = ARRAY ; @arr[99999 .. 999999] = (undef) x 900000 }
});
__DATA__
ARRAY => (q{x}) x 1000000
Benchmark: running delete, slice, splice for at least 3 CPU seconds...
delete: 3 wallclock secs ( 2.91 usr + 0.15 sys = 3.06 CPU) @ 2.94/s (n=9)
slice: 4 wallclock secs ( 3.17 usr + 0.14 sys = 3.31 CPU) @ 2.72/s (n=9)
splice: 3 wallclock secs ( 3.06 usr + 0.19 sys = 3.25 CPU) @ 3.08/s (n=10)
Rate slice delete splice
slice 2.72/s -- -8% -12%
delete 2.94/s 8% -- -4%
splice 3.08/s 13% 5% --

ARRAY => 1 .. 1000000
Benchmark: running delete, slice, splice for at least 3 CPU seconds...
delete: 3 wallclock secs ( 3.12 usr + 0.00 sys = 3.12 CPU) @ 12.82/s (n=40)
slice: 3 wallclock secs ( 3.02 usr + 0.01 sys = 3.03 CPU) @ 6.93/s (n=21)
splice: 3 wallclock secs ( 3.03 usr + 0.07 sys = 3.10 CPU) @ 9.35/s (n=29)
Rate slice splice delete
slice 6.93/s -- -26% -46%
splice 9.35/s 35% -- -27%
delete 12.8/s 85% 37% --
97nobodyさん:2011/09/24(土) 11:44:49.89 ID:???
文字コードで分からないことがあるのでご教授お願いいたします。
(utf-8 でソースを書いています)


utf-8 の半角ア -> EFBDB1
utf-16 の半角ア -> FF71

utf-8 でソースを書いているのだから、print "0xEFBDB1" で半角アが出力されるだろうと思ったら、
print "0xFF71" でないと半角アが表示されませんでした。
98nobodyさん:2011/09/24(土) 16:12:39.72 ID:???
cryptって絶対に復号化できないんですか?
パスワードをこの関数を使って暗号しようと思っていますが
この関数を使う上で欠点や注意点がありましたら教えてもらえませんか?
99nobodyさん:2011/09/24(土) 16:30:15.23 ID:???
100nobodyさん:2011/09/24(土) 16:48:02.74 ID:???
>>97
半角のイなら、0xFF72です。
101nobodyさん:2011/09/24(土) 18:00:52.20 ID:???
>>97
0xは数値に対してなので、\xだと思いますが、\xは2桁までしか拾わないので、
3桁以上の場合は、{ }を使って\x{123}とする必要があります。

2桁の場合は(\x{00B1}としても2桁と解釈されます)、その値そのもののバイナリ
文字列となります。

print "\xEF\xBD\xB1";

これ↑は、UTF-8として解釈すれば「ア」を意味するバイナリ文字列です。
ただし、Perlがこれを文字列処理するときはISO 8859-1という文字コードの3文字
として扱います。

3桁以上の場合は、その値のUnicodeコードポイント(U+FF71)のテキスト文字列となります。
( Perlは、"\x{FF71}"を「ア」という1文字として扱う)

バイナリ文字列(=バイト文字列)とは、バイト単位で処理される文字列のことです。
テキスト文字列とは、文字単位で処理される文字列のことです。
102nobodyさん:2011/09/24(土) 18:01:21.98 ID:???
>>99
リンクありがとう〜 とりあえずこれ使ってみることにします
103nobodyさん:2011/09/24(土) 19:43:27.75 ID:???
>>101
ありがとうございます!
104nobodyさん:2011/09/26(月) 12:35:58.38 ID:???
トリップを生成する仕組みなんですが、

if (length $handle_pass >= 12)
{
my $mark = substr($handle_pass, 0, 1);
if ($mark eq '#' || $mark eq '$')
{
if ($handle_pass =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|)
{
$GB->{TRIPSTRING} = substr(crypt(pack('H*', $1), "$2.."), -10);
}

文字列12バイト以上で、先頭が#または$の場合、
$handle_pass =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|を行なって
cryptによって生成していると思います。

しかし、$GB->{TRIPSTRING}や$1や$2をprintすると何も表示されません。
$handle_pass =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|では何を行なっているのですか?
教えてください。
105nobodyさん:2011/09/26(月) 12:55:07.21 ID:???
>>104
関係ないけど、これ $ から始まる場合何もしてないよね
106 ◆??? :2011/09/26(月) 13:01:10.88 ID:???
>>104
##0123456789abcdefxx 形式のトリップキーかどうかのチェックだろ

>>105
>>104は書いてないけど実際はelseがある
2chでは今のところ単に予約としてとってあるだけらしいから???になるだけだけど
107104:2011/09/26(月) 14:03:37.14 ID:???
>>105-106
ご回答ありがとうございます。
もう一度正規表現を調べますので、
その後、質問させてください。
108104:2011/09/26(月) 17:00:08.24 ID:???
先頭が#で始まり16進数文字が16個連続し、
末尾は./0-9A-Za-zのいずれかが0個以上2個以下連続する。

ですよね?

#0123456789abcdefxxは真
#0123456789abcdefxxxは偽
#0123456789abcdefは真

#0123456789abcdefあ が偽なのは、なぜでしょうか?

また、[[:xdigit:]]の[]が二重でくくられている意味を教えてください。
109104:2011/09/26(月) 17:01:58.51 ID:???
すみません、書きこんで気づきましたが、

#0123456789abcdefも偽ではないのか?と思います。
110nobodyさん:2011/09/26(月) 18:06:25.07 ID:???
あ は [a-zA-Z0-9] かどうか
f の後ろに続く判断が ? なのか + なのかで意味合いが変わってくるかと。

トリップキーの規格をもっかい調べてみればよいかと。
111nobodyさん:2011/09/27(火) 00:54:20.16 ID:???
ファイルのロックはmkdirなどでロック用ディレクトリ
を作る方法は良く見かけますがディレクトリではなく
openでロック用ファイルを作るというのは問題があるんでしょうか?
112nobodyさん:2011/09/27(火) 01:02:44.10 ID:???
rename とか mkdir はシステムコールを使ってるから、open より割り込まれる余地が少ない。

とかじゃなかったっけ?
113nobodyさん:2011/09/27(火) 01:31:29.84 ID:???
>>111
http://www.din.or.jp/~ohzaki/perl.htm#File_Lock

今時 flock を使えない環境に出くわす事も稀だがな。
http://perldoc.perl.org/perlport.html#flock
114nobodyさん:2011/09/27(火) 02:07:22.29 ID:???
モジュールを作ってて、そのモジュールの中では use utf8 とか、open(my $in, '<:utf8', '〜') とかしてます。

しかし use utf8 してないスクリプトから呼ばれた時には、これだと文字化けが起きてしまいます。
そのため use utf8 されていない場合にはフラグを落として返したいのですが、
モジュールを呼んだスクリプトで use utf8 されてるかどうか調べる方法はあるのでしょうか?


モジュールが特定の文字コードに依存すること自体が駄目だとは分かっては居るのですが・・・
115nobodyさん:2011/09/27(火) 04:57:52.69 ID:???
>>112
余地が少ないんじゃなくて余地が無い、
つまり処理がアトミックでないとだめなんだよ。
「余地が少ない」んじゃ意味ないの。
116nobodyさん:2011/09/27(火) 11:02:16.14 ID:???
flock(XX, 2)
でデッドロックが発生した場合はどうなるんでしょうか?
あと、待ってる間は自動でsleepしてくれるんでしょうか?

flock(XX, 6)
で自分で実装するのとどちらが良いのか迷ってます。
117nobodyさん:2011/09/27(火) 19:02:14.19 ID:???
すいません。プログラムを定刻になると自動で実行するようにしたいんですが、できますか?
レンタルサーバに置きます。
全体を無限ループをしてsleep()で休むというのを考えたのですが、無限ループは一番やってはいけないらしいですね。

あと検索するとすぐJavaScriptで自動更新する方法が出てきますが、
この方法だと時限以外にもCGIにアクセスされたときに実行してしまうと思います。
JavaScriptだけに実行させたいときはパーミッションをどう設定すればいいですか?
118nobodyさん:2011/09/27(火) 19:46:39.67 ID:???
>>116
>明白ではないものの、伝統的な flock の動作としては、ロックが得られるまで 無限に待ち続けるものと、単に勧告的に ロックするものの二つがあります。

>>117
cronのことを聞いてる?
119nobodyさん:2011/09/27(火) 21:07:32.00 ID:???
>>118
その説明を読んで具体的にどうなるのかが分からなかった
伝統的とか無限とか

・複数のプロセスが待ち状態になった場合に、次にロックを得られる順番は?
・デッドロックかかったらプロセスはどうなるのか
・待ってる間の負荷は

この辺りが気になる。
120nobodyさん:2011/09/27(火) 22:48:37.67 ID:???
・複数のプロセスが待ち状態になった場合に、次にロックを得られる順番は?
システムにしか分かりません

・デッドロックかかったらプロセスはどうなるのか
flock を待つオプションで呼び、他のプロセスが死ねばロックは外れるので先に進めますが、
mod_perlなどではプロセスは死なないのでflockは掛かったままになります。
なので、flockを呼ぶときは待たないようにしましょう
121nobodyさん:2011/09/27(火) 23:25:00.27 ID:???
flock呼んだ順番になるのか、ランダムになるのかの2択くらいかと思ったんですが、後者って認識でいいです?

無限に待ち続けるとあるんですが、待たないようにする方法もあるんでしょうか?

あと、大量のプロセスが待ち状態になった場合の負荷も気になります。
大人しく待ってるんでしょうか?
122nobodyさん:2011/09/27(火) 23:54:57.99 ID:???
unlock時に起き上がったプロセスがロックを取れる
LOCK_NBだ、ドキュメントぐらい読め
sleep以外に何をするのか、それ以前にロック待ちが大量にある時点でどうか
123nobodyさん:2011/09/28(水) 01:15:39.74 ID:???
>>117
>>118 の書いているとおり通常はcronを使う。と思う。

> あと検索するとすぐJavaScriptで自動更新する方法が出てきますが、

「プログラムを定刻になると自動で実行」させるのにJavaScriptをどうやって使うの? 意味がわからん。

> JavaScriptだけに実行させたいときはパーミッションをどう設定すればいいですか?

さらに意味がわからん。
124nobodyさん:2011/09/28(水) 01:29:17.95 ID:???
>>123
俺は最初、サーバサイドでjavascriptを動かすnode.jsのこと言ってるのかと思った。
cronを扱うためのapiもあるみたいだし。
perl関係ないけど。
125nobodyさん:2011/09/28(水) 02:00:23.29 ID:???
>>122
ありがとうございました。
LOCK_NB使わずに待たない方法があると勘違いしてました。
素直に自分で実装します。
126nobodyさん:2011/09/28(水) 13:39:10.69 ID:???
ファイルの読み書きでトランザクションを実現するモジュールを apache が標準で持ってくれるとありがたい
127nobodyさん:2011/09/28(水) 17:26:59.68 ID:???
ファイルの読み込みは@lines = <IN>で一括して配列に入れていますが
while<IN>で1行ずつ読み込む方がいいんですか?
配列を引数にしたり戻り値にしたりする場合が多いから
どうしても一括読み込みが多くなってしまいますが
一括読み込みだとそんなにメモリの負担になりますか?

ていうか<IN>自体にもファイル全部のデータが格納されているんですよね?
128nobodyさん:2011/09/28(水) 18:31:25.70 ID:???
GB単位でファイルを処理する人間だと、while で回すなりの工夫は必要だけど、
今のご時世だったら、殆どの人は気にする事は無いでしょ。

>ていうか<IN>自体にもファイル全部のデータが格納されているんですよね?
そんなスーパーな挙動を取られたら、5GBファイルを 2GB メモリの PC で解析
出来ないじゃないですかっ
129nobodyさん:2011/09/28(水) 21:17:17.61 ID:???
一行づつ読み込んだら遅くなる。
130nobodyさん:2011/09/28(水) 22:32:03.45 ID:???
% perl -le '$s = q{x} x 1000000 ; $s =~ s/(.{1,50})/$1\n/g; print $s ' > test.txt
% cat hoge.pl
use Benchmark qw( timethese cmpthese ) ;
cmpthese timethese ( undef, {
arr => sub { open my $fh, q{<}, q{test.txt} ; my @arr = <$fh> ; close $fh ; @arr },
whi => sub { open my $fh, q{<}, q{test.txt} ; my @arr ; while (<$fh>){ push @arr, $_ } close $fh ; @arr },
aho => sub { open my $fh, q{<}, q{test.txt} ; my @arr ; for (<$fh>){ push @arr, $_ } close $fh ; @arr },
});
% perl hoge.pl
Benchmark: running aho, arr, whi for at least 3 CPU seconds...
aho: 3 wallclock secs ( 2.76 usr + 0.35 sys = 3.11 CPU) @ 48.87/s (n=152)
arr: 3 wallclock secs ( 2.72 usr + 0.41 sys = 3.13 CPU) @ 56.55/s (n=177)
whi: 3 wallclock secs ( 2.85 usr + 0.30 sys = 3.15 CPU) @ 70.79/s (n=223)
Rate aho arr whi
aho 48.9/s -- -14% -31%
arr 56.5/s 16% -- -20%
whi 70.8/s 45% 25% --
131nobodyさん:2011/09/28(水) 22:55:36.32 ID:???
>>130
コメントは大事だよー
whileが一番速いのか 理由は何なんだろうな
132nobodyさん:2011/09/28(水) 23:04:50.68 ID:???
whileでファイルの2行目から読み込むのってどうやるんですか?
133nobodyさん:2011/09/29(木) 00:01:53.09 ID:???
<FH>;
while (<FH>) {
}
134nobodyさん:2011/09/29(木) 00:44:49.60 ID:???
>>131
ファイルがメモリにキャッシュされたから。
最後に書いたほうが早くなる。
135nobodyさん:2011/09/29(木) 00:45:39.00 ID:???
訂正
最後に処理されたもののほうが早くなる。
136nobodyさん:2011/09/29(木) 00:54:10.24 ID:???
最後も何も2回目以降同じじゃね
仮にキャッシュされてるんなら
137nobodyさん:2011/09/29(木) 01:02:01.08 ID:???
>>135
適当に順番入れ替えてやってみ。
結果はほとんど変わらないから。

ていうかよく見たら一番最後に処理したahoが一番遅いじゃねーか。
138nobodyさん:2011/09/29(木) 01:09:34.61 ID:???
やっぱり一度に全部読んだほうが2倍以上速かったな。

all => sub { open my $fh, '<', 'test.txt'; my $buf; read($fh, $buf, (-s 'test.txt')); close $fh ; return split("\n", $buf);},
139nobodyさん:2011/09/29(木) 01:35:54.32 ID:???
一度に全部読んだほうが処理がしやすい場合が多い

ファイルの下に行くほど新しい書き込みの場合
最新のn件を表示する場合はwhileで1行ずつは難しいな
@linesに全部読み込んで@linesの配列の後ろからn番までを切り取って表示すれば簡単だな
140nobodyさん:2011/09/29(木) 01:40:46.41 ID:???
結局のところ「用途による」だろ
141nobodyさん:2011/09/29(木) 01:53:22.20 ID:???
>>139
ファイルの最後の方から読んでいって
改行の数を数えたほうが早いよ。
142nobodyさん:2011/09/29(木) 02:22:14.02 ID:???
ファイルの最後の行から上の行に向かって1行ずつ取り出せるの?
ファイル読み込み位置操作できるのseekしか見つからなかったが
これ行単位じゃなく後ろからのバイト数なんだよな
143nobodyさん:2011/09/29(木) 02:39:16.38 ID:???
ゆとりか。作れよ。
144nobodyさん:2011/09/29(木) 04:40:11.37 ID:???
145nobodyさん:2011/09/29(木) 06:43:00.87 ID:???
>>137
一応書いとくが、Benchmarkのサブルーチン実行は記載順じゃないぞ。
勝手にソートされる。
もちろん、135の意見に同意するわけでは無いが。

ahoが遅いのは、明白に(<$fh>)の時点でメモリに確保(無名配列への代入と同等)
されてて、その後に@arrにpushしてるから、遅いの当たり前。
サブルーチンの名前が「アホ」な時点でネタだと分る。
146nobodyさん:2011/09/29(木) 07:40:54.50 ID:???
AWKのAの人ディスってんの……
147nobodyさん:2011/09/29(木) 08:22:35.67 ID:???
>>130
以下は自分の推測。
正しいかはわからない。

@arr = <$fh>;は、まずreadline関数内で、全行のリストが作られ、それが@arrにコピー
されるので「@arr+全行リスト」のメモリを使う。

while (<$fh>){ push @arr, $_ }は、1行だけが$_に入るので、「@arr+1行分」のメモリ
しか使っていない。

メモリ使用量の差が速度差に出たと。
148nobodyさん:2011/09/29(木) 11:31:16.87 ID:???
>>130
7.8MB のテキストファイルでぶん回してみた

Benchmark: timing 10000 iterations of aho, arr, whi...
aho: 1337 wallclock secs (1157.39 usr + 103.11 sys = 1260.50 CPU) @ 7.93/s (n=10000)
arr: 1284 wallclock secs (1118.88 usr + 102.05 sys = 1220.92 CPU) @ 8.19/s (n=10000)
whi: 921 wallclock secs (768.06 usr + 104.30 sys = 872.36 CPU) @ 11.46/s (n=10000)
Rate aho arr whi
aho 7.93/s -- -3% -31%
arr 8.19/s 3% -- -29%
whi 11.5/s 44% 40% --
149nobodyさん:2011/09/29(木) 16:22:24.12 ID:zOJkGfGB
sendmailとperlで質問です。
メールからプログラムを起動したくて色々設定を行っているのですが
どうにも行き詰ってしまいました。

CentOSにwebminを入れて管理しています。
sendmailにエイリアスを利用してプログラムを起動しようとしているのですがうまくいきません。

とりあえず外部からのメールは受信出来ている状態です。
登録用のエイリアスにプログラムに送ると合わせてユーザーにもメール配信していますが
そちらには届いている事を確認済みです。
smrshについてはリンクを設定済みでエラーは返ってこなくなりました。

この状態で簡単なプログラムを作成して動作確認を行おうとしたのですが
プログラムが動きません。

#!/usr/bin/perl --

open(OUT, ">> datafile.txt");
print(OUT "動作確認\n");
close(OUT);

試しでこのようなコードを置いてるのですが動きません。
プロンプトから動作させた場合は正しくファイルに書き込まれています。

エイリアスの指定の仕方がまずいとかでしょうか?

エイリアス名: "|/usr/bin/perl /var/www/html/プログラム名"
のような感じで指定しています。
直接
エイリアス名: "|/var/www/html/プログラム名"
としてもダメでした。
もしわかるかたがいらっしゃいましたらよろしくお願いします。
150149:2011/09/29(木) 16:24:24.50 ID:zOJkGfGB
追記
パーミッションは
プログラム755
書き込み用ファイル666
としています。
151nobodyさん:2011/09/29(木) 16:36:26.36 ID:???
まずすべきことは、エラーログを見てみる。
152nobodyさん:2011/09/29(木) 16:41:31.46 ID:???
>>149
メールがサーバに届いているなら、/var/log/maillogかなんかに出ているログを確認するというのが基本です。
気になったのは、ファイルパス。シェル上ではログイン時にそのユーザー派のホームディレクトリにカレントパスがセット
されますが、sendmailで受けた場合はそのパスにならないのだから、絶対パスで指定する必要があります。
153nobodyさん:2011/09/29(木) 16:41:44.87 ID:???
> open(OUT, ">> datafile.txt");
この datafile.txt はどのディレクトリに書き込まれるの?
パーミッションエラーで書き出せないとかじゃないの?
154149:2011/09/29(木) 16:59:53.15 ID:???
>>152,153
盲点でした絶対パスで書いたら問題無く書き込めてました。
ありがとうございました!
155nobodyさん:2011/09/29(木) 17:44:48.07 ID:???
結局Perlは関係なかったね。
156nobodyさん:2011/09/29(木) 17:51:14.58 ID:???
せやろか?
157nobodyさん:2011/09/29(木) 21:10:32.23 ID:???
せのつくあれをやるなんていやらしい
158nobodyさん:2011/09/29(木) 21:45:52.72 ID:???
最近じゃ、小学生どうしでもするんですってね、






せいくらべ。
159nobodyさん:2011/09/30(金) 03:01:50.06 ID:???
投稿の表示の上にページ数を載せたい場合
最大ページ数=投稿数/1ページあたりの表示数の少数切り上げだから
投稿数がわからないと最大ページ数がわからないわけだから
whileだと最初にwile(<IN>){$toukousuu++;}で投稿数出してそのあとwile(<IN>){表示}の
2回ループしなきゃならないけど@lines一括読み込みなら$toukousuu=@linesのforeach(@lines){表示}の1回ループですむ
160nobodyさん:2011/09/30(金) 03:40:56.53 ID:???

   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |       >>159
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
161nobodyさん:2011/09/30(金) 09:23:13.25 ID:???
162nobodyさん:2011/09/30(金) 12:34:30.65 ID:???
>>160
何で釣り扱いされているのかわからんw
じゃあ例えばファイルの下から10番目までの行であるならばフラグを立てるという場合
while(<IN>){

$aaa = $toukousuu-10;

if($count>=$aaa){
$flg = 1;
}
else{
$flg = 0;
}
$count++;
}
としなければならないが$toukousuuを求めるのはこれよりまえにwhile(<IN>){$toukousuu++;}とする必要が
あるのはわかるだろ。
つまりwhileだとループを2回しなければならんのだよ
163nobodyさん:2011/09/30(金) 13:19:30.58 ID:???
             |
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
   >( c´_ゝ`)  |
            |
>( c´_ゝ`)     J
     >( c´_ゝ`)



             |
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
             |     >( c´,_ゝ`)
             |
             J   >( c´,_ゝ`)
                    >( c´,_ゝ`)
164nobodyさん:2011/09/30(金) 18:04:53.60 ID:???
>>162
うん。そうだね。それで?それがどうかしたの?

って感じ。
165nobodyさん:2011/09/30(金) 18:27:33.76 ID:???
>>164
だって2回ループするとその分重くなるじゃん
166nobodyさん:2011/09/30(金) 18:55:57.64 ID:???
>>165
どのみち全数読み込まなきゃいけないんだったらもちろん一括読み込みすればいいんだけどさ。
しかし重くなるのが嫌だったら投稿数などのインデックス情報の類は別途保存して、
独立して管理するという方法もあるぞ。
そうすれば $count = @array; みたいにいちいち配列の要素数を数えなくても済む。
167nobodyさん:2011/09/30(金) 19:33:37.65 ID:???
>>165
slurp の方が早いよって主張ならまだしも、、、
>>130の結果が理解出来てないだろお前さん。
% perl -le '$s = q{x} x 1000000 ; $s =~ s/(.{1,50})/$1\n/g; print $s ' > test.txt
% cat hoge.pl
use Benchmark qw( timethese cmpthese ) ;
cmpthese timethese ( undef, {
arr => sub { open my $fh, q{<}, q{test.txt} ; my @arr = <$fh> ; close $fh ; printf STDERR "%d\n", scalar @arr ; for ( @arr ){ print STDERR; } },
whi => sub { open my $fh, q{<}, q{test.txt} ; my @arr ; while (<$fh>){ push @arr, $_ } ; close $fh ; printf STDERR "%d\n", $. ; for ( @arr ){ print STDERR; } },
});
% perl hoge.pl 2> /dev/null
Benchmark: running arr, whi for at least 3 CPU seconds...
arr: 4 wallclock secs ( 2.00 usr + 1.23 sys = 3.23 CPU) @ 242.11/s (n=782)
whi: 4 wallclock secs ( 1.95 usr + 1.29 sys = 3.24 CPU) @ 254.94/s (n=826)
Rate arr whi
arr 242/s -- -5%
whi 255/s 5% --
168nobodyさん:2011/09/30(金) 20:14:25.09 ID:???
>>166
全部読み込むにしても一括読み込みだとメモリ食うよ
一行ずつ回す方がいい

>>167
読んだけど意味が分からない
169nobodyさん:2011/09/30(金) 20:49:46.04 ID:???
165の「重い」ってメモリの重さの話か?
速度の話だと誤読したわ。

速度だと既に結論が出てて、>>130理解してれば、
while(<$fh>){ push @arr, $_ ; } が、@arr=<$fh>;
より早いんだから、後の処理が同じなら何回ループ回そうが、
無関係。カウンタを自分で付けようが、 $. 利用しようが同じ。

メモリ?
んなもん、同じファイルなら、
@arr =<$fh> ;だろうが、一行づつ回そうが誤差範囲だろ。
それを何回回そうが無関係。
@arr = do{ local $/ ; $buf = <$fh> ; split /^/ms, $buf ;
なんかするんだったら多くかかるのは当然だけど。

sub myps { print `ps ux $$`};
myps;
# お好きなコード
myps;
でもして差分取れば?
170nobodyさん:2011/09/30(金) 20:50:40.41 ID:???
×@arr = do{ local $/ ; $buf = <$fh> ; split /^/ms, $buf ;
◯@arr = do{ local $/ ; $buf = <$fh> ; split /^/ms, $buf ; } ;
171nobodyさん:2011/09/30(金) 21:29:34.48 ID:???
釣りにマジレス
>>159
open my $fh, '<', 'hoge.pl' ;
while ( <$fh> ){ }
print "$.\n" ;
while ( <$fh> ){ print }
close $fh ;
このコードを hoge.pl として保存して実行してみろ。

と言うことで、
>>167
165 の言う「2回ループ」は上のコード、好意的に判断しても
「ファイルハンドル開き直してのファイル読み込み2回」って意味だ。
あなたの突っ込みは通じない。
172nobodyさん:2011/09/30(金) 23:04:33.02 ID:???
あれ?まだやってるの?

ほんとうの意味でファイルを一括で読むこっちが
一番速いって答えは出たと思うんだけど。
all => sub { open my $fh, '<', 'test.txt'; my $buf; read($fh, $buf, (-s 'test.txt')); close $fh ; return split("\n", $buf);},

173nobodyさん:2011/09/30(金) 23:07:07.88 ID:???
foreach ( split/\n/, $buf ) {}
はい
174nobodyさん:2011/09/30(金) 23:11:26.42 ID:???
もうその話しじゃなくなってんだが、まあ突っ込んでやる。
同等の条件にすると話しにならんくらいarrの方が早い。
cmpthese timethese ( undef, {
arr => sub { open my $fh, q{<}, q{test.txt} ; <$fh> },
all => sub { open my $fh, '<', 'test.txt'; my $buf; read($fh, $buf, (-s 'test.txt')) ; split(/^/ms, $buf);},
});
結果↓
Benchmark: running all, arr for at least 3 CPU seconds...
all: 3 wallclock secs ( 2.72 usr + 0.36 sys = 3.08 CPU) @ 1366.56/s (n=4209)
arr: 4 wallclock secs ( 1.51 usr + 1.66 sys = 3.17 CPU) @ 30816.72/s (n=97689)
Rate all arr
all 1367/s -- -96%
arr 30817/s 2155% --

175nobodyさん:2011/09/30(金) 23:13:06.26 ID:???
174はまちがい
スカラーコンテキストで評価されるわw
176nobodyさん:2011/09/30(金) 23:21:35.32 ID:???
まちがい。arrは遅かったw
177nobodyさん:2011/09/30(金) 23:22:41.29 ID:???
@arr =<$fh>がファイル一括読み込みよりも
遅いのは当たり前の話で、内部的に一行づつ読み込んでいるから。
178nobodyさん:2011/09/30(金) 23:23:54.55 ID:???
同等の条件
arr => sub { my @arr = sub{ open my $fh, q{<}, q{test.txt} ; <$fh> }->() },
all => sub { my @arr = sub{ open my $fh, '<', 'test.txt'; my $buf; read($fh, $buf, (-s 'test.txt')) ; split(/^/ms, $buf); }->() },
まあ、 all の方が早いわな。
179nobodyさん:2011/09/30(金) 23:56:34.45 ID:???
                    亠ァ厂|        `':,;..:..:.';.     ;'..:..:.,:'
                       ‐个 兀          `:;:.::.':.,   ,':.::.:,:'
`.:`.:''''..:.‐ :.:-:.:...,,,, __   、‐-、        __   ,.‐z_,-、   '':;;:::':, ,...;'::..:,;'  ,,.:':
..:..:...:..:..:...:...:...:.:..:...:...:..:.`_,,ノ └¬、'''.:.:‐:..,,ヾ、__)∠,ィク /,、   ';:''..:.:..:..:.:..:.'':;'':.:.,;.
.:..:...:..:..:...:...:...:.:..:...:...:..:.ヾ、_   <^'".:..:..:.:..: <`ヾ´~_  _~´ 〉'''':.::.;':.::...:.:..:..:..:...:.:.';' ,,
..:..:...:..:..:...:...: ,,;,;,;,,;:..:..:.:.:..: / /\ `ヽ、..:..:.:..:..:_ブ∧ ‐ ‐ /.:.:..:,;,::';..:..:..:.:..:..:..:...:.:.:''´:.:
:..:.:..:..,.:-〜' , 、m_)°.:.:.'ー-'..:..:..:`ー--',,;,;::.:.:ヽ、_i (_,/しヘヘ_) ´  '::;.:.::.:..:..:..:..:.:..,;'` ''
,;,,;,;/  <て_;:、。.:° ‐ '''' " ´ ´               ,;:''.:.:,:'' :;,._.:,;.,、:.'':.,,_
  / r'7ァッーヘ、_) ゚                      ,,:''.:.:,:'' , -〜''ヽ‐-‐、.:.:.''
-く  レ'/〈 °   。     ,ヘVフヽ、          ,,:''.:.:.:,:''  (_,ヘ、     ⌒
  V巛〈 ヽ  , 〜''ヽ    / e ヽノ\ヘ.      ,,:.''..::.:,:'' 。     と_刀Tゥー
_/ ヾ ヽ、 Y ァ个〜'。゚  ,少ー- 代ヽ、 ヾゝ   ,,.: '':.:/ヽ、' 。 ゚ (⌒⌒ー-く ノノ,!j
 {.   \ Y巛〈       ) lfgレ゙く  \''.:.::.:.:.:/ / 入 ゚ 。 `〜<ヾヾ、,`⌒ 〜
_, ヘ、  ヾ{ ヾト、      'ヾゝャgメl`   ヾヨ /〃/ _,,>    〉〉ノ `厂丁`
   \  \  ヽ、    `ゞへmfi_  ゞdf‐ '' ´      ////  ノ
─〜 ⌒ヽ、  \   ヽ、    ´`'‐ニ世三r<k´       _,,ノ,〆   /
    __,, へ、 \   ` ー- 、__      _,, --‐‐ ''´     _ - ´  /
 ̄ ̄      \  ` ー- 、 _     ̄ ̄ ̄       _, -〜< -一 ブ
          ヽ、、       ̄` ー─----── ´ ̄    _ -一 ´
180nobodyさん:2011/10/01(土) 01:21:20.72 ID:???
>>179
話の流れを追う気はまったくないが
このAAはおめでたさ満点でよかった
181nobodyさん:2011/10/01(土) 20:11:38.10 ID:???
画像を送信するときなんかはフォームと画像のデータが1つになった
変数で送られるからwileで1行ずつ回すというのは無理だな
こういう場合は画像が大きければ大きいほど、どうしてもメモリは食う
182nobodyさん:2011/10/04(火) 02:02:20.47 ID:???
>>182
まあそうだろうなmalti-partの場合も
read(STDIN,$buff,$ENV{'CONTENT_LENGTH'});
で$buffに全部の送信データが格納されるから
画像が大きいほどメモリは食う
183nobodyさん:2011/10/04(火) 04:12:16.99 ID:???
>>182
再帰アンカー/ひとり循環リスト乙
184nobodyさん:2011/10/06(木) 12:31:19.56 ID:???
すいません
read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
print $data;
だけのスクリプトを書いたんですが
Use of uninitialized value in read at 〜と出ます
これなんでですかね?
185nobodyさん:2011/10/06(木) 12:50:34.41 ID:???
>>184
http://perldoc.jp/docs/perl/5.10.0/perldiag.pod

本当にその2行だけなのなら、
-w オプションが効いている下で $ENV{'CONTENT_LENGTH'} を未定義のまま実行したからだろう。
186nobodyさん:2011/10/06(木) 13:13:47.41 ID:???
>>185
ありがとうございます。他のところがおかしいんじゃなくてよかったです。
これは入力がなければ出るものなんですね。
187nobodyさん:2011/10/06(木) 14:16:31.01 ID:???
>>186
> これは入力がなければ出るものなんですね。
違う。$ENV{'CONTENT_LENGTH'} が未定義 (undef) だから出ている。
STDIN からの入力が無くとも $ENV{'CONTENT_LENGTH'} に 0 が入っていれば出ない。

> Use of uninitialized value%s
> (W uninitialized) 未定義値を、あたかも既に定義されているかのように使用しました。
> これは、"" か 0 と解釈されますが、間違いの可能性があります。
> この警告を止めるには、変数に定義された値を代入してください。
188nobodyさん:2011/10/06(木) 15:00:33.35 ID:???
>>184
この「だけのスクリプト」ってのは嘘だな。
CGIとしてだったらこの2行だけでは動かない。
189nobodyさん:2011/10/07(金) 00:00:35.18 ID:???
SSI使わずにHTML上にCGI呼び出す方法って<script>タグ以外にありますか?
190nobodyさん:2011/10/07(金) 01:23:00.44 ID:???
>>189
<script>タグ勘違いしてる。それはクライアント側での処理だから。
ttかHTML::Templateなどのテンプレートエンジンを考えてみたら。
191nobodyさん:2011/10/07(金) 03:51:57.20 ID:???
>>189
img、iframe、cssのimport
192nobodyさん:2011/10/08(土) 14:37:18.51 ID:???
https://github.com/motemen/WWW-BBS-2ch
の make test は Result: PASS になり、
SYNOPSIS にあるコードを動かしてみたところ、

Can't call method "add_handler" on an undefined value at /usr/lib/perl5/site_perl/5.10/WWW/BBS/2ch.pm line 39.

と出ました。なので 2ch.pm:39 を見ると、

https://github.com/motemen/WWW-BBS-2ch/blob/master/lib/WWW/BBS/2ch.pm
my $class = shift;
my $self = bless {
ua => LWP::UserAgent->new(agent => "Monazilla/1.00 WWW::BBS::2ch/$VERSION"),
encoding => 'shift_jis',
@_,
}, $class;

$self->ua->add_handler(

という感じです。

Dumper $self->ua; すると undef です。

エディタを開いて試しに自分で
$ua = LWP::UserAgent->new(agent => "Monazilla/1.00 WWW::BBS::2ch/$VERSION");
$ua->add_handler(
とか書くと $ua は取得できて add_handler も動くので CPAN モジュールは問題なく入っているようです。

my $self = bless {} が怪しいのですが、どうすれば WWW::BBS::2ch の SYNOPSIS を動かせるでしょうか。
193nobodyさん:2011/10/08(土) 17:51:50.13 ID:???
>>192
$self->{ua} で許して
194nobodyさん:2011/10/08(土) 18:24:39.39 ID:???
$self->ua;

sub ua{ }


は定義されてるの?
195nobodyさん:2011/10/08(土) 23:56:07.90 ID:???
>>192
どうも https://github.com/motemen/WWW-BBS-2ch の例が間違っているみたい。
| my $bbs = WWW::BBS::2ch->new(cache => $cache, ua => $ua);
ここで $cache, $ua なんて存在しないから。
その通りに入力したら $self->ua は undef になるだろう。ためしに引数無しで
| my $bbs = WWW::BBS::2ch->new;
としたらどうだ。
196nobodyさん:2011/10/09(日) 16:35:15.15 ID:???
いまどきCGI.pmって見かけたけど、フレームワーク使えって意味だろうか。
わざわざフレームワーク通すまでもないときはどうするのがモダンなの?
197nobodyさん:2011/10/09(日) 17:53:18.28 ID:???
http://cgi-lib.berkeley.edu/ ん?いや、何でもない…
198192:2011/10/09(日) 18:49:28.44 ID:???
>>195
うわああ、ありがとうございます!
動きましたぁばばばば。
199nobodyさん:2011/10/11(火) 23:38:30.50 ID:Xx0lESYm
間違えて「プログラム技術板」に質問を書いてしまいましたが
此方で改めて質問させて下さい。

その1------------
DBIからのSqlサーバへの接続方法をご教示下さい。
質問場所がここじゃなかったら誘導お願いします。

以下の環境を作成し、
コマンドプロンプトからtest.plをCALLしたのですが
SQLサーバがないとのエラーが表示され、接続出来ませんでした。
値を色々変えてみたりしたのですがどうやっても接続できず…
何が悪いのかお手上げ状態です。

接続文字列が悪いのでしょうか…?

ODBCでの接続は行えており、CSEからのDB参照や
コマンドプロンプトからのsqlcmdコマンドでなら正常にアクセスできます。
[sqlcmd /E /S PC-Name\SQLEXPRESS]

環境
・Windows7
・Microsoft SQL Server 2008
・Perl5.0


Server:PC-Name\SQLEXPRESS
DB:sampleDB
User:user
Password:pass

200nobodyさん:2011/10/11(火) 23:39:50.63 ID:Xx0lESYm
-----------------------
test.pl
-----------------------
$dataSource = "dbi:ODBC:".
"driver={SQL Server};".
"Server=(local);database=sampleDB;".
"Trusted_Connection=yes;".
"AutoTranslate=No;";
#データベースに接続
$user="user"; #ユーザ名
$pwd="pass"; #パスワード
$dbh = DBI->connect($dataSource,$user,$pwd)
or die $DBI::errstr;
# データアクセス(今は処理無し)
$dbh->disconnect;
-----------------------
エラー内容
-----------------------
DBI connect('driver={SQL Server};Server=(local);database=sampleDB;Trusted_Connec
tion=yes;AutoTranslate=No;','user',...) failed: [Microsoft][ODBC SQL Server Driver
][Shared Memory]SQL Server が存在しないか、アクセスが拒否されました。 (SQL-08001
) [state was 08001 now 01000]
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()). (S
QL-01000) at dbtst.pl line 28
[Microsoft][ODBC SQL Server Driver][Shared Memory]SQL Server が存在しないか、ア
クセスが拒否されました。 (SQL-08001) [state was 08001 now 01000]
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()). (S
QL-01000) at dbtst.pl line 28.
-----------------------
201nobodyさん:2011/10/11(火) 23:40:28.76 ID:???
馬鹿には見えないtest.plが張ってあるらしいな
202nobodyさん:2011/10/11(火) 23:48:58.55 ID:Xx0lESYm
その3------------
「その2」を付け忘れてしまいましたが
199-200でワンセットです。

Linux + MySql5.0 + DBIで動作しているシステムを
改造する為のローカルサーバを作成したいので、
どうしてもDBIを使用したいと考えています。

よろしくお願いいたします。
203nobodyさん:2011/10/12(水) 01:55:18.70 ID:???
> Server=(local);
この表記はアリなのか?
204nobodyさん:2011/10/12(水) 04:13:51.23 ID:???
>>201
そうみたいだね。
205nobodyさん:2011/10/12(水) 08:22:59.76 ID:???
よくわからないから外れてるかもしれないけど
sampleDBが文字列じゃなくて変数になってないか?
206nobodyさん:2011/10/12(水) 12:30:39.86 ID:???
'' で囲ってみ
207199:2011/10/12(水) 18:44:51.34 ID:QKPkC9MD
アドバイス有難うございます。

>>203
Server=(local);
の表記は、ネット上で拾ったやり方をそのまま使っているので
使える…とは思うのですが…。ちなみに、
Server='PC-Name\SQLEXPRESS';
にしても状況変化なしです。

205 206>>
"database='sampleDB';"
に変更してみましたが、変化なしです。


エラーメッセージで
「SQL Server が存在しないか、アクセスが拒否されました」
とあるので、DBではなくServerへの接続が
失敗しているのではないかと思うのですが

Windows7の場合カーネルの違いから挙動が異なる
といった事はありませんでしょうか?
208nobodyさん:2011/10/12(水) 19:15:26.58 ID:???
>>207
いっそのこと、ODBC データソース アドミニストレータ で定義してしまいば?
209199:2011/10/12(水) 20:45:40.79 ID:QKPkC9MD
>>208
有難うございます!

ODBC経由でDBに接続する事でアクセする事が出来ました(>_<。
ユーザDSNに「dbgSQLServer」の名前でDBを登録し、
$dataSource= "dbi:ODBC:dbgSQLServer";
としたら無事SQLの実行まで確認できました。

直接接続する事にこだわる必要は無かったんですね。
何日も悩んでいた事だったので本当に助かりました。

有難うございました。
210nobodyさん:2011/10/12(水) 22:01:53.09 ID:???
>>209
よかったよかった!
Windows+PostgreSQLでDBD::Pgが使えなくて困ったときにそうしたんだ。
その時PgPPどころかCPANもわからなかったあのころ。
車輪何個も作っちゃったけど、キニシナイ
211199:2011/10/13(木) 18:35:59.97 ID:???
>>210
本当有難うございました。

PostgreSQLは使ってみようとインストールする時点で
挫折した記憶が…(^^;

プログラムををゴリゴリ書くのは楽しいんですが
何時も環境構築が一番のネックになります。

これでやっとコーディングに入れます♪
212nobodyさん:2011/10/17(月) 23:46:25.75 ID:???
ファイルロックについて質問です。

自分は今は rename とか mkdir とか使ってロック機構を実装してますが、
お仕事とかで perl を使ってる人はファイルロックする際には rename とか
mkdir とかでロックかけてるのでしょうか?
それとも flock を使用しているねでしょうか?

「DB 使えや」 ってゆう回答は求めておらず、ファイル読み書き時に於けるロックは、
仕事などではどう対応されているのか気になったもので、質問させていただきました。
213nobodyさん:2011/10/18(火) 01:32:44.53 ID:???
確かに「DB使えや」ではあるなw

以前、自分が入社する前に書かれたソースを見たことがあるんだけど、その時はflockを使ってたっぽい。
ただflockすれば良いというものでもなく、きちんとした方法で使わないと全くの無意味だけど。

あと、今ならその辺を上手くやってくれるモジュールがるような気がする。
214nobodyさん:2011/10/18(火) 06:58:20.05 ID:???
flockは使えない場合があるので(具体的には自分で調べてくれ)
その場合はmkdirなり使うとかの、別の方法で対処すると思う。
プロとかアマとかはあんまし関係ないんじゃないだろうか。
215nobodyさん:2011/10/18(火) 12:47:22.63 ID:???
今のご時世でもflockが使えないとかあるの?
216nobodyさん:2011/10/18(火) 16:58:19.77 ID:???
ご時世関係ない
217 忍法帖【Lv=16,xxxPT】 :2011/10/18(火) 17:43:19.26 ID:???
>>212
イントラでperl使ってるけど…
ごめん、DB(PostgreSQL)つかってる。
月並みだけど、
DB>flock>その他の手段
だよね。
218nobodyさん:2011/10/18(火) 17:48:49.73 ID:???
横槍失礼。
デッドロックに対する対応だけど、
プロセスがkillされるような事態に備えて $SIG でトラップすべきか、
次実行されたときにデッドロックされたファイル情報から指定時間経過してればデッドロックと判断。
どっちがいいんでしょうね。
トラップした方がスムーズにいけるっぽいけど、他の部分で別のトラップがされると実行されない可能性もあったりするんだよね。
迷うわぁ・・・
219nobodyさん:2011/10/18(火) 22:08:36.70 ID:???
デッドロックはバグだ。
デッドロックしないようにつくれや
220nobodyさん:2011/10/18(火) 22:33:11.15 ID:???
DB使う。
221nobodyさん:2011/10/18(火) 22:58:12.17 ID:???
>>219さんは$SIGを適切に設定してる感じですか?
222nobodyさん:2011/10/18(火) 23:25:30.92 ID:???
$SIGなの? %SIGじゃないの?
223nobodyさん:2011/10/19(水) 00:20:24.38 ID:???
$SIG{} って書いてから {} だけ消したので修正ミスです ^-^;
224nobodyさん:2011/10/19(水) 00:46:29.74 ID:LOxxA4S5
GDで文字列を画像に変換するとき
widthを入力しないといけませんよね
全角文字だけなら計算できるのですが、半角英数カナなどが含まれるので余白が発生してしまいます。
あらかじめ文字列の長さをpixelで計算する方法はありませんか?
225nobodyさん:2011/10/19(水) 09:54:29.71 ID:???
何も調べずに書くが
cp932に変換してバイト数を調べるのはどうか
226nobodyさん:2011/10/19(水) 10:42:15.21 ID:???
>>224
@bounds = GD::Image->stringFT($fgcolor,$fontname,$ptsize,$angle,$x,$y,$string)
227nobodyさん:2011/10/19(水) 14:19:45.05 ID:???
>>226
完璧です。ありがとうございました。
228nobodyさん:2011/10/21(金) 17:01:48.08 ID:???
GD で機種依存文字を使えるようにするための方法はありますでしょうか
229nobodyさん:2011/10/22(土) 05:11:26.88 ID:???
time_%2F_1319178123_%2F_name_%2F_%82r%82%81%81%99%82k%82%85%82%85_%2F_title_%2F_%82%BD%82%A2%82%C6%82%E9.txt

現在ファイルがopenできなくなると言う罠に陥りました。
windows7でこうゆうファイル名なんですが、コレ問題ありますか?
運用はunix系で考えているんでそっちでも問題あれば教えてください。
230nobodyさん:2011/10/22(土) 05:13:47.30 ID:???
すみませんなんでもないですopenでしました。
231nobodyさん:2011/10/22(土) 09:48:47.25 ID:???
>>230
「き」と「し」を打ち間違えるとは珍しい。
232nobodyさん:2011/10/22(土) 20:17:03.51 ID:???
>>229をデコードしたヤシは挙手ノ
233nobodyさん:2011/10/22(土) 21:14:46.30 ID:???
Sa☆Lee って何だ?
234nobodyさん:2011/10/22(土) 21:57:21.39 ID:???
Sa☆Leeでぐぐったヤシは挙手ノ
235nobodyさん:2011/10/22(土) 22:19:39.38 ID:???
なんかの罠かと思ってスルーしてた
236nobodyさん:2011/10/24(月) 13:03:32.39 ID:???
ハッシュの中の配列に、値を追加したいときはどうすればできますか?

こうすると
push($h{$i}->[0], "aaa"));

このようなエラーになります。
Type of arg 1 to push must be array (not array element)
237nobodyさん:2011/10/24(月) 13:36:02.75 ID:???
push @{$h{$i}}, "aaa";
238nobodyさん:2011/10/24(月) 13:50:46.81 ID:???
>>237
上手くいきました。ありがとうございます。
こんな書き方理解できない。もうPerlやりたくない。
239nobodyさん:2011/10/24(月) 13:58:00.35 ID:???
同じプログラムをRubyとPHPとPythonでは書き直せるんですけど、
Perlだけ作法が全然違うからわかわからないんですけど、どうすればいいですか?????????
240nobodyさん:2011/10/24(月) 15:33:37.66 ID:???
Perl5.14でその配列が既に存在していれば、

use v5.14;
push $h{$i}, "aaa";

でいけるかな?
241nobodyさん:2011/10/24(月) 17:29:05.68 ID:???
>>239
全然違うってほどのもんじゃないとは思うけど。
例えばどんなところが書き直せないの?
242nobodyさん:2011/10/24(月) 19:39:40.90 ID:???
むしろその中だと、PHP←→Perlが一番簡単な気がするんだw
243nobodyさん:2011/10/24(月) 23:41:27.27 ID:???
>>241
ハッシュとか配列とかの操作でカッコとか記号とかが覚えられない。
代入するときも表示するときもアクセスの仕方が違ったりして覚えられない。ダンプするのも一苦労。
クラスのnewのblessとか未だに何なのかわからない。祝福とは???
リファレンスとかスカラーとかレキシカルとか聞き慣れない用語ばかり出てくる。
スコープとかクロージャとかJavaScriptの悪夢がよみがえる。
とにかく記号ばっかりで暗号いじってるみたいな意味不明さが怖い。

$hoge; $hoge{0}; $hoge->{0}; @hoge; @hoge{0}; @hoge->{0}; %hoge; %hoge{0}; %hoge->{0};
${$hoge}; @{hoge}; @{$hoge}; {@{$hoge{0}}} @{$hoge->[0]}; %{$hoge->[0]}; %{$hoge->{0}}

どれだよ!!!!!!!!111111111
244nobodyさん:2011/10/24(月) 23:51:16.92 ID:???
独特の表記とか用語に拒否反応ってのはわからんでもないけど、
スコープとかクロージャ駄目ってんじゃ他の言語もまともに使えてないだろ……
245nobodyさん:2011/10/24(月) 23:54:49.09 ID:???
>>243
意味不明って、単にPerlを知らないだけでは。
慣れればおいしいよ。
246nobodyさん:2011/10/25(火) 00:14:38.50 ID:???
$hoge; スカラ
$hoge{0}; ハッシュ
$hoge->{0}; ハッシュへのリファレンス
@hoge; 配列
@hoge{0}; エラー 配列へのアクセスは $hoge[0] でアクセス
@hoge->{0}; エラー 配列へのリファレンスは $hoge->[0] でアクセス
%hoge; 連想配列
%hoge{0}; 記述エラー 連想配列内の要素は $hoge{0} でアクセス
%hoge->{0}; 記述エラ 連想配列へのリファレンスは $hoge->{0} でアクセス

${$hoge}; スカラのデリファレンス
@{hoge}; エラー
@{$hoge}; 配列のデリファレンス
{@{$hoge{0}}} 連想配列内の配列をデリファレンス ($hoge{0} の中に配列が入っている) ただし外の {} は括る必要なし。 この場合 {} はブロックになる。
@{$hoge->[0]}; 配列へのリファレンスの中の配列
%{$hoge->[0]}; 配列へのリファレンスの中の連想配列
%{$hoge->{0}} 連想配列へのリファレンスの中の連想配列

こんな感じのも良く使うので覚えた方がいいかも。
$hoge = {
  'array' => [], 連想配列へのリファレンスの中に配列を作る
  'hash' => { 連想配列へのリファレンスの中に連想配列へのリファレンスを作る
    'key1' => 'val',
    'key2' => 'val',
  }
};
それぞれへのアクセスは
$hoge->{'array'}->[1];
$hoge->{'hash'}->{'key1'};
となる。
247nobodyさん:2011/10/25(火) 00:41:32.32 ID:???
> @hoge{0}; エラー 配列へのアクセスは $hoge[0] でアクセス

エラーではない
が、スライスを理解して使っているわけではなく、たまたま動いているだけ、の初心者が多いと思う
248247:2011/10/25(火) 00:42:17.13 ID:???
{} と [] を見まちがえた。ごめん。
249nobodyさん:2011/10/25(火) 01:04:32.90 ID:???
@hoge{0} なら %hoge に対するハッシュスライスでしょ
warnings 有効なら @hoge{0} は警告出るだろうが、
@hoge{0..2} とか、 my @keys = (0); @hoge{@keys} なら問題ないはず
250nobodyさん:2011/10/25(火) 01:31:51.65 ID:???
指摘のある通り、%hoge; と宣言されてるなら @hoge{0} は動作する。

けどね。
質問者がくじけてる部分を考えたらスライスは考えないほうがいいのでは?
という意味からエラーっていうことにした。

まぁ、言葉が足りなかったってのもあるけど ^-^;
251nobodyさん:2011/10/25(火) 01:51:36.00 ID:???
>>246
> @{hoge}; エラー
エラーではない。

全ての変数や関数へのアクセス方法で一番冗長な書き方は sigil { (何か) } ([添え字]|{キー})
の形で、何かが裸の語なら変数名、リファレンスならデリファレンス、
それ以外なら何かの値を名前としたシンボリックリファレンスと解釈される。
通常の変数へのアクセスは、裸の語をデリファレンスすると捉えてもいい。

${ foo } … 通常の変数。{} は*省略可能*。 ${foo} = "foo${foo}foo$foo"; # ok
${ "foo" } … シンボリックリファレンス
${ $foo } … スカラーリファレンス $foo をデリファレンス
${ 'f' . 'oo' } … 式の値を名前としたシンボリックリファレンス
${ \ foo('bar') } … foo('bar') の戻り値のリファレンスのデリファレンス

http://perldoc.jp/docs/perl/5.10.0/perldata.pod#Slices
> (引用注: 添え字/キーの) かっこの種類(大かっこか中かっこか)は、見ているものが配列か
> ハッシュかをつかさどっています。一方、配列やハッシュの先頭の記号 ('$' か '@') は、
> 返ってくるものが単一の値(スカラ)か、複数の値(リスト)かを示しています。

use warnings; my @{foo} = ('a'..'f'); my %{bar} = ('g'..'j');
print ${foo}[3]; # 'd' へのアクセスで "d" を表示
print @{foo}[3]; # 警告有り。('d') へのアクセスで "d" を表示
print @{foo}[3,4]; # ('d','e') へのアクセスで "de" を表示
print ${foo}[3,4]; # 警告有り。リストをスカラーとして評価すると最後の値が返されるので "e" を表示
print ${bar}{'g'}; # 'h' へのアクセスで "h" を表示
print @{bar}{'g'}; # 警告有り。('h') へのアクセスで "h" を表示
print @{bar}{'g','i'}; # ('h','j') へのアクセスで "hj" を表示
print ${bar}{'g','i'}; # キー "g$;i" へのアクセスになるので undef
252nobodyさん:2011/10/25(火) 03:20:14.95 ID:???
> print ${bar}{'g','i'}; # キー "g$;i" へのアクセスになるので undef
これだけ知らなかったわ。awk 由来なのかな。
まあ積極的に使う意義は無さそうだし、
人のコードで見かけることもないから覚えなくてもいいよね。
253nobodyさん:2011/10/25(火) 22:21:51.58 ID:???
>>243
> クラスのnewのblessとか未だに何なのかわからない。祝福とは???
blessは意味わからないよね。
あれ、祝福とか変な言葉で説明するからわからんのさw
オレ流に説明してあげよう。

まず、これを実行してみよう。Dumperは変数の中身を表示する関数だ。use Data::Dumperが必要。
my $a = {key=>1};
print Dumper($a)

以下のように表示される。(改行インデントは折りたたむ)
そう、ようするにただのハッシュだ。
$VAR1 = {'key' => 1};


次に次の命令を実行してみよう。
my $a = {key=>1};
bless($a, "CLASS");
print Dumper($a)

以下のように表示される。さっきのハッシュの周りにCLASSが追加されている。
VAR1 = bless(  {'key' => 1},  'CLASS' );

つまりだ、これはCLASSという名前のクラス名(モジュール名)付きのハッシュということだ。
このモジュール名付きのハッシュにたいして、以下のように->を使って呼び出しをすると、
$a->foo()

$aにはCLASSというモジュール名が結びついているため、CLASS::foo()を呼び出すんだなとPerl実行環境は理解できる。
その時CLASS::foo()の第一引数に$aを渡すことで、foo()の中で$aの値の操作することが可能にある。

これでCLASSクラスのfoo()メソッド呼び出しの仕組みと、$aをCLASSクラスのインスタンスに変換することができた。
254nobodyさん:2011/10/25(火) 22:33:18.24 ID:???
もう一つ、$a->foo() という書き方。

$a に bless使ってCLASSと結びつけたハッシュが入っていれば、
CLASS::foo()が呼び出されるわけだが、

$aは文字列でもよい。つまり、
$a = 'CLASS';
$a->foo();
この方式でもCLASS::foo()が呼び出せる。
通常は、CLASSを$aに入れずにそのまま書いて、CLASS->foo() となる。

でこれが foo()じゃなくて new() だと、CLASS->new() となる。
呼び出されるのは、当然CLASS::foo(); そして foo() の第一引数にはCLASSという文字列が入っている。

これを利用してCLASS::newされた時に、CLASSに結びつけたハッシュ、
つまりCLASSのインスタンスを返すことで、Perlにおけるnewの仕組みとなる。

あと余談。殆どの場合ハッシュにCLASSを結びつけるのだが、
別にただの値にCLASSを結びつけるのも一応可能。
255nobodyさん:2011/10/25(火) 22:34:03.01 ID:???
訂正
×呼び出されるのは、当然CLASS::foo(); そして foo() の第一引数にはCLASSという文字列が入っている。
○呼び出されるのは、当然CLASS::new(); そして new() の第一引数にはCLASSという文字列が入っている。
256nobodyさん:2011/10/25(火) 22:36:14.83 ID:???
> あと余談。殆どの場合ハッシュにCLASSを結びつけるのだが、
> 別にただの値にCLASSを結びつけるのも一応可能。


ただの値にblessはできんか。
何かしらの値のリファレンスにblessできる。
257nobodyさん:2011/10/25(火) 23:11:45.61 ID:???
system("wget $url");
を使ってファイルをダウンロードしたいのですがうまくいきません。
perl というかwget の使い方の問題なのかもしれませんが、
適切な書き方をご存知のかたがいらっしゃったらおしえていただけませんか?

ダウンロードしたいファイルは以下のURLです。
ttp://ncode.syosetu.com/txtdownload/dlstart/ncode/108715/?no=1&hankaku=0&code=utf-8&kaigyo=CRLF

エラーとしては、こう言われます。
index.html?no=2&hankaku=0&code=utf-8&kaigyo=CRLF: Invalid argument
Cannot write to `index.html?no=2&hankaku=0&code=utf-8&kaigyo=CRLF' (Invalid argument).
258nobodyさん:2011/10/25(火) 23:53:11.13 ID:???
自分は、たまーにハッシュに名前が欲しくて bless する事もあるw

use LWP::Simple;
my $data = get('URL');

特に認証がなければ、これで取得できるかと。

自分は

use LWP::UserAgent;
use HTTP::Request::Common;
use utf8;
my $ua = LWP::UserAgent->new;
 〜agent とか timeout とか max_redirect とか cookie の設定〜
my $req = GET('URL');
my $res = $ua->request($req);
my $content = $res->code() eq '200' ? decode('utf-8', $res->content()) : '';

ってやってる。
手順が多いけど、自分の頭ではこの方が使いやすい。

$res->code() eq '200' の部分は $res->is_success とかで置き換えられるけど、回線がパンパンのときに失敗すると
is_success は 1 を返すので信用出来ない。
HTML の取得なら、$res->content() に </html> が含まれるかどうかで判断した方が良い。
つっても、殆どの場合は is_success や is_error は正しく動作する。
259nobodyさん:2011/10/26(水) 01:13:19.12 ID:???
>>257
wget は特に指定がなければサーバのパスに対応するファイル名でローカルに保存しようとするから、
? はファイル名に使えねえよと言われてるのでは。Windows ないから試せないけど。

>>258
sub is_info ($) { $_[0] >= 100 && $_[0] < 200; }
sub is_success ($) { $_[0] >= 200 && $_[0] < 300; }
sub is_redirect ($) { $_[0] >= 300 && $_[0] < 400; }
sub is_error ($) { $_[0] >= 400 && $_[0] < 600; }
sub is_client_error ($) { $_[0] >= 400 && $_[0] < 500; }
sub is_server_error ($) { $_[0] >= 500 && $_[0] < 600; }
# HTTP::Status より。

失敗したにもかかわらず is_success が真を返すというなら、
まず疑うべきは LWP でなくサーバ側のレスポンスでは?
原因がクライアント/サーバ/回線/他のいずれにせよ、
負荷等が原因で200以外の2xxが返ってくる状況なんてちょっと想像つかんが。

decode('utf-8', $res->content()) はよっっっぽど古いバージョンの LWP じゃない限り
$res->decoded_content(charset => 'utf-8') のほうがよかろ。
260nobodyさん:2011/10/26(水) 01:38:17.35 ID:???
>>259
失敗なのに is_success が成功を返すのは少々特殊な状況なのは分かってる。

自宅でサーバー動かしてて家のルータは BA8000Pro なんだけど、BitTorrent で Linux ISO を放流してる。
バージョンアップがくるとコネクションがすごい数やって来て、NAT のテーブルが溢れて (上限は 2600)
名前解決すら頻繁に失敗するほど不安定になる。

この状況下で LWP で GET とかすると is_success が成功を返しても、->content() が全てを受け取ってないという事が起こる。

そのほかの環境は弄らずに BitTorrent だけ止めると LWP は正常に送受信できる。
これは何度も再現するのはテスト済。

ちなみに BitTorrent を動かしてるのは WEB サーバーとは別の PC です。
最近は BitTorrent 動かしてないからこういった症状ともおさらばで快適人生♪



>> decoded_content
おぉ〜、こんなメソッドあったんですね。ありがとう!
常々 Encode 呼び出すのめんどくせーって思ってたんで助かる。
261nobodyさん:2011/10/26(水) 02:43:24.74 ID:???
>>259
>>257です。
アクセスが出来ないじゃなくて、書き込みができないっていう意味だったんですね。
もっと自分でよく考えてみるべきでした。

-Oオプションを付けて書き込むファイル名を指定したところ上手くいきました。

知恵を貸していただきありがとうございます。
262nobodyさん:2011/10/27(木) 00:59:33.75 ID:???
>>244-256
あんなふざけたレスにマジレス返してくれてどうもありがとうございます。
まだ全部は試せてないですが、>>246とか物凄く参考になっています。
perldoc.jpなども読んで、もう少し勉強してみますね。
263nobodyさん:2011/10/27(木) 01:39:37.97 ID:???

変数名の前の @、$、% の意味 (* ってのもあるけど、難しいので放置で OK)
変数に代入するときの { }、[ ]、( ) の意味を覚えるだけで、理解度はかなり違うと思います。

あとは perl の自由な書き方に慣れていただくしかw
264nobodyさん:2011/10/27(木) 16:41:18.27 ID:???
たまに間違う… そういえばあんまり代入の時に [ ] って使わないなあ。
使ったことがないわけじゃないんだけど。
265nobodyさん:2011/10/27(木) 18:34:30.14 ID:???
最近は面倒くさいので $data = [] とか $data = {} とかで済ますこと多いな。
266nobodyさん:2011/10/28(金) 20:00:02.80 ID:???
Perlでw3mのようなコンソールアプリケーションを作る方法はあるのでしょうか?
環境はLinuxです。

よろしくお願いいたします。
267nobodyさん:2011/10/28(金) 20:16:08.47 ID:???
curses を扱うモジュールはあるみたいだし、できるんじゃね
Python とかのほうが向いてる気はするけど
268nobodyさん:2011/10/30(日) 22:07:34.60 ID:???
みなさんモデリングツールでUMLは使ってますか?
もし使ってる方はどのソフト使ってますか?

ttp://hibari.2ch.net/test/read.cgi/tech/1147499933/
↑ここでperlの話題がなく、「perl uml」で検索してもそれらしいものが見つからなかったので質問しました。
UMLを勉強しようと思うのですがどのツールがいいのかもわかりません。。
269268:2011/10/31(月) 00:15:05.76 ID:???
>UMLを勉強しようと思うのですがどのツールがいいのかもわかりません。。

これはココだとスレ違いですね。
この一文は無視して下さい。
270nobodyさん:2011/11/01(火) 11:30:50.31 ID:???
バイナリデータについて質問です。
docomo携帯の太陽のSJIS絵文字コード(F89F)を表示しようとしたのですが、
(1)は表示されて、(2)は単なる文字列になっているようでした。
\x{}といった表記ではバイナリにならないのでしょうか?
また、バイナリにする場合、""での設定やpack()など色々あると思うのですが、
処理が速いのはどの方法になるのでしょうか?

(1)my $sun = "\xF8\x9F"

(2)my $sun = "\x{F89F}"
271nobodyさん:2011/11/01(火) 13:02:20.96 ID:???
>>270
http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators
> If the number is 256 (0x100, 0400) or above, Perl interprets it as a Unicode code point
> and the result is the corresponding Unicode character.

http://www.nttdocomo.co.jp/service/developer/make/content/pictograph/basic/

よって iモードの Shift_JIS で "\xF8\x9F" に割り当てられている絵文字を
iモードの UTF-8 のページで出したければ "\xEE\x98\xBE" 。
(Perl用語で言うところの) Unicode 文字列なら "\x{E63E}" 。

参考ページ:
>>2
http://perldoc.jp/docs/perl/5.10.0/perluniintro.pod
http://search.cpan.org/dist/Encode-JP-Mobile/lib/Encode/JP/Mobile.pm
http://search.cpan.org/dist/Unicode-Japanese/lib/Unicode/Japanese/JA.pod
272270:2011/11/01(火) 15:15:58.07 ID:???
>>271
解決しました。
詳しい説明ありがとうございました。
273nobodyさん:2011/11/01(火) 15:20:02.29 ID:???
my $a = {
x => [ 'a', '1' ],
y => [ 'b', '2' ],
z => [ 'c', '3' ],
};

my $b = map{}???

上記で$bに下記のようにセットするにはmapのところをどのように書けばよいでしょうか。

$b = {
x => 'a-1',
y => 'b-2',
z => 'c-3',
};
274nobodyさん:2011/11/01(火) 15:36:36.16 ID:???
>>273
$b = { map { $_ => "$a->{$_}[0]-$a->{$_}[1]" } keys %$a };
# or
$b = { map { $_ => join '-', @{ $a->{$_} }[0,1] } keys %$a };
275nobodyさん:2011/11/01(火) 15:59:53.49 ID:???
>>273
my $b = { map ref $_ ? join('-', @$_) : $_, %$a };
my $b; %$b = map ref $_ ? "$_->[0]-$_->[1]" : $_, %$a;
276273:2011/11/01(火) 16:40:41.18 ID:???
>>274,275

解決しました。
回答が早くて助かりました。
ありがとうございます。
277nobodyさん:2011/11/01(火) 17:31:41.93 ID:???
サンプルとはいえ$aと$bは安易に使わないほうがいいぞ
278273:2011/11/01(火) 17:56:13.77 ID:???
use HTML::Template について質問です。
テンプレートファイル内で、「html出力させないコメント」というのは書けないのでしょうか?
例えば下記の#の行はoutputで出力させないといった動作をさせたいです。
もしできないのであれば、使用されている皆さんはコメントを書きたい時、<!-- -->で対応しているのでしょうか?

<html>
<head>
<title>hoge</title>
</head>
<body>
fuga<br>
#コメントを書きたい
</body>
</html>
279nobodyさん:2011/11/02(水) 04:52:21.99 ID:???
>>278
無かったはず。

ただし、new()の際にfilterを設定することで、前処理を行うことが出来る。
これを利用して、特定の文字列を置き換える(削除する)ことは可能。
詳細はドキュメントを参照されたい。

HTML::Templateは痒いところに届かないというか、痒み?何それ? って作り方だからなあ。
非PGのデザイナーにテンプレートファイル作りを任せるなら、これくらいじゃないと使ってくれなかったりするがw
280nobodyさん:2011/11/02(水) 07:58:44.36 ID:???
>>276
案の定Wikipediaの丸暗記か
281nobodyさん:2011/11/02(水) 10:15:20.86 ID:???
>>280
君はまた見えない敵を作って、勝手に戦うのかい?
282デフォルトの名無しさん:2011/11/03(木) 03:59:56.91 ID:???
>>280

おみそれいたしました。
丸暗記だと応用が効かなくて行き詰ってしまうことが多いです。
283nobodyさん:2011/11/03(木) 20:45:59.15 ID:???
↓こちらのスレで誘導されてこの板に来ました。

Perlについての質問箱 49箱目
http://hibari.2ch.net/test/read.cgi/tech/1319953460/100-102n

Windows 2000、Activeperl 5.8 の環境で、
use Socket;
socket(・・・);
connect(・・・);
な感じでインターネット上のwebサイトからページを取得してるんだけど、
サイトの応答が遅いとき、応答が帰ってくるまでCPU負荷が100%近くになる。

これってどういった原因が考えられますか?
あるいは仕様でしょうか。
PCのスペックはWin2000を使っているというあたりで想像いただける通りかなりしょぼいですが、それにしても負荷高すぎかな、と。

Activeperlのバージョン上げれば直るのかな…
284nobodyさん:2011/11/03(木) 22:20:35.11 ID:???
パソコンを変えることができないなら、LANカードを取り替えるか
あるいは追加して、それを使うようにして対処。
今使っているLANカード+ドライバが割込みに対応した作りではない
のでCPU負荷が100%近くになっている。
285nobodyさん:2011/11/03(木) 22:28:37.56 ID:???
>>PCのスペックはWin2000を使っているというあたりで想像いただける通りかなりしょぼいですが
端折るな


ちなみに Pentium3 1GHz、ActivePerl 5.12 のうちの環境は sleep 使うと CPU 占有率が 80-90% とかになる。
286nobodyさん:2011/11/03(木) 22:52:53.96 ID:???
>>284
LANカードの問題ですか。
ノートだから交換や追加は難しいですね…
>>285
すみません。
Pen4M1.8G(但し1.2G動作)です。

ありがとうございました。
287285:2011/11/03(木) 23:57:43.11 ID:???
NetBurst か。
デスクトップの Pentium4 ですら同じくロックまで落とすと Pentium3 に負けるからなぁ・・・
ただそれ以外の部分 (チップセットとかね) は Pentium3 世代よりも上だから、CPU はボトルネックとは考えられないか。

古いノートだったら 10Base-T とかの可能性も否定できないよね。

あとアンチウイルスとかスパイウェア関連は外すのも手。
TCP/IP の入出力を監視してたりするので負荷が掛かるのは当たり前だから。

定期的にスクレイピングのために Perl スクリプト走らせてるんだけど、
今見たら 60-80% の CPU 占有率だった。


これ以上はハードとか OS の問題になってきそうなのでスレ違いどころか板違いすらにもなってくるかな?w
その前に色々書いておく。

特に大事なデータが無ければ OS 再セットアップして、アンチウイルスとかスパイウェア関連は入れない。

もし直らなければ、ノートの製造が AOpen や Acer などの安かろう悪かろう的なメーカーでないか確認。
なおかつ使用チップセットが Intel 以外だった場合は遅いのはハードウェアが原因と見て良いかと。

上記以外のメーカーで Intel チップセットの場合は >>284 が書いたとおり LAN カードが怪しいかも?
USB の LAN もあるけど、そもそも負荷が高いので使っちゃだめ。 32bit CardBus が付いてるならその LAN カードを。

これでも駄目なら投げ捨てる。
288nobodyさん:2011/11/04(金) 00:21:01.33 ID:???
CD起動のLinuxで同じスクリプトを実行してハードの問題かどうかを切り分けてみる。
289283:2011/11/04(金) 08:21:22.37 ID:???
>>287
ハードやOSの問題だと板違いですね。
ただ、ブラウザでアクセスしている場合にはそういった問題は発生しないのでperl側の問題という線も捨てきれないのかな、と。

ちなみに、常駐系のソフトは全て停止しても状態は同じでした。
とりあえず、まずはLANカードの線で、何か試す方法がないか検討してみます。

>>288
ちょっとハードルが高いですね。
Linixの知識は全くないので、そこにたどり着くまでの時間が取れそうにないです。

改めてありがとうございました。
290278:2011/11/04(金) 11:25:15.47 ID:???
>>279
最初に任意のルーチンの割り込みができるんですね。
いまバタバタしてるので時間が空いたらじっくり調べてみます。
ありがとうございました。
291nobodyさん:2011/11/05(土) 11:43:23.98 ID:???
>>289
BIOSのIRQの設定も板違いですね。
そうだとするとLANカードを変えても同じことになりそうなので。
292nobodyさん:2011/11/06(日) 08:06:31.58 ID:???
$test . '_aiueo'

こうゆう文字列でマッチさせようとしたときに、何も考えずに書けば

/$test_aiueo/

だけど、これじゃ $test_aiueo っていう変数は無いからエラーになるわけで、
$test という変数の直後に半角英数でマッチさせるにはどうすれば良いのでしょうか?
293nobodyさん:2011/11/06(日) 08:12:06.72 ID:???
すんません解決しました。

/${test}_aiueo/

こうゆう書き方できるんですね。
$hash={} を %{$hash} とか普段から使ってるクセに、なんですぐに書けなかったんだろう。。。
294nobodyさん:2011/11/06(日) 10:03:01.99 ID:???
こういう
295nobodyさん:2011/11/06(日) 12:03:43.66 ID:???
作ったスクリプトのどこの部分が処理に時間が掛かってるのか知りたいです。

処理ごとにデバッグプリントすれば可能ですが、非現実的だし、
後々デバッグプリントを消すのも手間なので、Perlでどこの部分で
時間が掛かってるとかのデバッグというか、トレースというか、
そういう事は出来るモジュールなどはあるのでしょうか?

296nobodyさん:2011/11/06(日) 12:30:01.91 ID:???
297nobodyさん:2011/11/07(月) 11:15:35.01 ID:???
>>296
ありがとうございます。


#!/usr/bin/perl -d
use Devel::DProf;

で tmon.out を吐かせた後に dprofpp で得たいデータが取れました。
298278:2011/11/07(月) 14:03:34.80 ID:???
以前html::templateで質問したものです。
>>278の件は解決できました。
ありがとうございました。

もう一つ質問があります。
TMPL_INCLUDEのパスをcgi上でコントロールしたいのですが、下記のようなテンプレートはNGとなっています。

<TMPL_INCLUDE NAME="<TMPL_VAR NAME=incPath>">

そこでfilterを使って表現しようと思うのですが、どのようにすればよいでしょうか?
※cgi内の変数がfilter内のサブルーチンでそのまま使用できるのは確認できています。

my $incPath = './tmpl/inc.tmpl';
my $template = HTML::Template->new(
filename => './aaa.tmpl',
filter => sub{
my $ref = shift;
$ref =~ s/(\$[a-zA-Z0-9_]+)/eval($1)/g; #←ここの置換後の表現が思いつかないのでやりたいことのイメージを書いています。
},
);

--- template ---
<TMPL_INCLUDE NAME="$incPath">
299298:2011/11/07(月) 17:02:01.60 ID:???
>TMPL_INCLUDEのパスをcgi上でコントロールしたいのですが、

すみません。この一文はわかりづらいですね。
この文は無視してください。
300nobodyさん:2011/11/08(火) 02:25:10.62 ID:???
>>298
コメント削除の件は解決して何より。

インクルードファイルを動的に制御するなら、素直に<TMPL_IF>や<TMPL_UNLESS>で分岐させるのが良いのでは。
もしくは、CGI側で別途に読み込んで、<TMPL_VAR>で吐き出すか。

インクルードファフィルのルートディレクトリを指定するだけなら、
new()の時に path を指定することでコントロールできるっぽい。


【余談】
HTML::Templateは条件分岐がマトモに書けないから、可能なら拡張モジュールの利用も考えてみて。
自分は使ったことがないんだけど
http://search.cpan.org/~samtregar/HTML-Template-Expr-0.07/Expr.pm
とかどうだろうか
301298:2011/11/09(水) 16:21:33.08 ID:???
>>300
もしかして279の方ですかね?
またまたご意見ありがとうございます。

色々試行錯誤しましたが、今回はfilterに下記のようにして対応することにしました。
$replace_ref = {
HENSUU => 'hogehoge',
};

filter{
$ref = shift;
$$ref =~ s|\[\#.*?\#\]||gxms; # [# 〜 #]までをコメント
$$ref =~ s|\[\%\s+([a-zA-Z0-9_]+)\s+\%\]|$replace_ref->{$1}|gxms; # [% 〜 %]を置き換え
}

----- html -----(どんなフォーマットがHTMLに影響ないかわからなかったので変数置き換えはtemplate-toolkitを参考)
<html><body>
[# コメント #]
変数=[% HENSUU %]
</body></html>
---------------

HTML::Template::Exprいいですね。
HTML::Template::Proにも取り込まれてるんで、高速化したい時には置き換えが簡単そう。
HTML::TemplateはIF文が貧弱すぎる。
302nobodyさん:2011/11/15(火) 20:21:14.83 ID:???
パターンマッチについてなのですが、

-------------------
<span class="availGreen">在庫あり。</span> <a href="/gp/help/customer/display.html?&nodeId=915624">
在庫状況</a>について<br /> この商品は、<b><a href="/gp/help/customer/display.html?ie=UTF8&nodeId=64
3004">Amazon.co.jp</a></b> が販売、発送します。 ギフトラッピングを利用できます。
-------------------
この文字列(実際には改行は入っていない)から、「Amazon.co.jp」(他の店名になることもある))の部分だけを取り出す為に

if ( $_ =~ />(.*?)<\/a><\/b> が販売/ ) {print $1;}
とすると、
-------------------
在庫あり。</span> <a href="/gp/help/customer/display.html?&nodeId=915624">
在庫状況</a>について<br /> この商品は、<b><a href="/gp/help/customer/display.html?ie=UTF8&nodeId=64
3004">Amazon.co.jp
-------------------
までが拾われてしまいます。

if ( $_ =~ /この商品は、<b><.*?>(.*?)<\/a><\/b> が販売/ ) {print $1;}
とすることにより、目的は達成できたのですが、何故最初のがダメなのかが良くわかりません。

なお、直前の「643004」の部分は場合によって変わるのでキーワードには出来ません。
303nobodyさん:2011/11/15(火) 20:47:48.16 ID:???
何故って…
.*?にはタグ(<.*?>)を含まないなんてルールはないし
304nobodyさん:2011/11/15(火) 21:30:08.07 ID:???
最小マッチの「最小」の意味を勘違いしてるパターンと予想。
.*? か .* かで影響されるのは "</a></b> が販売" の部分の探し方であって、
マッチすること自体が確定したら最初の ">" の位置は動かない。

関係ないが、この手の情報取得は可能ならまずAPIを検討すべき。
泥臭くスクレイピングするとしても、よほど高速性を重視するとかでなければ
正規表現じゃなくてTreeBuilderとかでDOMをパーズするほうが安全。
305nobodyさん:2011/11/16(水) 00:15:29.63 ID:???
>>304
ありがとう。
最初の「>」で拾ってしまうんですね。

高速性の必要なものではなく、いくつかの商品の価格変化をログ取ってるだけなので、
API利用するところまでは考えてません。手続きめんどいので。
306nobodyさん:2011/11/16(水) 06:46:36.29 ID:???
>>305
拾いたい箇所が1ファイルに1箇所くらいで構造も単純ならパターンマッチングの方が
手っ取り早いよね。
でも構造が繰り返しだったりややこしかったりする時はWeb::Scraperとか便利よ。

>>304
パーズ? パース? ← parse
307nobodyさん:2011/11/16(水) 07:50:11.05 ID:???
考えるの面倒だからという理由で、モジュールに丸投げする底辺でゴメンナサイ
308nobodyさん:2011/11/16(水) 09:59:12.27 ID:???
そのためのモジュールでしょ 無問題
309304:2011/11/16(水) 10:04:04.24 ID:???
ありゃ。smooth(ズ)→スムース みたいなもんで英語では parz って発音するものだと思い込んでたからそれに合わせてたわ。
調べてみたらイギリス英語系の辞書だとパーズだけど、アメリカ英語でパースが一般的みたいだからそっちのほうがいいや。サンクス
310nobodyさん:2011/11/16(水) 16:16:46.49 ID:???
>>309
>イギリス英語

へー。良いことを知った。
311nobodyさん:2011/11/16(水) 16:34:39.13 ID:???
本当だ。
2つ発音されるね。

parseの意味 - 英和辞書 - goo辞書
http://dictionary.goo.ne.jp/leaf/ej3/61513/m0u/parse/
312nobodyさん:2011/11/16(水) 16:52:26.25 ID:???
そうか。どっちもありなんだ。
勉強になったぜ。
313nobodyさん:2011/11/16(水) 23:26:19.41 ID:???
テキストファイルから3行だけほしいときって、1行で記述することってできますか?

今は for で回して push してるんだけど、
@lines = <$fh> x 3;
みたいな感じで書けたら落ですよね。。。
314nobodyさん:2011/11/17(木) 00:05:31.82 ID:???
>>313
#!/usr/bin/perl -w
use strict;
my @line = (scalar <DATA>, scalar <DATA>, scalar <DATA>); # 幾つ?
print @line, "---\n"; seek DATA, -12, 1; @line = ();

@line = map scalar <DATA>, 0..2; # 0から2とは?
print @line, "---\n"; seek DATA, -12, 1; @line = ();

push @line, scalar <DATA> while @line < 3; # 意図が分かりやすい
print @line;

__DATA__
foo
bar
baz
quux
315nobodyさん:2011/11/17(木) 00:27:12.12 ID:???
やっぱ、なんかしらで回すしか無いですよね。
ありがとうございました。
316nobodyさん:2011/11/17(木) 00:48:38.68 ID:???
>>315
ループを避ける事自体が至上命令ならば >>314 の1番目か
$/ = \64; # 充分なサイズのバッファ
my @line = <DATA> =~ /^(.*\n)(.*\n)(.*(?:\n|\z))/;
317nobodyさん:2011/11/17(木) 00:53:27.15 ID:???
@line = (<DATA>)[0..2];
318nobodyさん:2011/11/17(木) 09:42:10.49 ID:???
至上主義ってわけじゃないんだけど、ループの中で特に処理をするわけじゃないから
1行で簡潔にできたら嬉しいよね〜

っていう程度です。
319nobodyさん:2011/11/18(金) 00:09:48.76 ID:???
ループを決して書こうとしない部下を思い出した。
そいつは自分自身がループして同じ内容を必要な行数分タイプしてたっけ。
320nobodyさん:2011/11/18(金) 09:22:43.24 ID:???
8bit機の時代はループの条件判定のタイムロスを惜しんで
ループ展開とかやったっけな。アセンブラで。
321nobodyさん:2011/11/18(金) 10:21:10.82 ID:???
ループではないけど、100程度のif文を自動生成するプログラムなら見たことがある…
322nobodyさん:2011/11/18(金) 21:40:15.63 ID:1hunDax1
入門書を読んでて気になったのですが
ダブルクォート文字列で使われるエスケープシーケンスと
マッチ演算子の中の正規表現で使われるエスケープシーケンスは
よく使われる改行文字(\n)やタブ(\t)などが両方にあるので
厳密に言えば違うけれども、大体同じものと理解していいのでしょうか?

それとも全く違う、あるいは全く同じものなのでしょうか?
323nobodyさん:2011/11/18(金) 21:56:27.18 ID:???
覚えることが少なくなるように同じ記法を採用しているだけで、
それを解釈するコードは文字列と正規表現では別物だと考えて
ください。
324デフォルトの名無しさん:2011/11/19(土) 13:39:08.87 ID:???
全く同じであれば、本の記述は1回のはず。
別物だから区別して書いてあって、本に2回出てくる。

でも覚えやすいように同じ記法にしている。
325nobodyさん:2011/11/23(水) 23:35:55.57 ID:???
やっと規制がとけました

>>323-324
ありがとうございます
326nobodyさん:2011/11/26(土) 22:25:41.09 ID:???
CGIに値を渡したいときの方法で質問です。

@ttp://example.com/index.cgi/1/2/

と、PATH_INFOで渡すのと

Attp://example.com/?a=1&b=2

と、.htaccessに「DirectoryIndex index.cgi」を書いてPOST風?(呼び方がわからない)で取得する方法があると思いますが、
みなさんどちらを使っていますか?
どちらを使おうか悩んでいます。
(最初、index.cgiを消してPATH_INFOで渡せればすっきりするなと思いましたが、それだとttp://example.com/1/2/となって
index.cgiを読ませる場所とPATH_INFOの切り分けができないと気づいて今に至っています)

個人の好みになるかもしれませんが、こっちをこんな理由で使っているという感想などいただけたら参考にしたいと思います。
ちなみにformタグではGETを使用しています。
327nobodyさん:2011/11/26(土) 22:49:02.08 ID:???
328nobodyさん:2011/11/26(土) 23:38:20.62 ID:zFlJhwY9
system()で外部コマンドを呼び出すと呼び出しは行われるのですが、そのあとの処理に進まずに
Internal errorになってしまいます。なにか呼び出し方があるのでしょうか

system '/bin/ls', "-la";
print "Location: index.html\n\n";
329nobodyさん:2011/11/26(土) 23:51:55.90 ID:???
そのスクリプトを手元で実行したことはあるかい?
330nobodyさん:2011/11/27(日) 00:07:55.85 ID:???
CGIで動かしてるんだったらHTTPサーバのログにエラー内容が記録されてるんじゃないか?
331nobodyさん:2011/11/27(日) 00:56:06.95 ID:E4v1+esL
malformed header from script. Bad header=total 68: test.cgi, referer: http://redhat6/test.html
とか出てます。Systemを実行しなければこのメッセージは出ないです。
332nobodyさん:2011/11/27(日) 01:07:18.85 ID:???
>malformed header
だからヘッダがどうなってるか見ろ
333nobodyさん:2011/11/27(日) 01:44:44.18 ID:E4v1+esL
ls -la とか バイナリの実行ファイルとかですが、、、
334nobodyさん:2011/11/27(日) 02:47:47.23 ID:???
うーん…
真っ先に HTTP ヘッダがなければCGIとして機能しないでしょ。
エラーになるのは当たり前。
でもって Location: で飛ばしてるんだから system '/bin/ls', '-la'; は全く意味がない。
仮に print "Location: index.html\n\n"; の次に置いても無視されるだけ。
そのCGIの目的(用途)は何なの?
335nobodyさん:2011/11/27(日) 03:52:11.45 ID:???
ん? Location: 〜 を print しようがスクリプト自体は最後まで走るでしょ?
問題は system の出力先が標準出力、つまり普通に print するのと同じところに行ってるせいで、
スクリプトからサーバーへ渡される出力が

total 8
drwxr-xr-x 2 nobody nogroup 4096 Nov 27 00:00 ./
drwxr-xr-x 3 nobody nogroup 4096 Nov 27 00:00 ../
Location: index.html

みたいになってて、
サーバーとしては改行2つより前の部分は HTTP ヘッダとして解釈しなきゃいけない、
でも Location 以外の行は正しい HTTP ヘッダではない。
だからそこで内部エラーとして止めてる、ってことでは?
CGI 試す環境ないんで推測だけど。
336nobodyさん:2011/11/27(日) 04:36:05.90 ID:???
>>335
だからそう書いてるだろ。
337nobodyさん:2011/11/27(日) 23:08:22.74 ID:???
>>332
「ヘッダ」が分からないので見ろといわれてる対象が分かっていない
に一票。

つまり
print "Location: index.html\n\n";
は、理解して書いているのではなく、他のプログラムのコピペ。
338nobodyさん:2011/11/27(日) 23:27:05.03 ID:???
print "Location: index.html\n\n"; の前に system を置いちゃうくらいだからそうなんだろうな。
339nobodyさん:2011/11/28(月) 01:55:16.13 ID:???
ここまで答えのようなヒントが出てれば、あとは大丈夫でしょう。きっと・・・
340326:2011/11/28(月) 15:55:21.96 ID:???
>>327

ありがとうございます。
作成中のものはエントリのページなのでPATH_INFOで渡したいと思います。

この場合、URLからindex.cgiを消して尚且つPATH_INFOを取得するには
どのようにしたら良いのでしょうか?

ttp://example.com/index.cgi/1/2/

ttp://example.com/1/2/
にして、index.cgiを実行し、PATH_INFOから"/1/2/"取得したい
341326:2011/11/28(月) 16:21:49.46 ID:???
>>340
を実現するためググってみました。

ttp://hatsugen.zakzak.co.jp/qa6717936.html

↑ここの「ANo.3」で下記のように書かれていました。


たとえば、httP://hoge.com/A/B というURLをブラウザに与えると、ブラウザはHTTPサーバー(hoge.com)に対して、/A/Bという
ファイルを送れと要求します。
サーバーはこれを探しますが、Bというファイルがなければ、それをディレクトリとみなして/A/B/として/A/B/を探します。
それが存在していれば開いてみます。
 httpd.confや.httaccessで下のように指定してあれば、
<IfModule dir_module>
  DirectoryIndex index.html index.htm index.cgi index.sh
</IfModule>
 前から順番にファイルを探して表示します。いずれもなければ、またこれも設定にしたがってディレクトリ内のファイル一覧を表示するか、
エラーを返すか、その指定もなければ/B/を切り捨てて環境変数に格納し、/Aについて同様な処理を繰り返します。


つづく
342326:2011/11/28(月) 16:23:22.87 ID:???
つづき

そこで下記を行いました。

@ttp://example.com/ の階層にindex.cgiと下記一行を書いた.htaccessを置きました。
DirectoryIndex index.cgi

Attp://example.com/でttp://example.com/index.cgiにアクセスしたことを確認しました

Bttp://example.com/a/にアクセスするとエラーになりました

ttp://example.com/a/というディレクトリは存在していないので
一つ上がったttp://example.com/のindex.cgiを探しに行くのではないかと思うのですが
何か間違えているのでしょうか?
どこをどうすればできるようになるのか教えてください。
343nobodyさん:2011/11/28(月) 16:28:04.90 ID:???
>>340-342
>>1
Apache〜嗜みとして〜 Part3
http://hibari.2ch.net/test/read.cgi/php/1043851302/
【Apache】mod_rewriteについて語るスレ
http://hibari.2ch.net/test/read.cgi/php/1023791370/
344342:2011/11/28(月) 23:12:53.78 ID:???
>>343
ここまでいくとCGIとは関係なくなってきますね。
誘導ありがとうございます。

質問は取り消します。
345nobodyさん:2011/11/30(水) 10:29:57.17 ID:gvpuZTLB
以前、Perlのマニュアル(リファレンスドキュメント)をダウンロードしたことがあったのですが、
今行ったら見つかりませんでした
どのページの、どの部分からダウンロードにいけるのでしょうか?

また、以前ダウンロードした時はは内容が英語でした
出来れば日本語版があればそちらをダウンロードしたいのですが、どこか内でしょうか?
346nobodyさん:2011/11/30(水) 10:51:48.72 ID:???
perldoc.jp
347nobodyさん:2011/11/30(水) 21:09:58.63 ID:???
Markdown.plの出力結果にhtml, head, bodyなどの要素を加えたいんですが
そういうオプションとかってデフォルトの機能にはないですよね?

出力されたhtmlファイルを開く→先頭に書き足す→末尾に書き足す→上書き保存
という処理をするスクリプトを書くということ以上の解決策ってないですよね?
348nobodyさん:2011/11/30(水) 23:31:46.18 ID:???
中間ファイル作らなくっても
先頭を書き出す→markdown.plを呼び出して結果を書き出す→末尾を書き出す→保存
でいいんじゃね?
349nobodyさん:2011/12/03(土) 17:25:31.47 ID:???
>>347
>上書き保存という処理をするスクリプトを書くということ以上の解決策

何をもって上/下と言っているのか分からんが、Markdown.pl に書き足す
方法はなぜ思い浮かばないのか。
350nobodyさん:2011/12/03(土) 19:26:36.05 ID:???
>>349
まあMarkdown.plはいじらないでそのまま使う方が自然だろう。
やるとしたら別名にリネーム(コピー)してから自分専用にカスタマイズ、かな。

ついでに350ゲト
351nobodyさん:2011/12/04(日) 11:44:58.71 ID:???
>>347
作者に要望を出す。これ最強。たぶんやってくれる。
352nobodyさん:2011/12/05(月) 11:39:58.61 ID:???
GoogleAnalyticsのモバイル版perlコードについて質問です。
下記の@の所って$ENV{'HTTP_REFERER'}が空だったら$refererはundefになりますよね?
ということはAの $referer eq "" でワーニングになるから、
修正したほうがいいですよね??

if ($referer eq "") { #→ ×
if (defined($referer) && $referer eq "") { #→ ○

#####################################################
# Copyright 2009 Google Inc. All Rights Reserved.
use URI::Escape;
use constant GA_ACCOUNT => 'MO-1887809-14';
use constant GA_PIXEL => '/ga.pl';

sub google_analytics_get_image_url {
my $url = '';
$url .= GA_PIXEL . '?';
$url .= 'utmac=' . GA_ACCOUNT;
$url .= '&utmn=' . int(rand(0x7fffffff));
my $referer = $ENV{'HTTP_REFERER'}; #@
my $query = $ENV{'QUERY_STRING'};
my $path = $ENV{'REQUEST_URI'};
if ($referer eq "") { #A
$referer = '-';
}
$url .= '&utmr=' . uri_escape($referer);
$url .= '&utmp=' . uri_escape($path);
$url .= '&guid=ON';
$url =~ s/&/&/g;
$url;
}
353nobodyさん:2011/12/05(月) 13:46:44.74 ID:???
しっかりと書くなら
my $referer = exists $ENV{'HTTP_REFERER'} ? $ENV{'HTTP_REFERER'} : '-';
Referer: 0 は明らかに無効だから単に
my $referer = $ENV{'HTTP_REFERER'} || '-';

あと、uri_escape()でやるならURIつかったら
sub {
my $uri = URI->new(GA_PIXEL);
$uri->query_form(
'utmac' => GA_ACCOUNT,
'utmr' => $ENV{'HTTP_REFERER'} || '-',
...
);
return $uri;
}
354352:2011/12/05(月) 15:34:16.27 ID:???
>>353

my $referer = $ENV{'HTTP_REFERER'} || '-';

が自分にはしっくりきました。
ありがとうございます。
よくみたら $query は使ってないですね。
よくみてたら何か色々おかしなコードだ。

とりあえず感謝です。
355Web初級:2011/12/08(木) 16:43:00.58 ID:bceXKvCi
超初心者です。仕事でホームページ1つ作る事に成りました。
職場では私しかDTPの経験がありません(Webかじったのも私一人)。
イラストレーターからドリームウエバーへ、やっと持って来れるようになりましたが、
コーディングがさっぱり上手く行きません。2度ほどWebスクールにデータ持参で習いに
行きましたが、真似してもさっぱり上手く出来ません。
これじゃ何回習っても、金捨てに行くようなもので困っております。
簡単なビジュアルなので、ハイレベルな技術はいらないと思います。
分かりやすい本とかあれば最高なんですが、なにか名案ありませんか。
よろしくお願いします。
356nobodyさん:2011/12/08(木) 17:01:30.14 ID:???
>>1を読むこともできないようじゃあ何もできないだろうねえ
357Web初級:2011/12/08(木) 18:06:56.56 ID:bceXKvCi
はははは‥…失礼しました。

nobodyさんが即答するスレでしたか、暗号のようなQAで驚きました。
おみそれしました。
358nobodyさん:2011/12/08(木) 23:09:44.53 ID:???
>>355
355のレベルでこれから頑張るよりも専門の会社に発注して、
自分は本業に専念したほうがよい
359 ◆gHpPvpjxUOSB :2011/12/09(金) 00:04:54.14 ID:???
格安で俺が引き受けちゃるけんね
360nobodyさん:2011/12/09(金) 10:54:15.39 ID:???
>>355
そりゃコーディング違いだ。
私もコーディングは外注した方が幸せになれると思う。そんな付け焼き刃じゃどうにもならんでしょ。
361Web初級:2011/12/10(土) 08:46:00.83 ID:Suxg5Gi2
買って来ました「ドリームウエバーCS5.5スーパーリファレンス」と
「3週間でマスターWebデザインの教室」の2冊、これ見て仕上げる
しかありません。やっと再就職して、よこされたのがこの仕事。
試用期間中だし、だれもウエブの事は知りません。
やるしかありません。
362nobodyさん:2011/12/10(土) 08:57:02.65 ID:???
>>361
それと、Perlになんの関係が?
363nobodyさん:2011/12/10(土) 09:12:56.68 ID:???
>>362
何がわからないのか、わかっていないやつだな。
364nobodyさん:2011/12/10(土) 09:49:06.29 ID:???
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チラシの裏にでも書いてろ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
365nobodyさん:2011/12/10(土) 16:44:40.44 ID:???
最近では、広告も電子化されてしまい、チラシといっても
なかなか通じません。

チラシの裏エディタを紹介しておきますね。
(私も愛用しています)

ttp://yuukiremix.s33.xrea.com/chirashi/

>>361
たぶん、それはくびっていう意味だと思うけど。
366nobodyさん:2011/12/10(土) 17:53:31.12 ID:bJAhMBsm
Perl CGIで、
WEBページにラジオボタン、チェックボックスを配置して、
保存ボタンで各項目のチェック状態をDBに保存して、
次回ページを表示するときに、前回のチェック状態を再現させたいのです。

DBに保存まではできたのですが、ラジオボタンとかのチェック状態を設定するにはどうやればいいのでしょうか?
367nobodyさん:2011/12/10(土) 18:04:10.96 ID:???
>>366
ラジオボタンやチェックボックスなら該当するinput要素に、
checked="checked"
ってすればいいとおもいます。
368nobodyさん:2011/12/10(土) 18:14:29.61 ID:bJAhMBsm
>>367
HTMLのコードを出力する時に
if (checked) {
print <input type="radio" checked="checked">
else {
print <input type="radio">
}
とかやるってことですか?
数が多くてすごい大変なんだけど、これ普通のやり方なのかな
369nobodyさん:2011/12/10(土) 18:16:11.86 ID:phxklYwZ
>>366

どんだけ馬鹿なの?消えろ

おおwwwwだっせーーーーーーーwwwwwwwwwwwwww

そんなチェック状態とか簡単に考え付くだろwwwwwwww
引き継げばいいだけなのにwwwwwwwwwww
頭悪すぎ

自分=ウサギ
お前ら=カメ

まじまだまだ寝てても平気みたいだね
370nobodyさん:2011/12/10(土) 18:18:06.55 ID:phxklYwZ
こいつらがやってること全部できる

低レベルすぎる

やっぱりセンスが違うんだなあ
371nobodyさん:2011/12/10(土) 18:23:07.58 ID:???
>>368
ヒアドキュメントに変数埋めといて、該当箇所だけにchecked="checked"が展開されるようにするとか、
input要素はループで生成するようにしておいて、if文減らすとか、とか、
372nobodyさん:2011/12/10(土) 18:27:04.72 ID:???
保守性とるなら、配列かハッシュにラジオボタンやチェックボックスに必要な内容を入れといて
ループで処理かなぁ。
373nobodyさん:2011/12/10(土) 21:39:06.91 ID:???
.emlからbase64の部分だけ正規表現で抽出する方法ってありますでしょうか?
374nobodyさん:2011/12/10(土) 22:10:18.53 ID:???
あります。
375nobodyさん:2011/12/11(日) 11:50:08.36 ID:???
えっ
376nobodyさん:2011/12/11(日) 12:15:53.32 ID:???
なり
377nobodyさん:2011/12/11(日) 16:38:26.87 ID:???
>>361
Perlでやれって言われたの?
今から短時間で実装するならPHPしかないんじゃないの。
Perlでテンプレートエンジンとウェブアプリケーションフレームワークの環境構築とかしてる時間はたぶんないんでしょう?
378nobodyさん:2011/12/12(月) 10:19:09.76 ID:???
>>373
どなたか具体的な方法をお願いしますです
379nobodyさん:2011/12/12(月) 11:29:18.56 ID:8Y5nZNmR
本文なのか添付なのか、plainなのかhtmlなのか・・・
質問がざっくばらんすぎなのでは?
380nobodyさん:2011/12/12(月) 12:26:49.55 ID:???
ざっくばらんの使い方おかしくね?
アバウトすぎるとでも言いたいんだろうけど
381nobodyさん:2011/12/12(月) 14:15:46.02 ID:???
ページにアクセスすると、POSTじゃない認証(Basic認証?)を使って表示されるページってありますよね
そのページをperlで取得しようと思っています。
ですが何度やっても401が帰ってくるばっかりでまったく進展しない・・・
#!/usr/local/bin/perl
$|=1;
print "Content-type: text/html\n";
print "\n";

#*一度authorization_basicでやってみました。*
#*他のサイトではうまくいったのですが 目的のサイトでは動作しなかった為*
#*ntlmを試しています*
use LWP::UserAgent;
use HTTP::Request::Common;

my $url = '認証が必要なURL';
# Set up the ntlm client and then the base64 encoded ntlm handshake message
my $ua = new LWP::UserAgent(keep_alive=>1);
# $ua->credentials('ホスト:80', '', "???\\ID", 'パスワード');
$request = GET $url;
print "--Performing request now...-----------<br>\n";
$response = $ua->request($request);
print "--Done with request-------------------<br>\n";
if ($response->is_success) {print "It worked!->" . $response->code . "<br>\n"}
else {print "It didn't work!->" . $response->code . "<br>\n"}

????の部分に思い当たる物が無いので ????\\を消して見てもだめでした。
どういった動きをしているのか、またなぜ失敗しているのかも負えず・・・困っています
宜しくお願いします
382nobodyさん:2011/12/12(月) 18:29:36.74 ID:8Y5nZNmR
Google さんで 「LWP::UserAgent ベーシック認証」 でググると、一番上に出てくるんだけどね。
ちゃんと調べろよカス。



use strict;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => 'http://www.example.com/secret.html');
$req->authorization_basic('fuga', 'hoge'); # 'ID', 'PASS'
my $res = $ua->request($req);

あと credentials はダイジェスト認証用じゃないかなと。
ベーシック認証なら authorization_basic を使う。
「ダイジェスト認証 領域名」 でググれば、知識も深まるかと思います。


ちなみに、僕は HTTP::Request::Coomon を使って $req = GET('http://www.example.com/secret.html'); って
やる方が好きです。
383nobodyさん:2011/12/12(月) 18:48:35.31 ID:???
>>382
どうもありがとう御座います
やってみましたが401が帰ってきました・・・

何でなんだろう?
WWW-AuthenticateにはNegotiateとNTLMって出てるのにorz
384nobodyさん:2011/12/12(月) 19:57:09.04 ID:???
NTLM ・・・ Windows認証か ・・・
http://perldoc.jp/docs/modules/libwww-perl-5.813/LWP/Authen/Ntlm.pod
領域名の部分をちゃんと指定すれば、最初のコードで認証できるかと。
とりあえずサーバーにIISを使ってるなら、そう書いた方が良いと思う。
385nobodyさん:2011/12/12(月) 20:04:00.94 ID:???
>>384
すみませんサーバー側でIISを使ってるのかどうか 確認はしたのですが、確かではないのでorz
perlのコーディングとは違う質問で申し訳ありませんが、領域名っていうのはいったい何を指定すれば・・・
クライアント側で調べて分かる物なんでしょうか
386nobodyさん:2011/12/12(月) 20:39:55.27 ID:???
認証の設定をするときに、サーバー側で設定するもの。
387nobodyさん:2011/12/13(火) 01:38:11.67 ID:???
>>380
>>379は日本語がざっくばらんなんですな
388nobodyさん:2011/12/15(木) 18:36:11.15 ID:???
Spreadsheet::WriteExcel でエクセルファイルを出力しています。
セルはAからZ列があってそこから先はAA,AB,ACと続くのはご存知だと思います。
このアルファベットを数字に対応させたいと思ってますがアイディアがでませんのでどなたかご教示くださいませ。
1→A ,2→B,26→Z まではできるのですが( chr($_ + 0x60) )、27→AA,28→AB 以降をどうするかがわからないのです。
よろしくお願いいたします。
389nobodyさん:2011/12/15(木) 19:08:41.22 ID:???
$c=q{z};print++$c
390388:2011/12/15(木) 19:27:18.02 ID:???
すいません、説明が不足してました。申し訳ございません。
数字が26なら一発でZに、28なら一発でABに変換したいのです。
391nobodyさん:2011/12/15(木) 20:03:59.53 ID:???
再帰処理するサブルーチンでも作れば?
392nobodyさん:2011/12/15(木) 20:45:17.94 ID:???
sub convert {
my $n = shift;
my $al = shift || '';
return $n > 0 ? convert(int(($n - 1) / 26), chr(0x41 + ($n - 1) % 26) . $al) : $al;
}
print convert(28); #=> 'AB'
393388:2011/12/15(木) 20:50:09.96 ID:???
>>392
完璧です。
ありがとうございました。
394nobodyさん:2011/12/15(木) 21:08:20.48 ID:???
>>388
Spreadsheet::WriteExcel って、行・列ともに数値で指定できなかったっけ?

http://search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel-2.37/lib/Spreadsheet/WriteExcel.pm#Cell_notation
395nobodyさん:2011/12/16(金) 07:33:02.00 ID:???
ムダナナヤミダッタトイウオチカ
396nobodyさん:2011/12/31(土) 11:42:50.17 ID:uq+4+jAH
Perlにかぎったはなしではないのですが、

cgiに送るデータを
index.cgi?user=foo
ではなく、例えば
http://favstar.fm/tweets/popular
のようにディレクトリ風に送って
CGI側で受け取るにはどうすれば良いんでしょうか?
397日系アメリカ人 ◆japYJPNx6A :2011/12/31(土) 11:53:18.05 ID:???
ディスパッチ
398nobodyさん:2011/12/31(土) 11:54:05.80 ID:???
PATH_INFO
399nobodyさん:2011/12/31(土) 16:07:44.64 ID:???
>>398
ありがとうございます!
400nobodyさん:2011/12/31(土) 17:34:33.56 ID:ELwS00/V
401nobodyさん:2012/01/02(月) 00:05:58.15 ID:xN/cFjEo
datファイルの中に書いてあるパスワードと一致した場合にページを表示させたいのですが
以下のソースでコマンドプロントから入力しても必ず失敗してしまいます

エラーはなく、perl -cw を使ってもOKになり問題はありませんでした

$datfile = "./add.dat";

open(DAT,"+< $datfile");
flock(DAT, 2);

$lock = <<"EOD";
<html><head><title>ページ</title></head>
<body>認証許可</body></html>
EOD

$line = <STDIN>;

chomp($line);

if ($line eq <DAT>) {
print "$lock";
}
else {
print "認証失敗";
}

close(DAT);

datファイルの中身は「t」という一文字が入っています
詳しい方、教えてください
402nobodyさん:2012/01/02(月) 00:34:00.94 ID:???
$datfile の1行目に改行があるとかじゃないの?

print によるデバッグがしやすいから、面倒でも最初は変数に入れるクセをつけてみると良いかも。
403nobodyさん:2012/01/02(月) 07:39:45.76 ID:???
まず use strict しろよ
404nobodyさん:2012/01/02(月) 09:01:46.53 ID:???
あとコマンドプロントじゃなくてコマンドプロンプトな。
405nobodyさん:2012/01/02(月) 09:19:16.84 ID:???
<DAT>からの入力をchompしてないからじゃね?
406nobodyさん:2012/01/03(火) 02:35:21.75 ID:???
あまりに下らないミスすぎて、恥ずかしすぎてお礼も言えないってか?
407nobodyさん:2012/01/03(火) 08:07:23.54 ID:???
お礼が欲しいなら2ちゃんねる以外でやれ
408nobodyさん:2012/01/03(火) 08:39:34.48 ID:???
>>407
うるせえカス
409nobodyさん:2012/01/03(火) 08:59:10.49 ID:???
罵倒されるのが嫌なら2ちゃんねる以外でやれw
410nobodyさん:2012/01/03(火) 11:26:01.27 ID:???
まあコマンドプロントじゃしょうがないか
411nobodyさん:2012/01/03(火) 11:59:37.15 ID:???
プロントにパスタでも食いにいくか。
412nobodyさん:2012/01/04(水) 19:27:09.19 ID:???
Webブラウザで表示された内容を取得しようと思ったのですが、
私が欲しい情報はJavaScriptにより出力されたものであるために、
単純にPerlを用いただけでは難しいと分かりました。
どのように対処すれば、JavaScriptの表示部分を取得できるのでしょうか?
よろしくお願いいたします。
413nobodyさん:2012/01/04(水) 22:01:40.66 ID:???
サーバーで javascript を走らせるフレームワークがあったような気がする
414nobodyさん:2012/01/05(木) 01:03:58.26 ID:???
spidermonkeyとか?js読めばどこに通信して何をしてるか分かるから、js無くてもいけると思うけど。
415nobodyさん:2012/01/05(木) 01:39:51.36 ID:???
Ajax で表示してるなら、firefox での拡張で HTTP 通信を覗けるのがあるから、
それで見張ればいい。

firefox 入れなくない!っていうなら snooper で見ればいい。
416nobodyさん:2012/01/05(木) 22:01:42.38 ID:???
急にPerlでCGIプログラムをやることに。
みなさんIDEは何をお使いですか?

今んとこ慣れないEclipseでやろうと
思ってます。
417nobodyさん:2012/01/05(木) 22:27:56.90 ID:???
Perlを始めとした動的言語では
コード補完もリファクタリングもヘルプも
中途半端にしかならないからIDEは重いだけだよ。
418nobodyさん:2012/01/05(木) 22:34:01.35 ID:???
テキストエディタのみ

最近はブロックの折り畳みとかあるんで、充分強力
419nobodyさん:2012/01/05(木) 22:54:26.32 ID:???
IDEに助けてもらおうと思ったんですが
効果が薄いようですね。
腹くくってエディタでやります。
420nobodyさん:2012/01/06(金) 02:05:15.33 ID:???
各個人のポリシー次第。なのかもしれませんが、質問です。

モジュール ( .pm) を作ったときって、何かエラーが合った場合に
die でスクリプトを止めてしまってエラーを通知するべきか、
それとも STDERR にエラーを出力しつつスクリプトは止めないようにするべきか、
どちらがオススメのコーディングの仕方なんでしょう?
421nobodyさん:2012/01/06(金) 02:11:20.73 ID:???
男は黙ってcroak
422nobodyさん:2012/01/06(金) 03:13:39.39 ID:???
>>420
してほしい事をやらせて
してほしくない事をやらせなければよい。
423nobodyさん:2012/01/07(土) 06:25:16.35 ID:???
>>421
croak が分からなかったので調べてみた。
呼び出し元が分かる die か。なるほど。
ワーニングには carp か。


ありがとう!



>>422
根本的に文章が読みとれてないですよ。
424nobodyさん:2012/01/07(土) 12:06:24.49 ID:???
>>423
> 根本的に文章が読みとれてないですよ。
俺は422ではないが、そっくりそのままお返しする。
425nobodyさん:2012/01/07(土) 13:19:20.03 ID:???
420は2択を迫っているが、422は場合によるといっていて、その場合についての説明もしている。
422が正解だと思うが。
426nobodyさん:2012/01/12(木) 05:19:37.52 ID:???
どうすんのがいいのか聞いてんのに場合によりけりとしたり顔で言われたら脱力する
420は場合によりけりということがわかった上で、基本的なスタンスはどっちがいいか聞いてんじゃないの?

俺はプロセス殺すなー
変な値入ってんのに処理続けても意味ないし
warnなんてデバッグでしか使ったことないや
427nobodyさん:2012/01/12(木) 12:02:21.96 ID:???
>>426
おまえも読解能力の欠陥持ちか。
「場合によりけり」では結局何も答えてないに等しいが、>>422はそんなこと書いてないだろ。
どういう時にどっちを選択すればいいかが簡潔に書いてあるだろ。
428nobodyさん:2012/01/14(土) 02:03:55.49 ID:???
time_tが32bitか64bitかを調べる方法はありますか?
2038年1月19日3時14分7秒以降のUNIX時間を取得してみるよりスマートな方法で。

学校の宿題でカレンダーを作ったら2038年2月でずれちゃいました。
429nobodyさん:2012/01/14(土) 05:41:58.49 ID:???
overflow 日付は分かってるんだから、最大値+1を与えた時に
日付がどうなってるか確かめればよい
430nobodyさん:2012/01/14(土) 10:28:47.22 ID:???
> 2038年1月19日3時14分7秒以降のUNIX時間を取得してみる

これで充分スマートじゃないか?
431nobodyさん:2012/01/14(土) 12:11:45.71 ID:???
俺に言わせれば、time_tが32bitか64bitかなんて重要な問題じゃないね。
本当に知りたいことは、2038年1月19日3時14分7秒以降が扱えるかだろう? (キリッ)
432nobodyさん:2012/01/14(土) 12:21:34.67 ID:???
ぶってぇ釣り針垂らしやがって・・・
433nobodyさん:2012/01/14(土) 15:29:38.07 ID:???
つーか「これは仕様です」で十分でしょ、実際仕様なんだから。
年が4桁で有限なのと同じでしょ。
434nobodyさん:2012/01/14(土) 15:46:35.43 ID:???
・Perl 5.12 以降を使う
・Time::y2038 モジュールを使う
・DateTime モジュールを使う
のどれかで解決
435nobodyさん:2012/01/14(土) 16:24:02.91 ID:???
他の人の労力で解決っているのは、仕事ではそうすべきだけど、
"トレーニング" である宿題ではそうすべきではない。むしろ
time_t にさえ依存せず、自力で10桁年カレンダーのような無駄
なものを作って自分自身の糧とすべし。
436nobodyさん:2012/01/14(土) 18:04:47.99 ID:???
>>435
その考え方は賛成できるけど、このスレ的には「車輪の再発明」って言われちゃうんだよね〜 orz
437nobodyさん:2012/01/14(土) 18:26:43.69 ID:???
じゃあ、トレーニングだ。

自分で考えろ。こんな所聞くな。
他の人の労力で解決すんな。
438nobodyさん:2012/01/14(土) 21:36:35.23 ID:???
車輪の再発明はいいんだけど、大抵は独学のトホホなプログラムができあがあるから、せめて一度
既存モジュールの中身を読んでくれ。
439nobodyさん:2012/01/14(土) 23:37:55.97 ID:???
先生のために宿題をするのか、自分のために宿題をするのか違い。
440nobodyさん:2012/01/15(日) 20:18:01.72 ID:???
単位のためだろ
441nobodyさん:2012/01/15(日) 20:45:40.76 ID:???
そういうの全く理解できないんでごめんな
442nobodyさん:2012/01/18(水) 21:06:05.29 ID:???
元ファイルの内容を書き換えて別ファイルに保存する方法を教えてください。
元ファイル aaa.txt
変換プログラム trans.cgi
変換後のファイル bbb.txt

aaa.txt に書いてある「あ$kanaお」を読み込んで
trans.cgi にて$kana = きくけ; として変換し
bbb.txt に「あきくけお」で出力するには、どうしたらいいのでしょうか。

open関数で +< という読み書きでファイルを開いても
空テキストが作成されるだけで、うまくいきません。
どうかよろしくおねがいします。
443nobodyさん:2012/01/18(水) 21:27:56.62 ID:???
open(my $infh, ?<:utf8?, ?input.txt?);
open(my $outfh, ?>:utf8?, ?output.txt?);
while(my $line = <$infh>){
  〜処理〜
  print $outfh $line;
}
close($outfh);
close($infh);
444nobodyさん:2012/01/18(水) 22:19:08.77 ID:???
>>442
http://perldoc.jp/docs/perl/5.10.1/perlfaq5.pod

my %var = (FOO => 'bar');
open my $fh, '+<', $file or die $!;
read $fh => my $text, -s $fh;
$text =~ s/__([A-Z]+)__/$var{$1}/g;
seek $fh, 0, 0;
print $fh $text;
truncate $fh, tell;
close $fh;

open my $sfh, '<', $src_file or die $!;
open my $tfh, '>', $tmp_file or die $!;
while (<$sfh>) {
  s/__([A-Z]+)__/$var{$1}/g;
  print $tfh $_;
}
close $tfh and close $sfh or die $!;
rename $tmp_file => $src_file or die $!;
445442:2012/01/18(水) 22:35:01.78 ID:???
>>443さん
>>444さん

お返事ありがとうございました。
じっくり読んで頑張ってみたいと思います
446nobodyさん:2012/01/25(水) 02:08:42.13 ID:8GsK3GVU
ファイルの置換について質問させてください。
コマンドラインから、
echo "test.txt" | xargs perl -pi -e 's/hoge/HAGE/g'
とすると正しく置換されるのですが、
ブラウザからapacheをとおして、スクリプト内で上記のコマンドを、
`echo "[フルパス]test.txt" | xargs perl -pi -e 's/hoge/HAGE/g'`

system "echo ¥"[フルパス]test.txt¥" | xargs perl -pi -e 's/hoge/HAGE/g'"
とするとうまく置換されないのはなぜでしょうか?
またこのケースですとスクリプト内での記述はどのようにするのが適切でしょうか?宜しくお願い致します。

447nobodyさん:2012/01/25(水) 03:35:55.61 ID:???
CGI実行時のユーザ権限は
そのユーザ権限でファイルや当該ディレクトリは書き込み可能になっているか
をまずチェック。
448nobodyさん:2012/01/25(水) 03:57:31.07 ID:Arlh9fb/
447さん
お返事ありがとうございます。ディレクトリとファイルは権限777にして試してみたのですが、
置換されませんでした。あとスクリプト中の文字のエスケープ漏れもみなおしてみたのですが、
結果変わらずでした。さらに調べてみます。ありがとうございます。
449nobodyさん:2012/01/25(水) 04:06:26.93 ID:???
どう出来ないのか
エラーは出てないのか
端末でスクリプトを走らせたらどうなるか
450nobodyさん:2012/01/25(水) 08:23:33.82 ID:???
Apacheのerrorログを見てみる ←基本
451nobodyさん:2012/01/28(土) 22:01:51.13 ID:???
errorログを見て特に問題はないと思っていたら...

sendmailのログでしたorz←
452nobodyさん:2012/01/29(日) 11:48:32.08 ID:???
コマンドラインやめてopen(FILE,"[フルパス]test.txt")しちゃいなよ
453nobodyさん:2012/01/31(火) 17:42:02.72 ID:???
質問質問!
&sub1(qq(asdasdqwdasdasd));
sub sub1
{
while($_[0] =~ /asd/gs )#←@
{
print $_[0];#←@でマッチした中身を出力したいが、subの引数
}
}
こんな感じのプログラムを作ったのですが
$_[0]の中身が更新できなくて困っています・・・
どなたか回避する方法を教えてください!お願いします
454nobodyさん:2012/01/31(火) 17:56:37.52 ID:???
/asd/gs
 ↓
/(asd)/gs


あとついでに書き直した。

sub1(qq(asdasdqwdasdasd));
sub sub1{
 my $str = shift || '';
 while($str =~ /(asd)/gs){
  print $1;
 }
}

慣れてくれば良いけど、初心者であるうちは $_ をそのまま使わずに関数内で変数を用意して
そこへ格納したほうがいいよ。
455nobodyさん:2012/01/31(火) 18:23:59.58 ID:???
>>454
2つほど質問があるのですがいいですか!
456nobodyさん:2012/01/31(火) 18:26:09.85 ID:???
お礼を書くのを忘れていました
>>454 さん ありがとう御座います。
457nobodyさん:2012/01/31(火) 18:52:11.00 ID:???
don't ask to ask
458nobodyさん:2012/01/31(火) 21:02:02.01 ID:???
CGIのデータベースを運用しています。

auの端末で検索できるものとできない機種があります。
同じ2009年にでたモデルでもできるできないがあります。
例えばCA002はできるけど、K002はだめ。

できないものは、何も検索フォームに入れないで検索してもダメです。

Jcode.pl 2.13でエンコードしてますが、
これが悪いのでしょうか?

どうしたら、文字検索をできるようにできますか?

459nobodyさん:2012/01/31(火) 21:33:09.50 ID:???
>>458
携帯サイトのWebプログラムを語ろう Part3
http://kohada.2ch.net/test/read.cgi/php/1232544986/
460nobodyさん:2012/01/31(火) 22:38:52.20 ID:???
表示してる文字コードはなにか

端末が送ってきてる文字コードは本当に希望したものか
461nobodyさん:2012/01/31(火) 22:46:58.04 ID:???
>>460
Shift_JISです。
462nobodyさん:2012/01/31(火) 22:57:27.90 ID:???
utf-8 で書きませう
463nobodyさん:2012/01/31(火) 23:06:58.71 ID:???
Jcode.pmの好きなおいらがアドバイスしにやってきたょミ☆
初心者スレだしねミ☆
464nobodyさん:2012/01/31(火) 23:43:18.05 ID:???
>>462
邪悪なutf-8イラネ
465nobodyさん:2012/02/01(水) 00:41:51.19 ID:???
たしかに utf-8 はマッピングミスとかあるけど、
他からデータを持ってきたりとかしない場合には utf-8 で問題無い。
466nobodyさん:2012/02/01(水) 01:42:35.88 ID:???
Shift_JIS vs UTF-8 のゴングが今、スレ内に鳴り響きました!
467nobodyさん:2012/02/01(水) 04:46:09.17 ID:???
まずはアクセスログと標準入力に何が渡されたかを見る。
468nobodyさん:2012/02/01(水) 06:04:45.99 ID:???
>>466
プログラム板でやれ
469nobodyさん:2012/02/01(水) 23:55:30.88 ID:???
続きはSJIS板で
470nobodyさん:2012/02/03(金) 01:56:38.79 ID:???
cp932板はありますか?
471nobodyさん:2012/02/03(金) 02:11:46.79 ID:???
あるよ
472nobodyさん:2012/02/04(土) 02:53:54.65 ID:???
LWP::UserAgent で指定 URL をアクセスして、リダイレクトされた際に実際にアクセスした URL を知るにはどうしたら良いでしょうか?

header('Location') で調べれば良いと思ったものの、リダイレクトされた後には Location ヘッダは無く、
max_redirect(0) でリダイレクトさせなければ Location ヘッダを取得できて、リダイレクト先を知ることは出来ました。

max_redirect(0) でアクセスして、Location ヘッダがあれば max_redirect(1) とかにしてアクセス。
リダイレクトが1回で済まなければ max_redirect(2) でアクセスしてみる。

と言ったことをやってるのですが、これが非常に面倒なので結果的にアクセスした URL が取得できればと考えて質問させていただきました。
473nobodyさん:2012/02/04(土) 03:45:11.91 ID:???
>>472
response_done ハンドラか response_redirect ハンドラに URL を記録する処理を追加する。
http://search.cpan.org/dist/libwww-perl/lib/LWP/UserAgent.pm#Handlers
474nobodyさん:2012/02/04(土) 09:09:19.56 ID:???
んなことしなくても、
HTTP::Response オブジェクトは使われた HTTP::Request オブジェクトを丸々保持してるし、
リダイレクト前の Response も previous メソッドでたどれる。

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $res = $ua->get("http://t.co/hog7vmt5");
do { print $res->request->uri, "\n"; } while ($res = $res->previous);
__END__
http://www.asahi.com/national/update/0204/TKY201202030789.html
http://t.asahi.com/5gxs
http://t.co/hog7vmt5
475473:2012/02/04(土) 09:40:24.08 ID:???
>>474
成程、そっちをみれば良かったのか。勉強になったよ。

use LWP::UserAgent;
my $r = LWP::UserAgent->new->get('http://t.co/hog7vmt5');
print map $_->request->uri . "\n", $r->redirects, $r;
__END__
http://t.co/hog7vmt5
http://t.asahi.com/5gxs
http://www.asahi.com/national/update/0204/TKY201202030789.html
476nobodyさん:2012/02/04(土) 16:24:03.95 ID:???
>>473-475
自分には >>474 さんの書き方がしっくりきたので、
これでいこうと思います。
ありがとうございました。



どうでもいい事だけど・・・
do{ }while( ) ってあまり好きじゃないw
ループの条件式が後に来るってーのが、なんか馴染めない (^-^;
477nobodyさん:2012/02/05(日) 04:49:54.12 ID:???
>>476
> do{ }while( ) ってあまり好きじゃないw
> ループの条件式が後に来るってーのが、なんか馴染めない (^-^;

その方が都合のいいケースもたまにあるでしょ。
最低1回は処理が必要、って時が。たまにね。
478474:2012/02/05(日) 10:00:34.05 ID:???
動作というより記法について言ってるのでは。
特にブロックの中身が複数行のときは最後の while を見るまでループだってことがわからんのが痛い。
あとまあ、動作も実際気持ち悪い。本物のループブロックじゃないから next とか使えんし。
まともに書く時はちょっと記述増えることになっても普通の while と last とかを組み合わせるほうがいい。
479nobodyさん:2012/02/06(月) 18:29:54.91 ID:ryr2jQRg
Perlによるネットワークプログラムの質問です。
Perl でアクセスしたいサイトがあるのですが、Perlからhtmlを読むことが出来ません。
IE8の「ソースを表示」では表示できるのですが。

アクセスしたいサイト :http://cinema.pia.co.jp/
Perlのスクリプトの場所 :http://x68000.q-e-d.net/~68user/net/sample/http-client-2.pl
その説明 : http://x68000.q-e-d.net/~68user/net/http-3.html

【実行結果】
perl http-client-2.pl -GET http://cinema.pia.co.jp/
HTTP/1.1 200 OK
Date: Mon, 06 Feb 2012 09:25:43 GMT
Server: Apache
Last-Modified: Fri, 28 Aug 2009 06:41:24 GMT
ETag: "304a0-2-f9082d00"
Accept-Ranges: bytes
Content-Length: 2
Connection: close
Content-Type: text/html

1

で終わってしまい、肝心のHTMLのBODYの部分を表示する事が出来ません。
どなたか分かる方教えてください。
480nobodyさん:2012/02/06(月) 20:02:58.69 ID:???
LWP 使えば?
481nobodyさん:2012/02/06(月) 20:18:45.51 ID:???
>>480
オレもLWP使うに1票
482nobodyさん:2012/02/06(月) 22:10:48.93 ID:???
wget使えば?
483nobodyさん:2012/02/06(月) 22:53:24.14 ID:???
一度やってみたかったのでtelnetにコマンドを流し込みます。
覚えるともう、病みつきです。ftpもこれでやってます。
sendmailだって大丈夫です。
484479:2012/02/07(火) 01:13:45.57 ID:eo0HNsOB
>>479 です。返信ありがとうございます

>>480 >>481
LWP 使ってみました。http://www.sea-bird.org/doc/Solaris8/Perl_4.html
出来ました
>>482
wget をPerlから?使う方法が分かりませんでした。コマンドとして使うという事なら目的と違います
>>483
上記チュートリアルサイトにて telnet も試しましたが、駄目でした


実は本当にやりたいことは別にあったので、すみませんが質問をやり直させてください

このサイトは、映画レビューサイトなのですが、
http://cinema.pia.co.jp/user/xxxxx/imp/all/ (xxxxxは数字)
にて、各ユーザーのレビュー一覧を見る事が出来ます
(実は自分のレビューを抽出したいだけです)
しかし、Perlからのアクセスでは、LWPを使ってもここではじかれてしまいます
(IE8の「表示→ソース」では見れるが、Perlにprintさせると違うものになっている)

どなたか原因分かりますでしょうか?
485nobodyさん:2012/02/07(火) 01:25:44.20 ID:???
「違うもの」が何だか分からないけど、ユーザーエージェントをIEにしてみたら?
486nobodyさん:2012/02/07(火) 01:48:21.80 ID:???
>>484
use LWP::UserAgent;
use HTTP:Request::Common;
my $ua = LWP::UserAnget->new();
$ua->agent('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)');
my $req = GET('http://cinema.pia.co.jp/user/xxxxx/imp/all/');
my $res = $ua->request($req);
if(open(my $outfh, '>', 'debug.html')){
print $outfh $res->content() || '';
close($outfh);
}
487479:2012/02/07(火) 03:24:39.22 ID:???
>>479 です。ありがとうございます

>>485 駄目でした。ソースの190行目辺りからが違ってきます
上手くいく時は、以下のようになります。良く分かりませんが。
<div id="mainImpMain">
<form method="get" class="common">
<ul class="pagedLink">

>>486
出来ました。ありがとうございました。
488nobodyさん:2012/02/07(火) 23:59:17.86 ID:???
>>487
何がだめだったのか、ちゃんと理解できてる?
489nobodyさん:2012/02/08(水) 00:00:54.11 ID:???
HTTP ヘッダに独自のヘッダを付加しようとしてるんですけど、
自分自身が呼ばれて起動された際の HTTP ヘッダってどうやって確認するのでしょうか?

use CGI の header はヘッダを出力するためのものっぽいし・・・
490nobodyさん:2012/02/08(水) 00:27:39.96 ID:???
>>489
それはあんたのスクリプトがどうやって呼び出されているかによる。
httpd に Apache を使ってて CGI 経由で呼び出されているなら
Apache のマニュアルと CGI の仕様書を読んでくれ。
http://httpd.apache.org/docs/
http://www.studyinghttp.net/rfc_ja/rfc3875

あと HTTP の仕組みもきちんと理解してくれ。
http://www.studyinghttp.net/rfc_ja/rfc2616
491nobodyさん:2012/02/08(水) 00:51:03.57 ID:???
HTTP ヘッダの理解を深める為にマニュアルや RFC を求めてるんじゃなくて、
自身のスクリプトが呼ばれた際の HTTP ヘッダを得る方法を伺っているわけでして・・・
492479:2012/02/08(水) 01:09:59.52 ID:???
>>488
目的のスクリプトは書けたのですが、気持ち悪いので知ってるなら教えてもらえますか?
493nobodyさん:2012/02/08(水) 04:36:08.44 ID:???
「教えてもらえますか?」

最近の若い奴は、物事の尋ね方も知らないのか?ブツクサブツクサ
494nobodyさん:2012/02/08(水) 07:53:34.31 ID:D9+63/xk
<!-- link -->から<!-- /link -->までのタグ内に存在するURLとその行の「〜」で囲まれてる部分を
抜粋するようなプログラムを作成したいと思います。

例えば、次のような文章があった場合、
------------------------------------
ほげほげふがふが
http://example.com/hogehoge1
ほげほげふがふが
http://example.com/satitama1/saitama.html
<!-- link -->
リンク一覧
〜テスト〜 http://example.com/hogehoge2/test.hmtl
〜さいたま〜 http://example.com/satitama2
東京
<!-- /link -->
------------------------------------
結果は
------------------------------------
<a href="http://example.com/hogehoge2/test.hmtl">テスト</a>
<a href="http://example.com/satitama2">さいたま</a>
------------------------------------

のようにしたいのですが、どのように書いたらよいでしょうか?

尚、URLを抜き出す正規表現は次のように書きました。
(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)


環境は、CentOS5 perl5.10です
495nobodyさん:2012/02/08(水) 10:31:20.53 ID:???
>>494
http://perldoc.jp/docs/perl/5.10.1/perlfaq6.pod#How32can32I32pull32out32lines32between32two32patterns32that32are32themselves32on32different32lines63

my $protocol = qr/(?:https?|ftp)/;
my $format = '<a href="%2$s">%1$s</a>' . "\n";
my $text = do { ... };
my @link;
while ($text =~ m{<!-- link -->(.*?)<!-- /link -->}gs) {
  my $links = $1;
  push @link, sprintf $format, $1, $2
    while $links =~ m{〜(.*?)〜.*?($protocol://[!#-;=?-\[\]_a-z~]+)}gos;
}
print @link;
496nobodyさん:2012/02/08(水) 12:09:45.01 ID:???
>>493
その割には「お前ら教えろ」で回答貰えたりするけどな2ch
497nobodyさん:2012/02/08(水) 23:05:10.70 ID:???
>>496
それはむしろネタとして受け入れられてしまうんだろうなw
498nobodyさん:2012/02/19(日) 12:41:02.48 ID:???
私の働きが悪いせいか、私の物はほとんど買ってくれません。
下着は、妻と娘のお下がりです。
おまけに洋式トイレ、便座が上がってるとか、飛沫が飛んでるとか、いちいち五月蝿いんです。
おかげで、トイレは座ってするように強要され、もうブリーフの前、開ける必要が無いんだからと、私達のお下がりで十分でしょう。と、ここ何年も私の物は買ってくれません。
今では開き直って、ブラジャーもしています。
家に居る時は、娘のスカートを穿き、外出は娘のパンツ、ジーンズ穿いていきます。
娘は、始めは困惑していたが今では慣れ、何でも貸してくれます。
妻の洋服、パンツ、スカートはウエストがちょっときつい。
ストレッチの物は、勝手に着ています。
499nobodyさん:2012/02/19(日) 13:22:18.26 ID:???
cat >>498 > /dev/null
500nobodyさん:2012/02/19(日) 15:19:47.97 ID:???
next if $num == 498
501nobodyさん:2012/02/19(日) 17:53:14.70 ID:???
Global symbol "$num" requires explicit package name at >>500 line 1.
502nobodyさん:2012/02/19(日) 22:33:36.65 ID:???
どうせなら、>>498 は、そのカキコ内容を perl で記述すべし。
503nobodyさん:2012/02/20(月) 14:28:00.53 ID:???
use warnings; use utf8; use Corp; use Family;
my $family = Family->new();
$family->husband('>>498'); $family->wife('百合子(仮)'); $family->daughter('楓(仮)');
my $corp = Corp->new(); $corp->salaryCalculation();
$family->income($family->husband(), $corp->salary());

if($family->income($family->husband()) > 250000){
  # トイレ
  my $toto = Toilet->new();
  $toto->type('EU'); # JA or EU
  my $urine = $family->urine($family->husband()); # 小便をする
  $toto->urine($urine);
  if($toto->is_splash()){ $toto->forced_to_sit(1); } # トイレの用足しには座りを強制
  # 下着
  if($toto->forced_to_sit()){ $family->underwear($family->husband(), $family->underwear($family->wife()); }
  # 他の着衣
  if($family->underwear($family->husband()) eq $family->underwear($family->wife())){
    $family->brassiere($family->husband(), $family->brassiere($family->wife());
    $family->skirt($family->husband(), $family->skirt($family->daughter());
    $family->jeans($family->husband(), $family->jeans($family->daughter());
  }
}else{
  $family->underwear($family->husband(), 'BOXER PANTS');
  $family->brassiere($family->husband(), undef);
  $family->skirt($family->husband(), undef);
  $family->jeans($family->husband(), 'EDWIN');
}

>>498 じゃないけど、これが限界っす><
娘や妻への下着のセットは省いたw
504nobodyさん:2012/02/20(月) 14:29:13.01 ID:???
収入がちゃんとある場合の下着で、ブラとスカートはちゃんと undef にしてるところを評価して欲しいですw
505nobodyさん:2012/02/20(月) 22:20:39.95 ID:???
わろた
506nobodyさん:2012/02/21(火) 10:11:33.62 ID:???
修正
× $corp->salary()
○ $corp->salary($family->husband())

サラリーを得るのに名前を渡してなかった><


× if($family->income($family->husband()) > 250000){
○ if($family->income($family->husband()) < 250000){

不等号の向き間違えたw
507nobodyさん:2012/02/24(金) 16:30:51.95 ID:???
初めまして。

RSSのデータから、日付時刻とタイトル、そのリンク先URLを一覧にして取得したいと考えています。

・ブラウザに「取得」ボタンなどを表示し、それをクリックすることで最新の一覧を表示
・以前に取得したものは取得しない

先ずは上記2点を実装したいです。

良い方法や参考サイトなどをご教示頂きたいです。
よろしくお願いいたします。
508nobodyさん:2012/02/24(金) 17:02:28.77 ID:???
>>507
>>1-2

こんなCGI探してます 23
http://kohada.2ch.net/test/read.cgi/php/1219654359/
依頼されたツールを誰かが作るスレ
http://kohada.2ch.net/test/read.cgi/php/1078997682/
金出すからスクリプト作ってよvol.1
http://kohada.2ch.net/test/read.cgi/php/1150508106/
自作CGIを評価するスレ
http://kohada.2ch.net/test/read.cgi/php/1049514428/
自分の作ったCGIスクリプトをデバッグするスレ
http://kohada.2ch.net/test/read.cgi/php/1011174442/

http://kohada.2ch.net/test/read.cgi/php/1036141603/420-435
509nobodyさん:2012/02/24(金) 17:22:17.71 ID:???
>>508
最後のスレが役に立ちそうです。ありがとうございます。
510nobodyさん:2012/02/25(土) 00:54:16.96 ID:???
なぜマスコミは財務省の犬になるのか?

全国紙では唯一、増税批判の姿勢を取っていた産経新聞に、
昨夏、国税の税務調査が入った。
財務省にとって税務調査は言論統制の最強の武器で、
2009年には朝日、読売が申告漏れを指摘され、
それを機に朝日は増税礼賛へと傾斜し、
読売は財務省幹部の天下りを受け入れた経緯がある。

国税庁という「警察力」は、財務省の最強の武器なのです。
何しろ、徴税というのは「裁量範囲」が広い業務で、
調査官の「判断」により合法とされたり、
脱税とされたりしてしまうのです。
「去年はOKだったのに、今年は何でダメなんだ!」
といった事態は普通に起こります。
511nobodyさん:2012/02/25(土) 13:09:52.88 ID:???
眞子様は素敵

まで読んだ
512nobodyさん:2012/02/27(月) 00:22:44.82 ID:???
貞子は素敵

まで読んだ
513nobodyさん:2012/02/27(月) 00:26:08.69 ID:???
素数

に見えた
514nobodyさん:2012/02/27(月) 00:46:41.84 ID:???
素股
515nobodyさん:2012/02/27(月) 07:22:57.09 ID:???
眞子様は素股!?
516nobodyさん:2012/02/27(月) 14:07:22.77 ID:???
貞操は国家機密事項
517nobodyさん:2012/02/28(火) 00:06:11.43 ID:0AwG+yg0
質問なのですがPerlでこういうサイトって作れますか?
ttp://findrjp.com/formen/
これはPHPだと思うんですけど
作るとしたらelsifで作る感じでしょうか?
こういうのってすぐ作れますか?
518nobodyさん:2012/02/28(火) 00:51:16.58 ID:???
お前には無理
519nobodyさん:2012/02/28(火) 00:59:39.36 ID:???
お前に出来たらチンパンジーでも出来るよ
520nobodyさん:2012/02/28(火) 01:10:42.34 ID:???
そうだねelsifさえ使いこなせれば簡単に作れるよ。でもelsifはかなり難しいから頑張ってね。
521nobodyさん:2012/02/28(火) 01:35:37.84 ID:0AwG+yg0
皆様生暖かいコメントありがとうございます。
どうせテメーらにはできないんだろwwwww
って挑発したらヒント教えてくれますか?
elsifは分かります
522nobodyさん:2012/02/28(火) 10:18:18.70 ID:???
はいはいマルチマルチ。
523nobodyさん:2012/02/28(火) 14:34:14.89 ID:???
実行中のスクリプトの場所に関して質問です。

スクリプト中で開くファイルはスクリプトのあるディレクトリのサブディレクトリに置いており、
全てフルパスで開くようにしています。
昨日初めて mod_perl を入れたところ、FindBin $Bin や Cwd が Apache のディレクトリになっています。

$ENV{'SCRIPT_FILENAME'} を使おうかと思ったのですが、デバッグでコンソールで実行することもあるため
$ENV{'SCRIPT_FILENAME'} は使えません。

$0 では cron でも mod_perl でも CGI でもコンソールでも期待する値が得られました。

./hoge.pl で実行して dirname($0) すると ./ 返ると書いてある場所もありますが、当方では
確認できませんでした。

そこで疑問に思ったのが、$0 を 100% 信用してもいいのか? ということです。
「他のプログラムにより強制的に書き換えられる」 という可能性は今は無しでお願いします。
524nobodyさん:2012/02/28(火) 14:46:37.42 ID:???
ちょっと勘違いがありました。

$0 は perl に与えられた path みたいですね。
HTTPd とかはフルパスを作って渡してくれてるっぽいけど、
コンソールではそうではない。

むぅ。。。
525nobodyさん:2012/02/29(水) 01:59:02.18 ID:???
mod_perl を導入してスクリプトが走るのが軽いからと F5 連打してたら
Not a CODE reference 〜
っていうエラーが出た。
そのエラーが言う行は

main();

としかやってないのに。。。
526nobodyさん:2012/02/29(水) 11:28:36.69 ID:???
mod_perlが返すパスも元を追えば$0を元に生成してたと思う
527nobodyさん:2012/03/02(金) 13:17:08.38 ID:???
すみません、Web制作板からこちらに飛ばされて来ました。

ユーザーによる新規会員登録後、そのユーザー毎にディレクトリを自動的に生成し、
ユーザディレクトリ毎に容量制限を割り当てたいのですが、可能なのでしょうか?

ディレクトリを自動生成するところまではできています。
528nobodyさん:2012/03/02(金) 18:09:30.62 ID:???
ファイルが作成されようとする度に全ファイルサイズを得るか、
quota の導入。
quota を入れるなら、システムに実際にユーザーの作成が必要。
529nobodyさん:2012/03/03(土) 19:01:18.46 ID:???
if ( 現在使用サイズ + これから書き出すサイズ < 制限サイズ ) {
 ファイル書き込み
 現在使用サイズを書いたファイルorDBを更新(現在使用サイズ+これから書き出すサイズ)
}

サイズ取得はuse bytes; $data_size = bytes::length($data); かな。
530nobodyさん:2012/03/03(土) 19:19:52.03 ID:???
$^0って何でしたっけ。
検索しにくくて、、、、こういうのどうやって探せばいいんでしょう。
perlvarになかったので特殊変数ではないっぽい
531nobodyさん:2012/03/03(土) 19:27:25.41 ID:???
何でしたっけと言われても、少なくともPerlにおいては特殊変数ではないしそれ以外の何かの意味もない。
532nobodyさん:2012/03/04(日) 02:19:05.56 ID:???
$^O ならOS名なんだけどネ
533nobodyさん:2012/03/04(日) 12:49:16.62 ID:???
>>532
そんなのすぐ気づいたしw
534530:2012/03/04(日) 17:01:24.24 ID:???
ありがとうございます、OS名でぐぐったらいろいろ出てきました。
ゼロじゃなくて大文字のオーだったんですね。

OS名ということはシステムからPerlに提供されているものだと思って、%ENVと同じところに記述されているはずって当たりをつけたら
perlvarにありました。
535nobodyさん:2012/03/04(日) 20:39:47.27 ID:???
531恥ずかしすぎだなw
536532:2012/03/05(月) 05:40:34.80 ID:???
>>535
そんなことはない。$^0 は確かに特殊変数でもなんでもなかった訳だし。
ためしに$^0をプリントさせたらエラーで実行できなかったし。
537nobodyさん:2012/03/05(月) 22:13:10.43 ID:???
だが普通すぐ気づくだろう。
538nobodyさん:2012/03/06(火) 01:30:36.74 ID:???
「普通すぐ気づく」なら530の質問は最初からされてない
539nobodyさん:2012/03/06(火) 01:42:56.66 ID:???
荒らしはスルーで、、、
540nobodyさん:2012/03/06(火) 02:52:11.60 ID:???
>>538
なぜ?
$^O が検索しにくいのは同じだろう?
541nobodyさん:2012/03/06(火) 02:56:51.45 ID:???
perlvarとは何だったのか
542nobodyさん:2012/03/06(火) 09:53:40.98 ID:zjKZlebn
質問です、以下の最短マッチが機能しないっぽい? のですが、なぜでしょうか?

コード(抜粋)
$html =~ m!"(.*?)" class="Link88" href="/Models.aspx\?ModelID=$id"!s;
print $1;

実行結果
(〜ごっそり省略) <a title="Loeka Creekside Fern Short Sleeve Jersey 2010

$htmlはLWPで拾ってきたHTMLです。数MBくらいあります。
パターンマッチ内の文字列 class="Link88"〜 というあたりはちゃんとマッチしているようですが、
少なくとも Loeka の左にある " が $1 に含まれちゃうのはおかしい気がします。
また不思議なことに、修飾子 /s を外すとちゃんと最短でマッチしてくれます。
543nobodyさん:2012/03/06(火) 10:29:35.15 ID:???
再現可能なコードぐらい貼れ、どーせこうだろうが
$html = q{<a href="b"
id="a" class="Link88"};
$html =~ m!"(.*?)" class="Link88"!s;
$html =~ m!"(.*?)" class="Link88"!;

最短ってのはマッチし始めてからが最短になるんであって、グループ内に"を含まないなんてルールはない
つまり最初の"から class="Link88" ... の手前の"までがマッチするんだよ
544nobodyさん:2012/03/06(火) 10:46:58.66 ID:???
なるほど、左に向かって最短マッチはしてくれないんですね。
m!"(.*?)" class="Link88"!

m!"([^"]*?)" class="Link88"!
に変えて解決しました、ありがとうございます。
545nobodyさん:2012/03/06(火) 12:52:17.96 ID:???
質問が不親切、再現しようにもコードもない、質問者が何を求めているかを把握するにはこっちが質問を熟読して意図と本当にやりたいことを汲み取らなければならない、などという書き込みに神対応できる >>543 みたいな奴尊敬するわ。
546nobodyさん:2012/03/07(水) 23:13:16.91 ID:???
Kent Webさんからダウンロードしたpostmailの設置が上手くいかなくて困っています。

ttp://kueris.pro.tok2.com/postmail.html
↑これなんですが、ご覧の通り送信ボタンを押すとエラーが出てしまいます。
このエラーは、「Minimal.pm」がCGIフォルダ内に見つからない、という意味だと思うのですが、ちゃんとアップロードはできています。

以下、その他の詳細です。
・check.cgiは問題なく機能しました。パーミッションも設定できています。
・postmail.cgiのみを「cgi-bin」というフォルダに移動させました。
・サーバーはTOK2という所をお借りしています。
・エラーメッセージにある13行目辺りの内容はこんな感じです。↓

9 # モジュール実行
10 use strict;
11 use CGI::Carp qw(fatalsToBrowser);
12 use lib './home/kueris/postmail-utf/lib';
13 use CGI::Minimal;
14 use Jcode;

よろしければお力をお貸しください。よろしくお願いします。
547nobodyさん:2012/03/07(水) 23:45:53.60 ID:???
use CGI::Minimal;
 ↓
use CGI;

またエラーが出たらお越し下さい。
548546:2012/03/08(木) 00:14:54.72 ID:???
>>547
ありがとうございます。お陰さまで、無事にそのエラーは解消されたです。

しかし、今度は別のエラーが発生しました。
ttp://kueris.pro.tok2.com/postmail.html
↑今はこのようになっています。
パスが違うのかと思い、色々変えてみましたが、効果はありませんでした。
メッセージにある20行辺りの内容は以下の通りです。↓

19 # 設定ファイル認識
20 require './public_html/postmail-utf/init.cgi';
21 my %cf = &init;

度々で申し訳ありません。
ですが、何卒よろしくお願いします。
549nobodyさん:2012/03/08(木) 09:26:25.31 ID:???
require "./init.cgi";

で OK
550546:2012/03/08(木) 12:15:53.18 ID:???
>>549
ご回答ありがとうございます。
試してみましたが、相変わらず同様のエラーメッセージが表示されてしまいます。↓
ttp://kueris.pro.tok2.com/postmail.html
init.cgi自体はちゃんとアップロードされているんですが…。
551nobodyさん:2012/03/08(木) 12:34:33.65 ID:???
init.cgiが@INCが示すディレクトリの中にあり、読める状態にあるかを確認
552nobodyさん:2012/03/08(木) 16:18:28.19 ID:??? BE:3622206896-PLT(12000)
そもそもTOK2でCGIをまともに動かそうなんて無茶なこと考えるなよ
553nobodyさん:2012/03/08(木) 17:31:49.63 ID:???
cwd でカレントディレクトリ表示させてみて

CGI で動いてない気がしてきた
554nobodyさん:2012/03/09(金) 01:25:41.39 ID:???
初歩すぎる質問で申し訳ありません。
今勉強中なのですが、
postデータ等をこれで変換すると言うのが良くあるのですが、

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

たしかにこれでうまくいきますし、また基本的な挙動も理解しています。
分からないのは、なぜpack("C", hex($1))/egで、問題無く動くのかということです。
具体的には、
@$1で渡されるのは1バイト分なのに、なぜちゃんと2バイト文字として変換されるのか?
A%([a-fA-F0-9][a-fA-F0-9]の書式でなぜ半角文字が受け渡されるのか?
B例えば”テ”はpostからデータを受け取った時には83eなのに、なぜ問題無く変換されるのか?
C@にかぶりますが、なぜ(pack"c",***)で上手く動くのか? "c*"じゃないのに正常に動いてる。 また、$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/hex($1)/eg;で作った変数をそのままpack"c*",$value;としてもうまく動かないのに、なぜちゃんと動くのか?

いろいろ調べたりしたのですが、よくわかりませんでした。
555nobodyさん:2012/03/09(金) 02:06:50.72 ID:???
>>554
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; でググれ。
556546:2012/03/09(金) 02:23:40.92 ID:???
皆様、ご回答いただき本当にありがとうございます。

>>551
確認しましたが、問題ありません。
init.cgiは確かに存在しているはずなのですが、認識されていないようです。

試しに、アップロードされたinit.cgiに直接アクセスしてみたところ、404エラーが表示されました。(つづりやパスは間違えておりません)
同じフォルダ内にある別のプログラムにはアクセスできるのですが……。

>>552
プロバイダによってCGIの設置しやすさは違うのてでしょうか?
もしよろしければ、CGIが動きやすい所をご紹介していただけないでしょうか。

>>553
申し訳ありません。プログラミングの経験がない私には、「cwdでカレントディレクトリ表示」の意味がよくわかりません。
調べてみましたところ、これはperlにおけるコマンドのことなのでしょうか。
打ち込んでみましたが、上手く動作しませんでした。
557nobodyさん:2012/03/09(金) 02:58:21.99 ID:???
>>555
相当ぐぐったのですけど、「これで動く」「この処理はこう言う処理をしてる」と言う説明はありそれ自体はわかるのですが、
頭でイメージしたものだとどう考えてもエラーが起きるもしくは正しく動作しないはずなのに、「なぜこの書式で正しく動作してるのか?」と言う疑問の解決は見つかりませんでした。
558nobodyさん:2012/03/09(金) 03:20:04.43 ID:???
>>554
Perlより文字コードの勉強を先にすべきだな
(1)〜(3)の疑問はそっち寄りだ
559nobodyさん:2012/03/09(金) 03:37:26.52 ID:???
>>556
KENT から落としてきて、

13行目:use CGI;
24行目と26行目をコメントアウトでとりあえず動くよ。

何も入力せずに 「送信する」 ボタンを押せば、動作してるのが確認できる。
http://www11.tok2.com/home/mikisama/postmail-utf/postmail.html


ただし、これは貼らずにいられない。
Q.メールフォームを設置したいのですがsendmailは利用出来ますか?
http://tok2.com/study/faq/04-07.html

これ以上は スレチ (これ以上もクソも初めからスレチだが・・・) なので、改造スレの方へどうぞ。
560nobodyさん:2012/03/09(金) 03:45:25.88 ID:???
文字で考えるな
ただ単なるバイト列として考えればよろし。

今日は SJIS だと 8DA193FA という4バイト。
俺らが見てる 「今」 という文字は、コンピュータからしたら 「8DA1」 という並びのバイト列でしか無い。
そうゆう並びになったから、文字が見えるというだけだ。
561nobodyさん:2012/03/09(金) 11:31:58.89 ID:???
てst
562554:2012/03/09(金) 13:02:31.68 ID:???
説明が下手で申し訳ありません。

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;を3つに分解した場合、

例えば、”テストtestだよ”を下の形で出力すると

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/$1/g;

83e83X83gtest82BE82E6となります。これを$hexvalue = hex($value);に
いれようとしたのですが上手くいきません。

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/hex($1)/eg;として出力すると

131e131X131gtest130190130230となり、これをpack("c*",131,e,131,X,131,g,t,e,s,t,130,190,130.230);としても当然上手くいきません。
”test”部分は元々半角小文字なのでs/で式から弾かれてるからとわかったのですが、
カタカナ部分の2バイト目は半角英数混じりなのですがここをちゃんと変換してないようですしそう言うオプションも無いのに、なぜ上手くいくのだろう?とよくわかりません。
カタカナの2バイト目の変換はどこでどのように行っているのでしょうか?

>>554のCは、gで次々代入してるからそう言う事なんだろうか?となんとなくイメージ出来ましたが・・・・・
563nobodyさん:2012/03/09(金) 13:33:46.30 ID:???
まず自己矛盾していることに気づいていない糞さ
>@$1で渡されるのは1バイト分なのに
>C@にかぶりますが、なぜ(pack"c",***)で上手く動くのか?
1バイト分のデータ(0x00-0xFF)をpackしてるんだからC*ではなくC

そして文字コードについて全く理解しようとしていない
「テ」の文字コードは「0x83 0x65」で、「e」の文字コードは「0x65」
だから「テ」をパーセントエンコードすると「%83e」であって
「%83」部分さえデコードすれば元の文字に戻るんだよ

ああ壁殴りてぇ
564nobodyさん:2012/03/09(金) 14:03:28.44 ID:???
>>562
ポイントは3つ。
一つ目。
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; はURLデコードするための一文であるということ。
”テストtestだよ” をURLエンコードすると
”%E3%83%86%E3%82%B9%E3%83%88test%E3%81%A0%E3%82%88”になる。(文字コードはUTF-8)
これをデコードして”テストtestだよ”に戻すのがURLデコード。
つまり$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;という一文の役目。

URLエンコードってのは、例えば「テ」(0xe38386)だったら「%E3%83%86」に変換する。
URLデコートってのは、例えば「%E3%83%86」だったら「テ」(0xe38386)に変換する。

2つ目
正規表現のパターンマッチは一つずつ行われる。
$value="%E3%83%86%E3%82%B9%E3%83%88test%E3%81%A0%E3%82%88"
に対して
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
をやると、

$1に"E3"が入った状態でpack("C", hex($1))が実行され、文字列"%E3"を0xE3に置換。
$1に"83"が入った状態でpack("C", hex($1))が実行され、文字列"%83"を0x83に置換。
$1に"86"が入った状態でpack("C", hex($1))が実行され、文字列"%86"を0x86に置換。
(以下略)・・・

だからhexやpackにまとめて”%E3%83%86%E3%82%B9%E3%83%88test%E3%81%A0%E3%82%88”入れようとするのは間違い。

3つ目
>なぜ上手くいくのだろう?
多くのマルチバイトな文字コードは、「漢字は○○から始まる」とか「ひらがなは××から始まる」っていうルールを持ってる。
だから半角英数とマルチバイト文字が混在しても問題ない。
565nobodyさん:2012/03/09(金) 14:16:43.38 ID:???
>>563
@とCはだいたいわかりました。ありがとうございます。

下の方は、pack("c*", 131,101);で”テ”になるのは理解しています。
ただhex($1の段階で131eと出力されてるみたいなので、普通に考えるとpack("c*", 131,c);と言う挙動をさせようとしてるように思えるのですが(当然これだと不具合が出ます)、特に修飾子があるわけでもないのになぜcを自動的に101に変換してるのかがわからないのです。
566nobodyさん:2012/03/09(金) 14:22:20.55 ID:???
>>565
>特に修飾子があるわけでもないのになぜcを自動的に101に変換してるのかがわからないのです。
「e」な。
そんでもってeの文字コードは10進の101。

>普通に考えるとpack("c*", 131,c);と言う挙動をさせようとしてるように思えるのですが
なりません。
pack("C", 131)、pack("C", 101)が順番に動いている。
567nobodyさん:2012/03/09(金) 14:26:11.34 ID:???
>>564
だいぶよくわかりました。本当にありがとうございます。
一文にする事で内部的に自動的にルールで振り分けてるから厳密に考えようとしてもしょうがないと言う事なのでしょうか。
とすると、あの一文を@%を抜くA10進数に変換B文字コードに変換三段階に分けて記述しようとすると逆に自動では行われないのでかなり膨大な記述になるのでしょうか。
わかりやすくしようと同じ挙動をするものをちょっと書いてみようと思ったら配列を使ったりしないとうまくいかない感じでした。
568nobodyさん:2012/03/09(金) 14:35:01.38 ID:???
>>566
なるほど。
内部的にはeを101に自動的に変換して文字列を次々に処理してるのですね。
するとそこの部分だけを抜き出して分けて記述しようとすると、やはりeを101に変換させるコードを書かないといけないと言うことですね。
569nobodyさん:2012/03/09(金) 14:43:54.07 ID:???
すみません ようやく理解しました。
0x83の次にcが来るので”テ”になる
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;の中ではeは未処理のまま0x83をpackで変換した物の後ろに単純にくっつけて出力したと言うことですね

ようやくわかりました。確かに文字コードの勉強が必要でした
よく調べてみます
大変お騒がせしました
570546:2012/03/09(金) 16:47:52.35 ID:???
>>559
ご回答ありがとうございます。
色々と見落としていた点があったようで、大変失礼致しました。
頂いた助言を元に、サーバーを変えて試してみます。
本当にありがとうございました。
571nobodyさん:2012/03/09(金) 21:37:28.29 ID:???
つか use CGI しているのにモジュール使っていないし、
use strict してても全然 strict じゃないw
こんなの怖くて使えないよ('A`)
572nobodyさん:2012/03/10(土) 01:31:51.91 ID:???
●やりたいこと:
 jpg画像のサムネイル作成(orファイルサイズ圧縮)がしたい。最悪トリミングでも


レンタルサーバ上でサムネイル画像を作成したいと思っております。
GDやImage Magick、Imager、epeg等々が入っていないのですが、
何かうまい方法がありましたら教えていただきたいと存じます。

配置してパスを通すだけで使えそうなモジュールがありましたら・・
573nobodyさん:2012/03/10(土) 02:30:16.63 ID:???
まじめな話、KENT はやめとけ。
あれは20年前のシステムだ。
574nobodyさん:2012/03/10(土) 03:05:45.88 ID:???
>>572
width height
575nobodyさん:2012/03/10(土) 05:37:43.25 ID:???
>>574
主旨が画像を読み込むスピードを早くしたいので、widthheight指定だけではではちょっと・・
576nobodyさん:2012/03/10(土) 06:45:54.03 ID:???
・画像を扱えるツール(プログラム)をレンサバにインストールする
 画像を扱うPerlモジュールは大抵別途本体(バイナリ)かライブラリも同時にインストールされてる必要があるからね
・画像加工できる別サーバを用意し、画像ファイルをそちらのサーバに投げてサムネイルを作ってもらい、それをダウンロードする

Image Magick じゃなくてImageMagick
でもImageMagickも入ってないレンサバって今時あるの? 画像ファイルを(たぶん大量に)アップロードできるくらいだから最安でカスカスのレンサバってことでもないと思うんだが
577nobodyさん:2012/03/10(土) 08:45:04.67 ID:???
>>576
ありがとう。それらは考えたんだけど鯖分けるなら自分でサムネつくるのと
手間がかわらないのでなやんでる。

うん。ImageMagickはいってない。
578nobodyさん:2012/03/10(土) 10:20:44.99 ID:???
ほかのレンタルサーバーに移動すればよい。
579nobodyさん:2012/03/10(土) 12:27:16.79 ID:???
フリーなサーバならまだしも、金を払ってるレンタルサーバなら GD ぐらい入ってないの?
perl が駄目でも、PHP で GD が動いてる可能性とかは?
580nobodyさん:2012/03/10(土) 18:41:09.72 ID:???
>>579
PHPでも組んでみたけどだめでした。

素直にさくらとかWebArenaSuiteX使うべきなんですが、
アプロダなのでちょっとアダルト要素入る可能性があり
ピンク系も許可のレンタル鯖でないとだめかなというのもネックになってます。
581nobodyさん:2012/03/11(日) 00:39:52.43 ID:???
HTML解析で質問です。
HTML::TreeBuilderを使って解析をしているのですが、
どうしても

<span class="hogehoge">fuga</span>

の、fugaが取り出せません。

($tree->look_down('class', 'hogehoge')

ではダメなのでしょうか・・・?ご教授お願いしますm(_ _)m
582nobodyさん:2012/03/11(日) 09:53:46.90 ID:???
>>581
同じクラスのエレメントが複数あるとか?
583nobodyさん:2012/03/23(金) 00:48:00.36 ID:???
なかなか短いコードで再現できなくて申し訳ないのですが、

print "DEBUG1\n";
$html =~ m!<a title="([^"]*?)" class="Link88" href="/Models.aspx\?ModelID=$id" id="ModelLink\d+">.*?<td class="Label11">(.*?)</td>.*?<td class="Label14">(.*?)</td><td class="Label13".*? (\d+)%</td>!s;
print "DEBUG2\n";

このm//の1行だけの処理に、20秒ほどかかることがまれに起きます。
その間 top(1)で見てるとCPU負荷が異常に跳ね上がります。
この行はループ中、LWPで取得するたび$htmlが変わりながら数百回実行されるのですが、
異常に時間がかかる時以外は瞬時に通り過ぎます。

時間がかかる時の $htmlを試しにファイルに吐かせてみましたが、
サイズはせいぜい500KBほどで、
このときのファイルを上記の行だけのテストスクリプトに食わせても
瞬時に終了し異常が再現できません。

原因と対策に何か考えられることはあるでしょうか?
584nobodyさん:2012/03/23(金) 01:14:12.71 ID:???
>>583
メモリスワップが発生してるとか。
585nobodyさん:2012/03/23(金) 04:21:38.62 ID:SsskDSLS
質問です。
Perl/CGI側でHTTPのエラーコードを返そうと思います。

  #!/usr/bin/perl
  print "Status: 404 Not Found\n";

  exit;

というコードを書いたとき、ブラウザ上では想定通りに404エラーとして表示されるのですが
Apacheのエラーログを見てみると

  Premature end of script headers: /home/foo/htdocs/bar.cgi

とだけ表示されます。この時、他のエラーメッセージは見当たりません。
きちんと動いてはいるので問題ないと言えば問題ないのですが、これを出さないようにするにはどうしたら良いでしょうか。

・404エラーではなく、普通にウェブページを出力した場合には問題ありません。
・同じディレクトリでは別のCGIも問題なく動いており、パーミッションはそれらと同値に設定してあります。
・確認してみたところバージョンはApacheが1.3、Perlが5.8です。古い(´・ω・`)
586nobodyさん:2012/03/23(金) 04:35:43.93 ID:???
たぶんcontent-typeを書くと消えるというかググれ
587nobodyさん:2012/03/23(金) 04:46:19.26 ID:SsskDSLS
>>586
ありがとう。でもtext/htmlにしろtext/plainにしろ状況は変わらないんだ
588nobodyさん:2012/03/23(金) 04:58:11.94 ID:???
>>585
exitって必要なの
589nobodyさん:2012/03/23(金) 05:11:05.01 ID:???
\n\n
590nobodyさん:2012/03/23(金) 05:15:18.99 ID:???
Header1: foo
Header2: bar
(空行)
body

仮にボディを空にするとしても、ヘッダとボディを隔てるものは必要ですよね
591nobodyさん:2012/03/23(金) 05:46:15.14 ID:SsskDSLS
>>588
確かに585のような最小コードでは、exitは有っても無くても変わらないかも。

>>589-590
ステータスコードの末尾を\n\nにすると、
実際にページが送信されている(といっても改行1つだけだが)という扱いになるのか、
デフォルトの404ページが表示されずに、真っ白のページが表示されるようだ。

ちょっと面倒だけど、ブラウザ表示用にエラーページを用意して、
それを出力するようにすれば、とりあえず問題は無さそう。


.htaccessでErrorDocument指定されてるページに飛ばすには、自前でリダイレクトするしか無いのかなー?
592nobodyさん:2012/03/24(土) 01:12:43.26 ID:???
>>591
普通exitなんて書かないよ?トホホにでも書いてあったのかな。
593nobodyさん:2012/03/24(土) 03:29:50.29 ID:???
>>592
トホホは見てないけど、そうなんだ。
正常終了のときは使わない方がいいのかな。まあ、異常終了ならdie使うけど。
594nobodyさん:2012/03/24(土) 06:48:02.45 ID:???
コードが最小だろうが最大だろうがそんなものは必要ない
595nobodyさん:2012/03/24(土) 08:52:21.86 ID:???
何故exitが不要なのか、
いわゆる「省略の美学」以外に積極的な理由があったら、誰か教えて欲しい。

何らかの弊害(速度や安全性の問題など)があるとか、
別の関数等で置き換えるのが普通だとか、
構造化プログラミングにおけるgoto不要論と同じような理由だとか、ヒントでも構わないので。
596nobodyさん:2012/03/24(土) 09:25:36.37 ID:???
そりゃなくても最後まで行けば仕舞いだけどexitは必ず書いてるな。
597nobodyさん:2012/03/24(土) 09:51:51.12 ID:???
>>595
コンパイル済みのスクリプトをキャッシュして使い回すような環境で
無闇に exit すると良くないケースがある。
http://cast-a-spell.at.webry.info/200801/article_9.html
http://harapeko.asablo.jp/blog/2006/06/29/425898

反対に、書かなくていい場面で書いておくのが「冗長の美学」でしかないのなら、
__END__ なり #exit なりとしておいた方が無害でいい。
598nobodyさん:2012/03/24(土) 10:10:34.01 ID:???
mod_perlとかplackみたいな永続化環境だとアクセスごとに走る部分でexitしたらだめじゃね
なんにせよこれ「いわゆる省略の美学」とは全く別問題
599nobodyさん:2012/03/24(土) 10:43:09.74 ID:???
>>597-598
ありがとう。
mod_perlへの移植(と言ってもかなり書き換えることになりそうだ)を考えるなら、
最初からexitを使わないコーディングが重要ってことか。

mod_perlだと通常のexitは使わないほうがいいってのは聞いたことがあったんだけど、
実際にmod_perlは弄ったことがなくて、その感覚が掴めてなかった。


>>596-597
プログラムを1ファイルで済ませたい場合、
自分はメインルーチンソースファイルの先頭に、サブルーチンを最後にまとめて書くことが多いんだけど、
メインルーチンの最後に、以下はメインルーチンとしては実行されませんよと明言するためにexitを入れたりしてた。
600nobodyさん:2012/03/24(土) 11:58:06.99 ID:???
俺も同じでソースの最初に main() なんだけど、その直前に exit() 書いてる。


use なんちゃら〜

our なんちゃら〜

main();

exit(0);

sub main{
}

sub func{
}


っていう感じ。
601nobodyさん:2012/03/24(土) 17:23:47.75 ID:???
Cから入った人に多そう、とか思った
602nobodyさん:2012/03/25(日) 01:57:35.52 ID:???
基本的に.pmにロジック書いて、.plはそれを呼ぶだけだからexitは滅多に使わないなあ。
603nobodyさん:2012/03/25(日) 15:34:18.54 ID:???
1枚スクリプトで、&main; exit; は有りだと思う。
ただ基本は >>602 のようにするから滅多に使わない。


冗長の美学を語る人が、1枚に長いスクリプト書いてるのは矛盾を感じる。
604nobodyさん:2012/03/25(日) 18:03:11.28 ID:???
>>603
そこはスクリプトの規模によるんじゃね?
短めの、他と共通化出来ないサブルーチンが2〜3個あるくらいなら、分けるまでも無いだろう。
605nobodyさん:2012/03/25(日) 19:02:45.23 ID:???
それはそんなソースになってる時点で論外だな。
606nobodyさん:2012/03/25(日) 19:14:00.38 ID:???
別に嫌みとかでは無いんだけど、>>605 の数百行ぐらいの小さいソースと、
2〜3000行ぐらいの中規模のソースを見てみたい。

ってのも、俺の殆どのソースは1枚で済ましてるから、他人ので学習というか知識を深めてみたいから。
607nobodyさん:2012/03/25(日) 20:04:16.17 ID:???
605は安価がないからなー、自分が思ってるのと全く違う主張の可能性もあるw
608603:2012/03/26(月) 02:46:50.44 ID:???
>>606
>>605 とは別人なんだが、数百行の小さいソースって、1プロジェクトで数百行ってことかな。
1ファイルで4,5百行くらいって話だとちょっと長いかな。
スクリプトファイルを書くにしても、大体いろいろな機能をクラス(pmファイル)に分けてそいつらの責任に任せたほうがメンテが楽。






609nobodyさん:2012/03/26(月) 14:06:22.42 ID:???
>>608
それはモダンなやり方ですか?
610nobodyさん:2012/03/27(火) 01:13:45.03 ID:???
え、モダンかぁ、、、、悪い書き方はしちゃダメだけど、モダンとかは気にしないほうがいいと思うよ、、、
流行り廃りだし、自分で判断したほうがいいよ
611nobody:2012/03/30(金) 00:02:30.52 ID:???
そうだね。モダンは足が速いから。スレッドももうなくなったしね。
612nobodyさん:2012/03/30(金) 00:16:05.99 ID:???
【モダン推奨】Perlについての質問箱 50箱目
http://toro.2ch.net/test/read.cgi/tech/1327110999/
613nobody:2012/03/30(金) 00:29:41.87 ID:???
初心者には敷居が高いから万人向けってわけじゃない
614nobodyさん:2012/04/03(火) 10:03:29.27 ID:???
こちらはcatalystについての質問でもよろしいでしょうか?
catalystのスレはあるものの、人が居なさそうなので。。

catalystとApacheをつなぐために、
perl-Catalyst-Engine-Apache-1.12-1.el5.rf.noarch.rpm
を入れようとしているのですが、依存関係で以下の物が足りないと落ちます。
---> Package perl-Catalyst-Engine-Apache.noarch 0:1.12-1.el5.rf set to be updated
--> Processing Dependency: perl(Apache::RequestRec) for package: perl-Catalyst-Engine-Apache
--> Processing Dependency: perl(Apache::Response) for package: perl-Catalyst-Engine-Apache
--> Processing Dependency: perl(Apache::Const) for package: perl-Catalyst-Engine-Apache
--> Processing Dependency: perl(Apache2) for package: perl-Catalyst-Engine-Apache
--> Processing Dependency: perl(Apache::RequestIO) for package: perl-Catalyst-Engine-Apache
--> Processing Dependency: perl(Apache::URI) for package: perl-Catalyst-Engine-Apache
--> Processing Dependency: perl(Apache::Connection) for package: perl-Catalyst-Engine-Apache
--> Processing Dependency: perl(Apache::RequestUtil) for package: perl-Catalyst-Engine-Apache

いろいろ探すと、mod_perlの旧バージョン(1.9.9)には含まれていたものの最新バージョン(2.0.5)には含まれて居ないモジュールのようです。

対応方法が分かる方、ご教授いただけますでしょうか。
宜しくお願いいたします。
615nobodyさん:2012/04/03(火) 11:11:13.68 ID:???
>>614
人がいなくてもそれがそのスレなんだからそこに書くしかないんじゃ?
人が少ないからで別スレきたら何でもアリになるだろ
616613:2012/04/03(火) 16:39:22.06 ID:???
自己解決しました
Catalyst::Engine::Apache2
なるものがcpanから出てました
ちょうど過渡期のようですね
617nobodyさん:2012/04/04(水) 00:34:44.70 ID:???
過渡ちゃんペッ
618nobodyさん:2012/04/04(水) 18:53:47.59 ID:???
CGIゲーム改造してるんだけど

ID<>名前<>パスワード<>データ各種・・・

みたいに記録してあって下のように処理しててこれが何か所も出てくる
扱うデータ増やすたびに全て修正しなくちゃいけなくてやたら面倒くさい
配列だと見た目で何の変数かわかりにくいし連想配列はつなぐときの順番がばらばらだし
どちらも読み取りだけの時使わない変数まで格納するの無駄かなあと考えてたら先に進まなくなってしまった
変数の追加とか挿入とかするとき一か所くらいの修正でいい無駄の少ない方法ない?

for($i=0;$i<$num;$i++){
   ($id[$i],$name[$i],$pass[$i],...) = split (/<>/, $data[$i]);
   ↓
   処理
   ↓
   $newdata[$i] = "$id[$i]<>$name[$i]<>$pass[$i]<>...";
}
619nobodyさん:2012/04/04(水) 20:03:38.87 ID:???
>何か所も出てくる
subにぶち込んどきゃいいだろ
620nobodyさん:2012/04/04(水) 21:27:07.37 ID:???
そんなあなたにはスライス
621nobodyさん:2012/04/04(水) 22:59:22.68 ID:???
スライスって数字のやつ?何か挿入して増やそうとするとずれるよね
単純に後ろに追加すると位置的にわかりにくいから挿入したいんだが、数字のチェックもしなくていい方法ない?
元のデータの書き換えは再生成するから考えないとして


データ0<>データ1<>データ2<>・・・

データ0<>データ1<>データx<>データ2<>・・・

それとサブルーチンだとどうやって引き渡そうか悩んでる
配列だと結局受け取るときに順番が大事だし連想配列だと上書きする時また<>で連結しにくいと思ったんだが
622nobodyさん:2012/04/04(水) 23:25:45.28 ID:???
順番付き連想配列使えば良いじゃんw
623nobodyさん:2012/04/05(木) 00:00:05.98 ID:???
データファイルにはヘッダを必ず含めれば幸せになれるかも。

スライスは苦手なのでサンプルは今書けないけど、ファイルを全て読み込んだ時のイメージはこんな感じ。

my $data = {};
$data->{'headers'} = [〜];
$data->{'data'} = [
 {○=>△,◇=>□},
 {○=>△,◇=>□},
  〜以下略〜
];

読み書きは @{$data->{'headers'}} の順番で行えば良い

で、読み書きを行うサブルーチンを作れば良い。


CSV 的なデータを連想配列で読み込むモジュールがあった気がする。
624nobodyさん:2012/04/05(木) 00:25:31.57 ID:???
だから順番付き連想配列使えって。
なんで無理して難しい方法で実現しようとするの?
625nobodyさん:2012/04/05(木) 06:21:58.63 ID:???
>>624
例えばこうやるんだよ、って簡単なサンプルコードを書いてやるといいよ。
626nobodyさん:2012/04/05(木) 09:51:23.36 ID:???
>>618
ちょっと書いてみた。
http://www5.puny.jp/uploader/download/1333586646.zip
pass: perl

順番付き連想配列ってこうでいいのかな?
添削歓迎。
627626:2012/04/05(木) 10:42:38.78 ID:???
id とかって配列なのか。
ぱっと見 $i いらなそうなので無視してましたよ。
要件満たしてないっぽいので忘れてください。
628nobodyさん:2012/04/05(木) 13:04:38.74 ID:???
http://www5.puny.jp/uploader/download/1333598575.pl
pass:perl
自分はこう書いた
629nobodyさん:2012/04/05(木) 15:56:41.39 ID:???
>>628 それだったら $data = [array_ref, hash_ref, ...] の方が良くないですか?

my $data = readdata_mod();
my $headers = shift @$data;

for my $hash (@$data){
 $hash->{NAME} .= '【逮捕】';
 print "$hash->{$_}\n" for @$headers;
}

sub readdata_mod{
 my $headers = <DATA>;
 chomp $headers;
 $headers = [split(/<>/, $headers)];

 my $data = [$headers];

 while(my $line = <DATA>){
  chomp $line;
  my %tempdata = ();
  @tempdata{@$headers} = split(/<>/, $line);
  push @{$data}, \%tempdata;
 }
 return $data;
}

それより気になるのは >>618 のソースだと
@id,@name,@pass... と配列があるんですよね。
これをどう処理してるか謎なんで
レコードをなめるだけでいいのか悩むところ。
630nobodyさん:2012/04/05(木) 16:34:07.79 ID:???
そこは好みかな
自分はデータとヘッダは分離させたいので、ああやって書きました。
631nobodyさん:2012/04/06(金) 11:04:06.62 ID:AWfq6sbZ
すいません。perlをコマンドラインで使うやり方について質問させて下さい。
例えば数字の入ったファイル名だけ全部lsしたい時って
どのように書けばいいのでしょうか。
こんな風に書いてみたんですが何も出力されません…
ls | perl -e "print /[0-9]/ "
632nobodyさん:2012/04/06(金) 11:29:12.54 ID:AWfq6sbZ

find . -maxdepth 1 -name '*.gif' | perl -ne 'print if /\/*[0-9]{2}\.gif$/;'
こんな感じで出来ました
633nobodyさん:2012/04/07(土) 02:00:48.78 ID:???
>>632
find . -maxdepth 1 -name "*[0-9][0-9].gif"
634nobodyさん:2012/04/07(土) 02:02:53.93 ID:???
>>632
> if /\/*[0-9]{2}\.gif$/;
これはワイルドカードと正規表現をごっちゃにしているな。別物だからちゃんと区別するように。
635nobodyさん:2012/04/07(土) 04:29:33.70 ID:???
それって
find . -maxdepth 1 -name "[0-9][0-9].gif"
と等価なだけなんじゃないのか
636nobodyさん:2012/04/07(土) 09:58:11.44 ID:???
以下のコードで,https://member.livedoor.com/login/
取得できません.

use WWW::Mechanize;
my $mech = new WWW::Mechanize( autocheck => 1 );
my $url="https://member.livedoor.com/login/";
#my $url="https://www.nodeworks.com";
$mech->get($url);
print $mech->content;


$url を https://www.nodeworks.com とした場合は,取得できます.
https://member.livedoor.com/login/ が取得できない原因として,
何を疑ったらいいでしょうか??
637nobodyさん:2012/04/07(土) 11:49:34.04 ID:???
USER AGENT がちゃんと設定されてないだけでしょ
638nobodyさん:2012/04/07(土) 12:32:23.46 ID:???
639nobodyさん:2012/04/07(土) 19:43:25.79 ID:???
マジレスするとSSLを使用しているページにはCrypt-SSLeayを入れないと繋げない事もある
640nobodyさん:2012/04/07(土) 21:04:03.67 ID:???
あくてぃぶ とか すとろべりー ならインストール後には可能やよ
Linux 標準の ぱーる は おーぷんえすえすえる 入れないとだめですわ シャキーン
641nobodyさん:2012/04/08(日) 11:30:20.98 ID:???
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
を追加すると繋げることもある
642636:2012/04/08(日) 21:41:15.55 ID:???
>>641

https:://gitub.com は,
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
でいけた.

しかし,https://member.livedoor.com/login/ は,それでもいけない.
https://member.livedoor.com/login/ は,特殊なんかな.
643nobodyさん:2012/04/14(土) 20:30:27.28 ID:???
「かんたんプログラミングCGI/Perl」ってこのスレ的にはどうでしょう?
ttp://d.hatena.ne.jp/perlcodesample/20120414/1334359182

この人のブログ、>>2のテンプレに載ってないから心配になって聞いてみました。
644nobodyさん:2012/04/14(土) 20:38:40.49 ID:???
ソースコードに誤字山積ってだけで論外だろ。

そのブログ自体は数年前から、2ch に宣伝気味に貼られるけど
あんま相手にされてない

645nobodyさん:2012/04/14(土) 20:45:44.78 ID:???
>>644の言う通り。その本もブログも絶対に参考にしちゃだめ。
現代的()なPerlなんて覚えてもろくなことにならないから
5.6でも動くようなコーディングを心がけるべし。
あとこいつがプッシュしてるMojoliciousも、ちょっと有名なCatalystとかも
やめといた方がいい。
フレームワークなんてすぐ腐る。
CGIが一番。
646nobodyさん:2012/04/14(土) 21:04:47.55 ID:???
フレームワークは小さなやりたいことに対して規模がデカすぎ
647nobodyさん:2012/04/14(土) 21:09:27.25 ID:???
10年以内に発売されたような高性能PCとかじゃないとすぐメモリを食いつぶされるからな>フレームワーク。
フレームワークは金持ちのお坊ちゃまの娯楽、甘えでしかない。
技術を自分のモノにしたければCGIで泥臭く書け。
648nobodyさん:2012/04/14(土) 21:45:18.04 ID:???
フレームワークごときでメモリが食いつぶされるような
貧弱なマシンで使ってるの?

それ選択が間違いなだけだよ。

ユーザー数、数万、数十万のウェブサービスを作っていれば、
必然と複数台構成のマシンになる。
メモリの話だと1台10GBオーバーとか当たり前。

そういう世界の人に対して高性能PCとか、メモリ容量とか
釈迦に説法ってやつだと思わないか?
649nobodyさん:2012/04/15(日) 11:24:37.83 ID:???
はいはい、Mojoと喪男でがんばってね!
650nobodyさん:2012/04/15(日) 11:27:08.04 ID:???
とにかくCGIで書くことを心がければ小規模から大規模までどんなアプリだって書けるようになる。
フレームワークは覚せい剤。手を出したら終わり。
651nobodyさん:2012/04/15(日) 11:52:49.40 ID:???
まあおれの場合、CGI.pmすら嫌なんでHTML直に書いてるけどね
その方が書きやすいしメンテもしやすいと思ってる
初期の頃からそうしてるけどぶれていないね
652nobodyさん:2012/04/15(日) 11:58:08.00 ID:???
いいねぇ。素晴らしい。
楽はしちゃだめだよね。
653nobodyさん:2012/04/15(日) 13:46:50.99 ID:???
モジュール作成者の世界観とおれが直面している問題とは無関係だから。
モジュールのメソッドの整理具合が、個別の問題にマッチしていないのは
当然あり得ること。
個別の問題を解決するのを車輪の再発明だとは思わない(キリッ
654nobodyさん:2012/04/15(日) 14:12:09.38 ID:???
>>653
そういう場合はラッパーを作ればいい。
655nobodyさん:2012/04/15(日) 14:12:40.71 ID:???
プロとアマチュアの違いを見た
656nobodyさん:2012/04/15(日) 15:17:25.01 ID:???
なんだかんだで、ちょっと機能を足しただけのラップモジュールを作る機会って少なくないね。

自分が今のやってるロジェクトだとHTML::Template系使ってるけど、
共通パラメータやらフィルタやら、細かい部分が多くてなあ。
657nobodyさん:2012/04/16(月) 00:50:12.93 ID:???
ラッパーを作るってことは元のものより粗いものしか作れないでしょ
658nobodyさん:2012/04/16(月) 02:30:46.51 ID:???
>>643
ブログの中で自分の名前間違えてたりするレベルなので、本のほうも
推して知るべし、です。
659nobodyさん:2012/04/16(月) 09:27:44.08 ID:???
もちろん、こいつの雑誌連載も糞。
上手になりたかったらもっと2chを活用しろ。
オライリーと2chだけで十分。
660nobodyさん:2012/04/17(火) 05:05:18.23 ID:???
ある入門書にこう書いてありました
「関数とは、特定のまとまった処理を実行する機能のことです。
・・・一般的に、プログラムの中で呼び出される際にデータを受け取って
特定の処理を行い、結果を返す働きをします」

演算子もこの説明における関数と働きは似ているように見えます
例えば加算演算子が 2 つの数を受け取って和の値を返すというように

関数と演算子に大きな違いがあるのでしょうか?
なんで「関数」と「演算子」とわざわざ呼び分けているわけですか?
661nobodyさん:2012/04/17(火) 12:31:41.99 ID:???
その入門書の信頼性を疑ってみる。
662nobodyさん:2012/04/17(火) 12:31:59.01 ID:???
>>660
違いは無い。引数の取り方が違うだけ。
663nobodyさん:2012/04/17(火) 12:35:26.61 ID:???
入門書なんか捨てろ
Googleも使うな
2chで全て解決
664nobodyさん:2012/04/23(月) 13:21:35.61 ID:???
ttp://toro.2ch.net/test/read.cgi/tech/1330666216/731

勝手に持ってきたけど…
printの前に
binmode(STDOUT);
を追加、が手っ取り早い答えかな。

ちなみにバイナリファイルを<>で取得するのは本来良い考えではないよ。
665nobodyさん:2012/04/23(月) 16:18:26.17 ID:???
frameworkもmoduleも全部自作
ちょっとめんどくさいのだけコピペ
666nobodyさん:2012/04/23(月) 23:16:14.38 ID:???
Perlの場合特にそうなんだけど、演算子に使えるASCII文字は全部使っちゃっ
たわけなんだよ。これ以上演算子を増やすにはアルファベットを並べるしか
ない。それが関数。だって数字を並べると数値になっちゃうからね。
667nobodyさん:2012/04/23(月) 23:38:11.72 ID:???
春休みは終わったから帰れw
668nobodyさん:2012/04/23(月) 23:39:07.69 ID:???
いつ終わったんだよ
669nobodyさん:2012/04/24(火) 00:13:24.36 ID:???
明日も明後日もずーっと夏休みだばか者!
670nobodyさん:2012/04/24(火) 10:22:48.47 ID:???
>>669
奥が深い。
671nobodyさん:2012/04/25(水) 22:26:34.87 ID:+oSgS9z7
どこが?
672nobodyさん:2012/04/25(水) 22:54:01.87 ID:???
<form action="../RealGraphView/Index.asp" method="post" id=form1
name="form1" target="_top">
<input type="hidden" name="SelectPoint" id="SelectPoint" value="">
</form>

上記をmechで記述したいのですが、どのようにしたら良いのでしょうか?
submit か post モジュールでしょうか?
673nobodyさん:2012/04/26(木) 18:55:24.85 ID:???
674nobodyさん:2012/04/27(金) 21:41:56.60 ID:Sw347W35
Perlおもしろいな。プログラミングはJSとPHPしかやったことなかったから新鮮だわ。
いろいろ作業が便利になりそう。
675nobodyさん:2012/04/27(金) 21:48:46.25 ID:???
mech で SelectPoint の value を ../RealGraphView/Index.asp
に渡したい、ということですか?それはCGIに関する質問ですか?
676nobodyさん:2012/04/28(土) 05:21:45.77 ID:???
<form action="../RealGraphView/Index.asp" method="post" id=form1
name="form1" target="_top">
<input type="hidden" name="SelectPoint" id="SelectPoint" value="">
</form>

上記をmechで記述したいのですが、どのようにしたら良いのでしょうか?
submit か post モジュールでしょうか?
677nobodyさん:2012/04/28(土) 05:22:25.20 ID:???
>>675
レスして頂きありがとうございます。
私は社会人になったばかりで、プログラミングをしたことがほとんどなく、上司に何とかしろと言われて困っています。

上司はプログラミングは全く出来ず、零細企業なので相談する相手もいません。

スレチなのかもしれませんが、ヒントだけでも、ご教授頂けないでしょうか?
連休明けには出来るようにしとけ、と言われています(>_<)
678nobodyさん:2012/04/28(土) 05:23:46.66 ID:???
あぁ、前回のを間違えてコピペ、送信してしまいました。ごめんなさい…
679nobodyさん:2012/04/28(土) 08:17:52.38 ID:???
言われたことしか出来ないの?
680nobodyさん:2012/04/28(土) 08:40:53.38 ID:???
使い方が分からないなら無理に使うな。
悩んでる暇があるなら、直接書け
681nobodyさん:2012/04/28(土) 11:24:03.04 ID:???
使い方の分からないmechにこだわらず、HTTPプロトコルでやりたいことを
直接書くほうが吉。覚えるものが少ないし、今後応用も利く。
あるいはmethod="post"をmethod="get"にしてもいいけどね。
682nobodyさん:2012/04/28(土) 11:27:16.96 ID:???
>>679
今の若い人は全員そうだから。おれも内心びっくりしている。
683nobodyさん:2012/04/28(土) 12:44:57.48 ID:???
「今の若い人」「全員」なるほど思考停止じじいか。
こうはなりたくないものだ。だが反面教師としてはいい仕事。
684nobodyさん:2012/04/28(土) 13:44:06.50 ID:???
「最近の若者はダメだ」は昔から言われているが、特に今の若者はひどい。
まず、当事者意識が完全に欠如している。さらに、独り立ちをしようとせず、常に何かに依存し、
消費し、批判するだけの「お客さま」でいつづけようとしている。これはゆゆしき事態であり、
日本社会のありかたにかかわる重大な問題である。

最近の若者は、定職に就きたがらない。
あるいは、会社に入っても一定のポジションで身を立てようとしない。
なぜなら、社会的なかかわりを、全て暫定的・一時的なものと見なしているからだ。

彼らに言わせると、本当の自分は別のところにあり、現実の自分は仮の姿に過ぎないんだそうだ。
本当の自分は棚上げしておいて、いつまでも立場を替え、考えを変え、
自分自身をも変身させる余地を残しておく。一貫した主義主張をもたないか、もたないふりをする。
特定の党派、集団に全てを賭けることを避けようとする。


↑これ1977年に書かれた論評な 1997年じゃないぞ 今から30年以上前の文章だ
685nobodyさん:2012/04/28(土) 14:46:07.99 ID:???
書いてみましたが、セッションタイムアウトとでます。post hidden の書き方がまずいのでしょうか?

#!/usr/bin/perl/ -w

use strict;
use WWW::Mechanize;
use HTTP::Request::Common qw(POST);
#セッション切れるからクッキー必要?
use HTTP::Cookies;
#use Web::Scraper;

use encoding qw(euc-jp);

# cookie_jarの生成
my $cookie_jar = HTTP::Cookies->new(file => $cookie_file, autosave =>
1,ignore_discard => 1);
686nobodyさん:2012/04/28(土) 14:46:57.80 ID:???
my $url = 'hogehoge/PointSelect/Map.asp';
#ブラウザのユーザエージェントのエイリアス名
my $browser_user_agent = "Windows Mozilla";

my $mech = WWW::Mechanize->new();

$mech->cookie_jar($cookie_jar);
$mech->agent_alias( $browser_user_agent );

my $response = $mech->get( $url );

#form POSTする
my %formdata = (
'action'=>'../RealGraphView/Index.asp',
'id' => '01-02',
'name' => 'form1',
'target' => '_top',
'name' =>'SelectPoint',
'id' => 'SelectPoint',
'value' => ''
);
my $request = POST($url, [%formdata]);
my $res = $mech -> request($request);
# 中身のチェックをしてみるよ
print "現在のページのContentは?\n" . $res->content() ."\n\n";
687nobodyさん:2012/04/28(土) 14:49:00.58 ID:???
長かったので二回に分けました。
スレ汚しで申し訳ありませんm(_ _)m
688nobodyさん:2012/04/28(土) 15:16:19.51 ID:???
おれ、若いひと、な
689nobodyさん:2012/04/28(土) 15:42:41.29 ID:??? BE:1408636837-PLT(12000)
multipart/form-data
690nobodyさん:2012/04/28(土) 16:13:31.64 ID:???
そのことに上司が協力的ならば、本当に何とかしたいのかもしれないけど
非協力的なのに何とかしろというのならば、あるいは何とかしたいのかも
しれない(試用期間も終わったし)
691nobodyさん:2012/04/28(土) 16:48:30.97 ID:???
あ、それはクビってこと?笑
692nobodyさん:2012/04/28(土) 17:53:29.20 ID:???
助成金の切れ目が雇用の切れ目
693nobodyさん:2012/04/28(土) 18:24:39.37 ID:???
URL は http:// などのスキーマから書きましょう。
694nobodyさん:2012/04/28(土) 19:48:03.75 ID:???
>>685-686
本題の解決策がわからなくて申し訳ないが気になった点を。
1)1行目のperlの後ろの/は削除(実行できているようだけど)。

2)$cookie_fileは何かのファイル名に変える。
自分の環境では↓のエラーが出ました。
Global symbol "$cookie_file" requires explicit package name at ./script.pl line 14.
Execution of ./script.pl aborted due to compilation errors.
てゆか一連のセッションを実行するならcookieの保存(cookie_jar指定)はいらないはず。
書いてもらったスクリプトには続きがあるのかな?

3)本来スクリプトはUTF-8で書いて
use encoding qw(euc-jp);

use utf8;
とした方がいい。
最終行は対象ページがShift_JIS(cp932)なら
use Encode;
print "現在のページのContentは?\n" . encode("utf-8", $res->decoded_content('charset'=>'cp932')) ."\n\n";
かな。
695nobodyさん:2012/04/28(土) 22:34:34.68 ID:zGua3yDX
Perlを勉強しはじめて一週間。
とりあえずこの本を読んでいるがおおよそ理解できている。
http://www.amazon.co.jp/dp/4774150258
つぎにおすすめとかある??
MovableTypeのプラグインとか作れるレベルには3ヶ月ぐらいでなりたい。

ちなみにプログラミング歴はJavaScriptをまぁまあ、PHPを少々。
696nobodyさん:2012/04/28(土) 23:04:09.66 ID:???
なだいなだ著「片目の哲学」をおすすめします。
自分は中学生の頃読みました。
697nobodyさん:2012/04/28(土) 23:17:08.63 ID:???
自分は幼稚園の頃に読みましたが何か?
698nobodyさん:2012/04/28(土) 23:24:14.90 ID:???
浅田次郎著の「鉄道員」はもう読みましたか?
699nobodyさん:2012/04/28(土) 23:43:56.75 ID:???
最初に読んだ本がこの本でおおよそ理解できていると
いうのはステルスマーケティングの疑いが濃厚ですね
700nobodyさん:2012/04/29(日) 00:15:11.47 ID:???
読み終わったけど、業務に役立つっていうのはシェルスクリプトで書いてた
ものをPerlで書くにはどうするのかって話なのな。んで処理した結果をExcel
に貼り付けるのは手作業なのなwま、いいけどね。
701nobodyさん:2012/04/29(日) 00:23:08.69 ID:???
perlだったらcpanにexcelファイルを操作するモジュール無かったか?
702nobodyさん:2012/04/29(日) 00:26:42.16 ID:???
日本語扱うと50%ぐらいの確率で
壊れるモジュールならあります。
703nobodyさん:2012/04/29(日) 00:29:36.92 ID:???
業務に役立つっていう以上、壊れないバージョンを使う必要があるよ
704nobodyさん:2012/04/29(日) 07:08:52.17 ID:???
>>694
676, 685-686です。
返答ありがとうございます。

1. /いらないですね(>_<)
2. $my cookie_file; を加えました。続きはありません。
3. 文字化けして困ってました。ご指摘ありがとうございます。

質問A
POSTの部分ですが、name と id がそれぞれ2回ずつ出てきます。
同じ変数名でいいのでしょうか?

質問B
form タグ内のid (form1)は、ここには書いていませんが、javascript から返された値だと認識してます。直接、値を記述してよいものでしょうか?
705nobodyさん:2012/04/29(日) 10:58:15.00 ID:???
id はユニークであるべき

name は複数あると、CGI モジュールは配列で返してくると思った
706nobodyさん:2012/04/29(日) 12:58:54.45 ID:???
>>695の本の話題が出るとアンチが湧くようになったが
とりあえず内容の誤りが多いので作者のページの正誤表でフォローが必須なのは事実
逆にそれをわきまえて自分の中で反芻してるなら問題はないでしょ

で、次のお勧めはこれかな
ttp://www.amazon.co.jp/dp/486267108X/
標準添付でも案外見落としてるモジュールがあることに気付く
CGI系はもう扱ってない(代わりに扱ってるのはPSGI/Plack系)点には要注意
707nobodyさん:2012/04/29(日) 15:49:59.28 ID:???
「次にお薦め」は失礼だなと思いつつ、cpanminusを最初に書いてあとは目次
だけあれば十分なのにね。その位ならPerl5ポケットリファレンスに付け足し
てもいける。
708nobodyさん:2012/04/29(日) 18:28:09.76 ID:???
>>707
「cpanminus教えれば十分そんな本いらん」って、お前も随分と失礼な発言だな
2chのPerlスレはそのレベルに達していないどころか
「cpanmもperlbrewも使うな、システムがぐちゃぐちゃになる」
なんてのがまかり通ってたじゃねえか
709nobodyさん:2012/04/29(日) 20:28:14.32 ID:???
あら、長生きなのねw
710nobodyさん:2012/04/29(日) 20:30:21.61 ID:???
ねこ好きのおれとしては表紙のねこだけで2600円払うだけの価値はある
711nobodyさん:2012/04/29(日) 20:37:03.58 ID:???
          ,,、ッヾ゛"''"゙"''"``'''''ヾ、、
       ,,ッヾ             ミ、
     、ヾ                 ミ、
     X゛                   ミ
    ミ              ,,,,,,,,,a''''ヾ.   ミ
   三         ,,a''"       ヾ ミ
   彡       |`ヽ'"            _ヾミ
   彡      ヽ    __     _彡ミ_ミ
    ミ        〉  _彡≡'´     ,r __  |
    ミ     /  〃   _ ヽ 〈 ∠ソ,>.{
     ミ     ヽ    ∠ソ_ヽ, ′ ヽ`ー'' ヽ
     ミ __   |    ー一'     \   !
      `{ r-;\|       ,、    丿ヽ. j
       ヽヽ`コ.`j         / `ー ''"    :i!
        ヽ _     ;  / _,, -―‐''"ア j
         \ i      ヽ ヽ´`ー―一'" /
            `!      `    ⌒   |
          ,、_」 ` 、   \     _ノ
        _/ ヽ    ` ー-=―一'「`i-、_
       / \   \        __,r'´ |     ̄
      /     .\    ̄ ̄ ̄ ̄ ̄     ノ
           `ー―――――― '"
712nobodyさん:2012/04/30(月) 07:35:10.72 ID:???
お薦めを書く人。

よくもまあ日本人の書いた本なんて読むもんだわ。献本でもされてんの?
読んでない(本屋で斜め読み)けど薦めてんの?

普通の人間なら、O'Reilly のラクダ、料理本、PBPあたりを読んで、追加で
Effectiveと救命病棟くらいを読めばいっぱいいっぱいだろ?

逆に、これらを読んでたら後発の日本人の本なんて読む気すら失せるけど。
713nobodyさん:2012/04/30(月) 07:36:19.02 ID:???
CGI 系書くの忘れた
714nobodyさん:2012/04/30(月) 09:47:54.27 ID:???
>>712
でも英語読めないでしょう?
715nobodyさん:2012/04/30(月) 11:36:28.90 ID:???
>>714
読めないなら、翻訳本読めばいいじゃない?
716nobodyさん:2012/04/30(月) 11:59:40.66 ID:???
>>715
外国の本マンセー
日本の本はクソ
でも英語読めないから日本語に訳せ

まあおかしくはないけどね、おかしくは
717nobodyさん:2012/04/30(月) 12:06:24.69 ID:???
>>712
禿同。
日本人が書いた本よりラクダ本の初版の方が無料大数光年倍役に立つわボケ
718nobodyさん:2012/04/30(月) 12:21:35.69 ID:???
日本の本がクソなのは言うまでもない。

日本語訳がある本は、この本は訳して
日本で売れると判断したものだから
選ばれた本でもある。
719nobodyさん:2012/04/30(月) 12:28:39.27 ID:???
>>718
言うまでもない=理由を論理的に説明できない
720nobodyさん:2012/04/30(月) 12:29:53.20 ID:???
本だけじゃない。日本人が書いたモジュールも信頼に値しない。
2chでPlack使う奴が一人もいない現実を見ろよ。
721nobodyさん:2012/04/30(月) 12:36:03.52 ID:???
なんでそう日本人が作ったものを拒絶するのかね
「Rubyが憎いからPython大好き」とかも理解できん
722nobodyさん:2012/04/30(月) 13:03:23.31 ID:???
日本人かどうかというよりもその本自体にオリジナリティがあるのか
どうかで判断するけどな。残念ながらいわゆる日本のひとが書いた
ものはオリジナリティが低い傾向があるのは否めない。ただ日本人っ
てひとくくりにするのは(自分も含めて)どうかと思うんだけどね。
723nobodyさん:2012/04/30(月) 13:51:01.17 ID:???
説明の下手な本が多すぎる。
それと編集の力量がない人が担当するからひどい物しか出来ないんではないかと
724nobodyさん:2012/04/30(月) 14:23:36.77 ID:???
日本人が書いた本って、
自分が知ってる内容を書きました。
で終わってるのが大半だからね。

原書をあたって、それをわかりやすく再構成、解説しました
みたいな本はものすごく少ない。
725nobodyさん:2012/04/30(月) 14:59:00.04 ID:???
・注釈が多い (初心者向けに多いよね)
・箇条書きの方が分かりやすい場合でも、文章で説明したがる

こういった本はクソ
726nobodyさん:2012/04/30(月) 16:16:02.92 ID:???
仕事でフィーチャーホン向けを扱ってるんだけど
そのへんだと海外だと厳しいなあ。
727nobodyさん:2012/04/30(月) 16:53:49.39 ID:???
そうだね海外は遅れてるからね。
728nobodyさん:2012/04/30(月) 17:44:38.24 ID:???
>>724
だったら原書読んだ方がはるかにマシ

しかし原書も古い書き方を見捨てモダン()に走る兆候がみられてきている
高い新品の本を買うなら一昔前の版を安く買ったほうがコストパフォーマンス面では断然良い
729nobodyさん:2012/04/30(月) 17:56:01.18 ID:???
原書にはどこにもモダンPerlなんて出てこなくて日本国内だけの幻想だけどな
わざわざ敷居を高くして付き合いづらいものにしようなんて意図は全くない
730nobodyさん:2012/04/30(月) 18:09:03.43 ID:???
>>729
お前もモダン()って言葉に踊らされている
要は書き方の問題だよ
自分一人で満足するなら新しい書き方でもいい
でも他の人でも保守できるようにするなら古典的な書き方の一択しかない
731nobodyさん:2012/04/30(月) 19:33:27.10 ID:???
モダン=普通
なんだから、モダンなんて言われてないの当たり前

モダンと言わなくても、モダンに書くのが海外
732nobodyさん:2012/04/30(月) 20:49:51.58 ID:???
こいつ英語も分からんのか…
733nobodyさん:2012/04/30(月) 21:00:57.20 ID:???
http://dictionary.goo.ne.jp/leaf/ej3/54376/m0u/modern/

1 ((限定))現代の, 近ごろの, 今の
modern city life
現代の都会生活.

2 ((限定))近世の, 近代の. ⇒ANCIENT11, CLASSICAL, MEDIEVAL
modern history

近世史(ほぼルネサンスから現代まで).
3 〈流行・考えなどが〉現代風の, 新しい, 最新の, モダンな(up-to-date);((限定))〈芸術・文学・音楽などが〉現代的な
modern dance
モダンダンス
modern fashions
最新の流行型.
━━[名]((しばしばthe ?s))現代人;新しい思想の持ち主
This author is one of the moderns.
この作家は現代の作風を代表する一人である.
734nobodyさん:2012/04/30(月) 21:19:31.95 ID:???
今風の書き方けなしてまで古い書き方押し付ける奴って迷惑でしかない
735nobodyさん:2012/04/30(月) 21:48:32.78 ID:???
つまり、旧仮名遣いでやれと
736nobodyさん:2012/05/01(火) 01:20:21.22 ID:???
お、モダンのねただな!参戦しちゃうぞ!

モダンじゃないとするとどうして「古く」なっちゃうのかちょっと
教えてくれよ、そこのノータリン。
737nobodyさん:2012/05/01(火) 12:35:54.71 ID:???
マリリンモンローノータリン
738nobodyさん:2012/05/01(火) 21:05:19.98 ID:???
Perlはこれまでに同心円状に機能を拡張してきていて、高い後方互換性を
維持してきている。そこで、

同心円の内側のみを使ってスクリプトを記述すれば、古いインタプリタでも
新しいインタプリタでも実行できて便利(そういう需要がある)。

と考えるのと

同心円の外側の部分のみを使ってスクリプトを記述すれば、古いインタプ
リタを根絶できるので便利(複数のインタプリタをメンテするのは無理・無駄)。

と考えるのとがあり、目指していることが違うので議論はいつも平行線で
終わってしまう。
739nobodyさん:2012/05/01(火) 22:39:14.05 ID:???
まず、俺の作ったアプリを
今よりも古いOSで動かすとかまずありえない。
740nobodyさん:2012/05/01(火) 23:19:15.85 ID:???
それぞれの需要外の話をし始めるから、議論がよじれる。
741nobodyさん:2012/05/02(水) 23:55:49.46 ID:???
需要外は想定の範囲外、断固外。
742nobodyさん:2012/05/03(木) 12:53:45.35 ID:???
いままでと違う環境でCGIが動かないのですが
a.cgiからlib/b.cgiをrequireするんですが
 Can?t locate ./lib/b.cgi in @INC
とエラーが出てしまいます。
コマンドで
 perl a.cgi
だと問題なく動くのでCGIの場合に相対パスで読み込めてないような気がします。
どこの設定を見直せばいいでしょうか?

./
 |
 |a.cgi
 |
 |lib-|
        |b.cgi
743nobodyさん:2012/05/03(木) 14:16:30.71 ID:???
前の環境を書く。

今の環境を書く。

前の環境に戻す。
744nobodyさん:2012/05/03(木) 14:44:25.44 ID:???
前の環境と今の環境のカレントディレクトリを調べる
require を相対パスで書かずに絶対パスで書く
745nobodyさん:2012/05/04(金) 13:56:44.21 ID:???
>>738
後者が古いものを切り捨てようとしているのに対して、前者は新しいものを
切り捨てようとしている【わけではない】ことに注意する必要がある
746nobodyさん:2012/05/04(金) 15:59:43.14 ID:???
>>745
つまりPerl4で書くのが最良である、と。
747nobodyさん:2012/05/04(金) 17:49:33.26 ID:???
>>743-744
mod_perlだったみたいで互換性ないの知りませんでした
ふつうのCGIにしたら問題なく動きました
748nobodyさん:2012/05/04(金) 17:53:38.97 ID:???
>>745-746
はいはいお年寄りは大切にしましょうね
そのために若者が犠牲になりましょうね
749nobodyさん:2012/05/04(金) 21:41:24.52 ID:???
学ばない若者は残念ながら...しかないですね
しかたがない
750nobodyさん:2012/05/05(土) 05:26:52.43 ID:???
>>745-746,748-749
共に生きよう。
751nobodyさん:2012/05/05(土) 23:38:10.71 ID:???
いつかはモダンというものになるわけなんだけど、どうしてそんなに
あせっているのかが訳わからない
752nobodyさん:2012/05/06(日) 09:53:21.29 ID:???
モダンはその時々の流行だから、
余程古い書き方してなけりゃ無理して追う事は無い
753nobodyさん:2012/05/06(日) 10:49:50.61 ID:???
慌てて追いかけると失敗作バージョンではまることがあるからね
754nobodyさん:2012/05/08(火) 11:27:12.65 ID:KnJQK4vi
mime liteでメールを送ったところ 送信者、CC、添付ファイルが文字化けしてしまった。
エンコード指定すれば回避できると思い調べていたがどうにも・・・orz

送信者(MailFrom) : テスト送信 ぬるぽ <[email protected]>;

送信

{文字化けした文字} <[email protected]>;
755nobodyさん:2012/05/08(火) 13:58:50.62 ID:???
encode/decodeぐらいちゃんとやっとけ
756nobodyさん:2012/05/08(火) 14:04:12.49 ID:???
MIME::Liteの名前もちゃんと書けない人には無理な相談だな
757nobodyさん:2012/05/10(木) 11:20:36.37 ID:???
mime_encodeを指定して送ったところ そのままの文字で出てしまって・・・
普通 -=utf8? みたいなのからはじまって = で終わるかんじだとおもうんですが・・・どうしたらorz
758nobodyさん:2012/05/10(木) 12:38:20.34 ID:???
>>757
MIME::LiteはMIMEヘッダ用のencodeはやらないので自前でやれ、てことらしい
encode("MIME-Header-ISO_2022_JP", "ぬるぽ");
# =?ISO-2022-JP?B?GyRCJEwkayRdGyhC?=

参考:
ttp://pmakino.jp/tdiary/20061215.html
ttp://iandeth.dyndns.org/mt/ian/archives/000628.html

あとMIME::Liteはもう更新されてないのでEMail::Senderとか使えとマニュアルにあった
ttp://search.cpan.org/~rjbs/MIME-Lite-3.028/lib/MIME/Lite.pm
759nobodyさん:2012/05/10(木) 12:40:25.73 ID:???
あ、MIMEでUTF-8エンコードなら
use utf8;
print encode("MIME-Header", "ぬるぽ");
# =?UTF-8?B?44Gs44KL44G9?=
760nobodyさん:2012/05/10(木) 14:41:15.55 ID:???
use Encode; しないで use utf8; だけでいける?
と自分で確認せずに質問する私
761758-759:2012/05/10(木) 16:43:05.99 ID:???
>>760
ごめんなさい、use Encode;ないと無理ですね_| ̄|○ il||li
ちなみに>>758はuse utf8;不要、>>759は要use utf8;です
762nobodyさん:2012/05/10(木) 23:52:03.09 ID:???
また Encode がらみか
763nobodyさん:2012/05/11(金) 00:48:08.10 ID:???
日本語扱うならそりゃ当然Encodeでるだろw
764nobodyさん:2012/05/11(金) 01:08:31.24 ID:???
>>761
encode() に渡されるのはフラグの立った utf8

まずは日本語の扱いをもっと学習した方が良いかも
765nobodyさん:2012/05/11(金) 01:11:10.98 ID:???
Encode、EncodeってそんなにEncodeが好きだったらEncodeと結婚すればいいのに
766nobodyさん:2012/05/11(金) 01:12:05.76 ID:???
それはエロゲの話だろw
767nobodyさん:2012/05/11(金) 01:14:41.05 ID:???
Perl、PerlってそんなにPerlが好きだったらPerlと結婚すればいいのに

>>765
こうですか?
あなたが何を言いたいのかさっぱりわかりませんw
768nobodyさん:2012/05/11(金) 01:24:19.42 ID:???
ま、初心者スレなんでその辺は
769nobodyさん:2012/05/11(金) 16:29:39.44 ID:???
既出かもしれませんが、お願いします。

CGIなんですけど
open(LOG, ">>/opt/lampp/test/LOG");
とか、
if(!open(LOG, ">>LOG")) {

とかでログファイルをopenしています。

二つのファイルとも、パーミッションは
-rw-r--r-- で同じなんですけど、
下の方で開けたログファイルは、後から同じ上書きopenで開けず
エラーになります。まぁ手動で下のファイルだけ、
-rw-rw-rw- とかに変えればいいんですけど。めんどくさいので
いい方法ありませんか?っていうか何が原因ですか?

よろしくお願いします。
770nobodyさん:2012/05/11(金) 17:02:14.89 ID:???
とりあえず俺は馬鹿なんでオマエさんの文章を読むのが辛いってのと
openは3引数で使う、グロブじゃなくて変数を使うってところか
771nobodyさん:2012/05/11(金) 18:35:09.50 ID:???
SJISで書いたコードをUTF-8にエンコードして、メールのヘッダに書き込みたい場合どんな感じになるんだろう・・・
772nobodyさん:2012/05/12(土) 14:16:24.41 ID:???
POSTで受け取ったメールアドレスをif文判定したいんですができない・・・

if ($in{'mail'} eq "[email protected]"){
 処理〜
}

これじゃダメなんですか?
773nobodyさん:2012/05/12(土) 14:21:07.43 ID:???
>>772
メールアドレスの所をしんぐるくぉーてーしょんに変えるがいい

if ($in{'mail'} eq '[email protected]'){
774nobodyさん:2012/05/12(土) 14:34:58.97 ID:???
>>773
できました!たったこれだけだったんですね・・・。
助かりました〜
775nobodyさん:2012/05/12(土) 15:45:18.56 ID:???
うむ。今度から"でダメだったときは'を使えば良い。
776nobodyさん:2012/05/12(土) 16:02:35.92 ID:???
そういう雑な覚え方じゃなくて…
ダブルクォーテーション内では変数は展開されるから、
メールアドレスの「@hoge」が配列として扱われて展開されちゃうから
シングルクォーテーションを使って変数が展開されないようにするか、
もしくは「\」でエスケープして "hoge\@hoge.com" のように書く
と覚えておいた方がええんでは
777nobodyさん:2012/05/14(月) 11:15:17.47 ID:???
perlのシングルクォーテーションの使い方って結構変わってる?よね
778nobodyさん:2012/05/14(月) 11:59:37.23 ID:???
ダブルクオートの時だけinterpolateできるって仕様はシェル(スクリプト)?から来たものだろうし、Rubyも同じじゃん?
"@foo" が展開される罠は他の言語にはないけどさ
779nobodyさん:2012/05/23(水) 17:27:24.18 ID:rf0/+ult
縺?繧薙%縺?繧薙%
780nobodyさん:2012/05/23(水) 17:28:38.79 ID:rf0/+ult
縺?繧薙%縺?繧薙%
781nobodyさん:2012/05/23(水) 17:32:33.00 ID:rf0/+ult
縺?繧薙%縺?繧薙%
782nobodyさん:2012/05/23(水) 18:59:49.41 ID:rf0/+ult
縺?繧薙%縺?繧薙%
783nobodyさん:2012/05/23(水) 19:32:41.29 ID:???
(´・ω・`)?縺?繧薙%縺?繧薙%
784nobodyさん:2012/05/23(水) 20:09:04.03 ID:???
"" で展開、'' は展開しないは、基礎の基礎だから、罠とは言えないだろ。
785nobodyさん:2012/05/23(水) 21:10:40.89 ID:???
>>783
何度も投稿して、文字化けで上手くいかないと涙目な>779なのかもしれん
786nobodyさん:2012/05/23(水) 22:36:11.06 ID:???
>>784
Perlの罠といえば、誰もが引っかかるeqとか?
787nobodyさん:2012/05/24(木) 04:21:58.60 ID:???
>>786
eqで何が引っかかるの?
788nobodyさん:2012/05/24(木) 09:35:27.46 ID:???
しばらく他の言語やってPerlに戻ってくると文字列比較なのに==使っちゃうとか結構やるわ
789nobodyさん:2012/05/24(木) 19:30:42.39 ID:???
==だと具体的にどういう比較になるんだっけ?
790nobodyさん:2012/05/24(木) 19:42:26.19 ID:???
数値に変換して比較
791nobodyさん:2012/05/25(金) 00:00:56.26 ID:???
数字以外があると warning
792nobodyさん:2012/05/25(金) 04:32:23.39 ID:???
変数がundefだと、warning
793nobodyさん:2012/05/25(金) 06:43:20.05 ID:???
俺の人生、warning
794nobodyさん:2012/05/25(金) 08:58:48.21 ID:???
>文字列の==比較
特定の用法でなら、使い道ってあるんかな。

例えばCとかなら、使いにくい仕様でも、使い勝手を犠牲にして低レベルな処理にしたとか、
低レベルだからこそPGが直に弄れるメリットも無くはないってのが想像出来るんだけど。
795nobodyさん:2012/05/25(金) 13:41:56.50 ID:???
>>794
ん?
== と eq の話しなのだが?w
796nobodyさん:2012/05/25(金) 19:34:09.54 ID:???
その話だが?
797nobodyさん:2012/05/25(金) 20:31:46.80 ID:???
何かよくわからんが、== は「両端を数値に変換してから比較」する演算子なので、どんな用法でも「文字列比較」はできないよ
798nobodyさん:2012/05/25(金) 20:47:50.48 ID:???
Perl側で自動的に区別することも出来たかもしれないけど「10」と「10.0」の比較なんかは困りそうよね
799nobodyさん:2012/06/07(木) 23:29:12.95 ID:???
環境の話で恐縮なのですが質問させてください。

EPICとpadwalkerで環境構築してデバッガを動かしてみたのですが、値で文字化けが起きていて困っています。
eclipse.iniには-Dfile.encoding=utf-8を追記して構文検証が動くのは確認してます。

環境のバージョンは下記の通りになります。

eclipse:3.7.2
epic:0.5.46
activeperl:5.14.2
padwalker:1.93

以上、よろしくお願いします。
800nobodyさん:2012/06/10(日) 21:57:43.97 ID:???
1
配布されているcgiってstrictやwarnings使ってないやつも結構あるんだが
やっぱりローカルで十分テストしたら外しておいた方がいいの?
それとも単に局所化も考えていないだけの駄コードなだけ?

2
実行ファイルだけじゃなくてライブラリにもstrict,warningsって記述しないと意味無い?
だとすると上で書いたように実際に運用する時外した方がいいとするといちいち全部外さなきゃいけないの?

3
諸設定を分離して別ファイルでグローバル変数として定義してると
実行ファイルなどで「1回しか出てこねーぞ」と怒られてしまいます
どんな回避方法がベストですか

どうせsjisへのconvertしか使わないから不要な部分カットしたjcode.plが一番よくねと思って
jcode.plを見たら思った以上に解読難しかった(´・ω・`)
801nobodyさん:2012/06/10(日) 22:23:30.29 ID:???
1. ケースバイケース
2. no が使えるプラグマは、ほぼレキシカルスコープ。
 no strict ; no warnings
 ライブラリだろうと、スコープから外れたら効力は無い。
3. Exporter 使って export すれば?
802nobodyさん:2012/06/10(日) 22:26:24.92 ID:???
そんなもん削って得られる利益ってどんだけだろうね?
803nobodyさん:2012/06/10(日) 23:19:34.11 ID:???
なんで use strict; と user warnings; を削る必要があるのか理解できないんだが。
804nobodyさん:2012/06/10(日) 23:58:10.87 ID:???
use strict; や use warnings; って環境によっては使えないからね。
まあ、そういう経験ない人に言っても伝わらんだろうけど。
805nobodyさん:2012/06/11(月) 00:29:11.97 ID:???
大昔に書かれたスクリプトで、メンテしようにもstrict入れると大幅書き直しになるやつとかなw
806nobodyさん:2012/06/11(月) 04:42:03.10 ID:???
>>804
strict や warnings が使えない環境なんてあるんか? 思いつかん。
807nobodyさん:2012/06/11(月) 04:49:40.79 ID:???
命令 if 条件
命令 or die
これまとめて書きたかったらどう書くの?
命令 if 条件 or die とかでオッケー?
808nobodyさん:2012/06/11(月) 06:00:31.52 ID:???
条件 and 命令 or die;
時と場合によっては、括弧で括って演算子の実行順位が変更されないように。
809nobodyさん:2012/06/11(月) 21:39:23.02 ID:???
>>806
% corelist strict
strict was first released with perl 5
% corelist warnings
warnings was first released with perl v5.6.0

5.6 未満の鯖を使ってる人なら辛うじて「使えない」と
言えるかも知れんけどねw
804 みたいな意見は、 KENT あたりの強弁を鵜呑みに
してるとしか思えんよ。
810nobodyさん:2012/06/11(月) 23:39:17.35 ID:???
普通に5.6より前の環境を指してるんだと思ってた。
811nobodyさん:2012/06/12(火) 01:06:42.34 ID:???
単なる未経験者、乙。
812nobodyさん:2012/06/12(火) 05:17:36.52 ID:???
10年以上前の鯖を今使ってる奴、いんの?
use strict に至っては、1993 年実装だぞ。
813nobodyさん:2012/06/12(火) 06:08:24.36 ID:???
ちょうど今やってる仕事が、strictは使えるけどwarnningsが使えない環境だったりする。
strictも使えないサーバは見たことないな。
814nobodyさん:2012/06/13(水) 01:58:11.19 ID:???
さすがにwarnningsはうちでも使えないな。5.10.1だけど。
815813:2012/06/13(水) 02:04:10.58 ID:???
おっと、スペルミスってたか。失敬。
816nobodyさん:2012/06/13(水) 03:15:49.57 ID:???
どうも古い環境をいつまでも使っていて
自分で自分の首を絞めてるだけに見えるな。

一応リリース日書いておくわ。あなたはいったい何年前のマシンを使ってるんですか?

Perl 1.0 1987年12月18日
Perl 2.0 1988年6月05日
Perl 3.0 1989年10月18日
Perl 4.0 1991年3月21日
Perl 5.0 1994年10月17日
Perl 5.5.0 1998年7月22日
Perl 5.6.0 2000年5月22日 warnings導入
Perl 5.8.0 2002年7月18日 Unicode正式対応
Perl 5.10.0 2007年12月18日
Perl 5.12.0 2010年4月13日
Perl 5.14.0 2011年5月14日
Perl 5.16.0 2012年5月20日
817nobodyさん:2012/06/13(水) 04:35:00.28 ID:???
自分では環境を決めらんないことって、珍しくないよね?
818nobodyさん:2012/06/13(水) 05:00:19.82 ID:???
自分で決められなくても
提案は出来るだろ。
819nobodyさん:2012/06/13(水) 06:39:10.27 ID:???
そもそも、時と場合によってはedが活躍する様な、本当にメモリが貴重だった時代の、

(開発用のモジュールはリリース時には滅多に必要にならないんだから)
use strict; -wスイッチは切りましょう
(トラブったら、その時ONにしてデバックすれば良い)。
ってお作法の名残りだろ。本来の意味でのバッドノウハウ(?)
で、アホが行間の意味を考えず、 warningsに置き換えただけ。

perl5.6時代の当初は後方互換 = 環境依存と言う理由が後付けされたが、
それだったら、warningsを使わず -w使えばいいだけの話
820nobodyさん:2012/06/13(水) 07:22:17.87 ID:???
提案が認められないことなんて珍しくないがな。
社会に出たことないのか?
821nobodyさん:2012/06/13(水) 12:32:37.23 ID:???
この負け犬の社畜野郎めが!!
822nobodyさん:2012/06/13(水) 16:02:50.21 ID:???
請負だと、提案はできても最終的に決定するのはクライアントだしなー。
別環境の構築まで仕事として依頼されれば喜んでやるけどさ。
823nobodyさん:2012/06/13(水) 19:16:09.34 ID:???
あえて5.6とか用意するクライアント様ってそんなに多いんですか…
824nobodyさん:2012/06/13(水) 19:39:09.52 ID:???
違う。5.0系を用意してくれてんの
825nobodyさん:2012/06/13(水) 22:33:10.23 ID:???
ありがたいことに5.005を用意してくださっている
ありがたーいお客様ですねわかります
826nobodyさん:2012/06/13(水) 22:37:18.89 ID:???
そして客に迷惑をかけて、
それを客のせいにするわけですねw

環境がー、環境がー、
827nobodyさん:2012/06/13(水) 22:38:41.15 ID:???
昔のバージョンってのは
新しい機能が使えないだけじゃなくて
バグがあるんだよ。
828nobodyさん:2012/06/13(水) 22:39:19.57 ID:???
たとえお客様が4系を用意してもありがたく4系に合ったプログラムをさせていただくのがSIerのマナー
5系は甘え
829nobodyさん:2012/06/13(水) 22:40:23.34 ID:???
>>827
それこそ甘え
そんなもんよきにはからえよ
830nobodyさん:2012/06/13(水) 22:43:18.44 ID:???
一、新しいバージョンに頼るな。古いバージョンでも動くよう、古いバージョンにある機能だけを使え。
一、CPANモジュールに頼るな。Perlに付属するモジュールだけを使え。
一、perldocに頼るな。Webにアクセスして検索もするな。本に書いてあることを全て記憶して臨め。
831nobodyさん:2012/06/14(木) 08:20:28.86 ID:???
ちっとも「甘え」じゃねえよ。おまえはスーパーブラックワタミの社長か。
832nobodyさん:2012/06/14(木) 08:47:12.70 ID:???
>>826
「せっかく5.6を用意してやったのに使えないと申すか!」なんて非実在お客様を引き合いに出すなよ
833nobodyさん:2012/06/16(土) 23:40:53.22 ID:???
2chばっかやってないで少しは実社会に接してみろよ、そんな理想社会
なんてないんだから。
834nobodyさん:2012/06/17(日) 00:54:41.36 ID:???
流石に、今から環境を立ち上げるような案件で5.0とかは無いと思うけどね。
835nobodyさん:2012/06/17(日) 03:23:24.18 ID:???
>>833
てめえの住んでる実社会とやらにはブラックワタミしか存在してないようだな。
836nobodyさん:2012/06/17(日) 08:30:35.87 ID:???
お前らがブラックとあざ笑う会社を排除したら日本は滅亡するぞ
お前らの生活を支える会社をもっと大切にしろ
837nobodyさん:2012/06/17(日) 10:01:36.17 ID:???
>>836
s/(?:お前ら|日本)(は|の)/俺$1/g;
838nobodyさん:2012/06/17(日) 10:46:30.55 ID:???
>>816
Jperlが抜けてるけど、海外生活長いの?
839nobodyさん:2012/06/17(日) 20:01:25.21 ID:???
JPerlってなんか久しぶりに聞いた
840nobodyさん:2012/06/18(月) 04:10:39.17 ID:???
パソコンを新調したんでこれからperl5.005をインストールします。
841nobodyさん:2012/06/18(月) 09:15:28.84 ID:???
>>840です。
5.005でも十分とわかりました。
5.6以降を使うのは甘えです。
CPANモジュールに頼るのも甘えです。
842nobodyさん:2012/06/18(月) 10:21:41.00 ID:???
当人がそれでいいならいいんじゃね?
843nobodyさん:2012/06/18(月) 12:13:55.57 ID:???
>>840です。
当人だけが満足しているだけじゃだめなんです。
周りの人間が5.6以降やCPANモジュールなどに依存したコードを書いて
他人に迷惑をかけることを防がなければなりません。
そのためにもルールは守っていただきます。
844nobodyさん:2012/06/18(月) 13:21:15.86 ID:???
古いコードを書いて足を引っ張ってるのはお前w
845nobodyさん:2012/06/19(火) 06:28:15.00 ID:???
新しいバージョンを薦めてる人ってEcodeのバグを恐れて薦めてるんだろう
けど、もともと使ってない俺達には関係ない話なんだけどな
846nobodyさん:2012/06/20(水) 00:33:54.27 ID:???
ふぅーっ(溜息)
おまえさんのJcode好きには負けたよ...
おれは降りるから、ここ好きに使っていいよ。

(でも荒らすんじゃないぞ)
847nobodyさん:2012/06/23(土) 20:26:58.26 ID:???
"ブラックしか"と読めた引篭りの読解力。
848nobodyさん:2012/06/23(土) 21:29:02.36 ID:???
初めての4版の翻訳が出るみたいだな。
849nobodyさん:2012/06/23(土) 23:12:30.52 ID:???
別に古いバージョンで書いても問題起こしたこと無いけどな
「ノウンバグは仕様」 という言葉をキミに授けよう
850nobodyさん:2012/06/30(土) 16:43:21.68 ID:???
自治厨の放火で絶賛炎上中のPerlスレから勝手に持ち込み。
ttp://toro.2ch.net/test/read.cgi/tech/1336267272/791
> 質問と言うか助けてください
>
> http://.....hoge.cgi?hage=hige&mage=1,2,3
> 上記の引数付きのものをデバッガで実行するのって
> perl -d hoge.cgi hage=hige mage=1,2,3
> で合ってますか?
>
> また、この引数って何処から取れば良いのでしょうか?@ARGV?
>
> 何処にも入れた引数見つからなくて泣きそう…
851nobodyさん:2012/06/30(土) 17:29:30.01 ID:???
>>850
その火をこっちに持ち込むんじゃねえよゴミ
質問者が持ち込むならまだしもお前が持ち込むとか意味不明
こっちまで荒らすつもり?
852nobodyさん:2012/06/30(土) 17:32:55.61 ID:???
>>851
あっちから来たのバレバレですよ
>質問者が持ち込むならまだしも
そうだったらマルチポストガーって騒ぐんだろ?
853nobodyさん:2012/06/30(土) 19:48:47.09 ID:???
どうしたのこの人
あっちのスレ見たけどもう質問者がバカッターで教えてもらったって書いてあるじゃん
854nobodyさん:2012/06/30(土) 20:46:14.07 ID:???
おいおい、あれが本人のだと思ってる奴一人もいないだろw
855nobodyさん:2012/06/30(土) 21:57:45.69 ID:???
>>851>>853-854
もうねあっちから来たって分かってるんだよね。
さっさと答えろゴミクズ共。
856nobodyさん:2012/06/30(土) 22:01:56.56 ID:???
>>855
市ねよニート
857nobodyさん:2012/06/30(土) 23:00:50.01 ID:???
Perlをどこでどうやって覚えましたか?
デバッガのことを知っているのに引数の取得の仕方を知らないのは、かなり
不自然なので、きっとみんなはネタだと思ってスルーしていますよ。
858nobodyさん:2012/06/30(土) 23:37:05.04 ID:???
これだけレスあるのに?w
859nobodyさん:2012/07/01(日) 01:16:46.79 ID:???
使えもしないデバッガを使わずに print で解決しつつある。
860nobodyさん:2012/07/01(日) 01:28:20.30 ID:???
お前の話か?
861nobodyさん:2012/07/01(日) 01:43:44.80 ID:???
>>854
本人かどうかは知らんけど本人ならそれはそれでもう終わった話だし、
違うなら本人が貼りにくるんじゃないの?
862nobodyさん:2012/07/01(日) 02:09:11.20 ID:???
>>850
そんな質問してる基地害は泣いてればいいと思うよ 世の中に必要ないしw
863nobodyさん:2012/07/01(日) 05:57:35.97 ID:???
うるさいゴミ
864nobodyさん:2012/07/01(日) 13:19:59.70 ID:???
>>862
いいからクズニートは市ね
マジで市ね
ニートに生きてる価値あると思ってんの?
865nobodyさん:2012/07/01(日) 14:58:36.35 ID:???
もちろんニートだろうがなんだろうが生きてるだけで価値はある。
866nobodyさん:2012/07/01(日) 14:59:40.76 ID:???
# hoge.cgi
for(@ARGV){ print $_, "\n"; }
__END__
# 素人にこんなこと頼むほうが間違ってると思うけどな
867nobodyさん:2012/07/01(日) 17:39:20.70 ID:???
>>866=情報乞食に餌を与える基地害
868nobodyさん:2012/07/01(日) 19:16:28.01 ID:???
もう夏厨の季節か・・・
869nobodyさん:2012/07/01(日) 19:34:10.42 ID:???
質問スレで質問者に噛みついてるヴァカは何なの?
質問スレはどんな質問したっていいんだよ。
どんな質問だろうと答えられないなら黙ってろよks
870869:2012/07/01(日) 19:36:26.53 ID:???
子供の作り方を教えてください
871nobodyさん:2012/07/01(日) 22:42:02.49 ID:???
>>870
-d オプションをつける
872nobodyさん:2012/07/02(月) 00:22:38.63 ID:???
Pregnancy の D か
873nobodyさん:2012/07/02(月) 01:10:03.89 ID:???
1.まずちんこを勃起させます
874nobodyさん:2012/07/02(月) 01:14:31.81 ID:???
ぼ、ぼっきさせました
875nobodyさん:2012/07/02(月) 12:48:18.72 ID:JlbMNHfq
次は?
876nobodyさん:2012/07/02(月) 14:06:36.10 ID:???
折ります
877nobodyさん:2012/07/02(月) 20:43:28.96 ID:???
ぼっきさせたまま折るとか処女の発想だな
ぼっき見たことないんだな
878nobodyさん:2012/07/03(火) 00:34:14.67 ID:???
中折れのことだろ
879nobodyさん:2012/07/04(水) 12:21:05.93 ID:???
早漏
880nobodyさん:2012/07/04(水) 22:18:08.21 ID:???
オーバーフローの前にセグメンテーションフォルトで落ちるだろ
881nobodyさん:2012/07/05(木) 05:29:04.45 ID:???
誤爆かよw
882nobodyさん:2012/07/05(木) 12:25:39.86 ID:???
佐藤かよ
883nobodyさん:2012/07/05(木) 12:53:35.88 ID:???
佐藤かよ誰かと思って調べてみたらけっこう可愛いかった。
こんな子と一晩ハメまくりたい。
884nobodyさん:2012/07/05(木) 23:44:30.40 ID:???
元・男でもいいの?穴は当然・・・だよ?
885nobodyさん:2012/07/05(木) 23:45:21.71 ID:???
出生時は男性で、戸籍上は2012年現在も男性である。
886nobodyさん:2012/07/06(金) 00:17:23.96 ID:???
はぁ?
887nobodyさん:2012/07/06(金) 00:41:24.50 ID:???
ソースはWikipedia
888nobodyさん:2012/07/06(金) 12:08:10.38 ID:???
(キリッ
889nobodyさん:2012/07/06(金) 20:44:39.47 ID:???
うわ、本当だ・・・こんなのベッドに入るまで分かんねえ・・・
色々画像見てたらミニスカートとかきわどいのも何枚か見かけたんだけど
あれ全部チンコ付きで着てるってことか?
890nobodyさん:2012/07/06(金) 23:10:00.17 ID:???
いんや。戸籍以外はほとんど女になりました。
891nobodyさん:2012/07/06(金) 23:13:24.55 ID:???
一晩もはめまくったら、腐ってお前まで女になるぞ。
892nobodyさん:2012/07/07(土) 00:00:21.77 ID:???
知らなかったのかよ
893nobodyさん:2012/07/07(土) 00:09:48.02 ID:???
でもこれこうやって予備知識なかったらベッドインするまで分からんだろ
怖いわあ、やっぱ引きこもってネトゲやってたほうが安全だな
894nobodyさん:2012/07/07(土) 00:32:03.63 ID:???
元男だったら何か問題あるのか?
895nobodyさん:2012/07/07(土) 05:10:13.27 ID:???
>>893
安全と言うとまるでニューハーフが危険に聞こえるぜ。
896nobodyさん:2012/07/07(土) 23:25:20.67 ID:???
化粧を落とすと普通の男の顔。一気にショボーンω
897nobodyさん:2012/07/08(日) 00:39:17.40 ID:???
なかなかのイケメンだなw
898nobodyさん:2012/07/08(日) 04:19:51.63 ID:tOnU5yF9
>>891
マジで!?
男のケツに入れると腐るの!?
899nobodyさん:2012/07/08(日) 09:20:09.96 ID:???
pinkでやれ。
900nobodyさん:2012/07/08(日) 10:38:38.83 ID:???
ぴ、ピンクロータ入れるの!?
まあ、勧めるならしてみるけど。。。結果は保証できないよ
901nobodyさん:2012/07/08(日) 10:53:06.65 ID:???
やっぱりそこ(*)はパールローターかも
902nobodyさん:2012/07/08(日) 14:00:00.30 ID:???
彼女とアナルファックスしたときはそのまま放尿するのが恒例
あれってケツの中で小便が出てるのが分かるらしいな
本当に便器にしてるみたいで興奮する
903nobodyさん:2012/07/08(日) 14:34:00.09 ID:???
おれおま
腸内洗浄の作業からして興奮する
904nobodyさん:2012/07/08(日) 20:00:16.05 ID:???
ぼっきさせたまま放尿とか処女の発想だな
ぼっき見たことないんだな
905nobodyさん:2012/07/08(日) 20:01:47.30 ID:???
アナルファックス中...



ピー(送信完了)
906nobodyさん:2012/07/08(日) 20:35:26.38 ID:tOnU5yF9
で?
男のケツに入れると腐るの?
907nobodyさん:2012/07/08(日) 23:17:09.81 ID:???
あ、おれのケツにいま受信しました。


ポー(受信完了)
908nobodyさん:2012/07/08(日) 23:21:06.50 ID:???
>>904
中折れのことだろ
909nobodyさん:2012/07/09(月) 19:56:05.82 ID:???
>>904
勃起したままじゃないんじゃね?
射精する瞬間に深く打ち込んで出して、
そのまま抜かずに萎えてきたところで放尿だろう。
910nobodyさん:2012/07/09(月) 20:35:33.49 ID:???
アナルファックからアナルファックスを思い付く>>905の発想力はすごい
911nobodyさん:2012/07/09(月) 22:47:11.81 ID:???
902にそう書いてあるからね^o^v
912nobodyさん:2012/07/09(月) 23:06:55.39 ID:???
彼氏とアナルファックスしたときはそのまま放屁するのが恒例
あれってちんこの先で屁が出てるのが分かるらしいな
本当に便器にしてるみたいで興奮する
913nobodyさん:2012/07/10(火) 18:22:28.63 ID:???
ちんこの先ってことは抜いた直後?
914nobodyさん:2012/07/10(火) 21:33:02.16 ID:???
アナルファックスしたときは空気が入ったり、刺激でガスが下りてきたりするから、事後にガスが出るのは普通
915nobodyさん:2012/07/10(火) 22:59:04.19 ID:???
上野13番乗り場の便所は 国鉄時代からホモがいたのかな?
916nobodyさん:2012/07/11(水) 08:10:40.37 ID:???
お前らpinkでやれ。
917nobodyさん:2012/07/11(水) 13:13:50.08 ID:???
>>915
今もいるの?
918nobodyさん:2012/07/11(水) 18:18:40.84 ID:???
ホモは都市伝説
ケツにチンコなんか入るわけないだろ常識で考えろw
919nobodyさん:2012/07/11(水) 18:42:41.40 ID:???
ケツの穴の小さい奴だな
920nobodyさん:2012/07/12(木) 01:42:22.31 ID:???
ピンクロータよりもパールロータのほうがこのスレ的に合ってると思う。
(Perlのコーディングで困ってるので気晴らしに書き込んでいます)
921nobodyさん:2012/07/12(木) 03:48:24.31 ID:???
振動よりも出し入れの刺激のほうが効く。
922nobodyさん:2012/07/12(木) 09:23:24.77 ID:???
こっちでどうぞ
http://pele.bbspink.com/gaypink/
923nobodyさん:2012/07/12(木) 17:11:34.52 ID:???
うんこの太さのものまでなら入る気がする
924nobodyさん:2012/07/12(木) 17:21:08.98 ID:???
自治厨うざ
925nobodyさん:2012/07/12(木) 23:32:54.43 ID:???
むしろ常識で考えたらまむこにちむこが入ることもあり得ないわけだがw
926nobodyさん:2012/07/13(金) 02:10:55.64 ID:???
初めて試したやつの好奇心は尋常じゃないw
927nobodyさん:2012/07/13(金) 05:08:20.16 ID:???
彼女を縛り上げてイラマ〜マムコ〜アナルの順でやると最高
まさに性欲処理の道具って感じで酷いことをしてるみたいで興奮する
928nobodyさん:2012/07/13(金) 08:09:05.11 ID:???
お巡りさんこっちです
929nobodyさん:2012/07/13(金) 21:54:32.42 ID:???
一からプログラム勉強して下記サイト作れるようになるまでとのくらいかかる?
ttp://coconala.com/
930nobodyさん:2012/07/13(金) 22:09:54.15 ID:???
>>929
WPのインスコに三日。
カスタマイズに一生。
931nobodyさん:2012/07/14(土) 03:33:24.48 ID:???
>>929
それ作った奴は一から勉強したんじゃないの?
生まれたときからある程度プログラミングについて知ってたとか?
932nobodyさん:2012/07/14(土) 05:56:08.36 ID:???
>>930
え、ワードプレスでこんなの作れるんだ!

>>931
なるほど!
933nobodyさん:2012/07/14(土) 13:53:01.66 ID:???
それじゃあウリナラの作者は亡くなったの?
934nobodyさん:2012/07/14(土) 18:15:26.18 ID:bFiZn5Ib
>>925
まむこはちゃんと出したり入れたりどっちもいける前提で付いてるだろ
だけどあなるは出す目的でしか付いていない
出す目的でしか付いてないところに突っ込むとかどう考えても体に悪そう
935nobodyさん:2012/07/14(土) 21:24:16.84 ID:???
おまえらうんこちんこまんこしんこせいしせいしうっせーよボケ
936nobodyさん:2012/07/14(土) 22:26:25.66 ID:???
しんこ?
漬物のしんこしか思い浮かばないんだが
937nobodyさん:2012/07/15(日) 23:01:22.76 ID:???
2ch自体オワコンだしなぁ
938nobodyさん:2012/07/16(月) 00:01:37.21 ID:???
ぶっちゃけ佐藤かよとか椿姫彩菜クラスだったらセクロスできる
はるな愛は無理
939nobodyさん:2012/07/16(月) 11:46:17.13 ID:???
はるな愛はだめでしょ、彼氏いるんだから
940nobodyさん:2012/07/16(月) 13:32:10.36 ID:???
彼氏がいたら手を出せないって道程の発想。
941nobodyさん:2012/07/16(月) 16:48:10.22 ID:???
ばか、はるな愛は処女だぞ
942nobodyさん:2012/07/16(月) 17:01:32.46 ID:???
はい
943nobodyさん:2012/07/16(月) 17:28:22.47 ID:???
おまいら脱線しすぎ
元にもどれ

print "halou warrudo";
944nobodyさん:2012/07/16(月) 17:51:58.26 ID:???
自治厨うざ
自己顕示欲の塊でキモすぎ
管理人気取りのゴミか?w
945nobodyさん:2012/07/16(月) 18:27:49.87 ID:???
最近は人工造膣とかできるらしいからニューハーフでもちゃんとマムコでできるんだぜ
ベッドインしてハメまくっても分からないかも
946nobodyさん:2012/07/22(日) 04:18:52.31 ID:???
気持ち悪いレスと頭のおかしい自治厨が湧いてから
まともなレスがさっぱりこなくなったな
947nobodyさん:2012/07/22(日) 16:01:15.16 ID:???
perlでCSVファイルを生成してダウンロードするCGIを作ってるんですが、
ヘッダを

 print qq|Content-Type: text/csv\n\n|;
print qq|Content-Disposition: attachment; filename="hogehoge.csv"\n\n|;

としてもファイル名が「〜〜.cgi」でダウンロードされようとしてしまいます。
apacheのログにはエラーなどは出ていないですし、ダウンロードした〜〜.cgiの中身を見ると
きちんと命令通りに出力されています。

もう詰み気味です。。。何が原因なのでしょうか?
948nobodyさん:2012/07/22(日) 17:04:36.68 ID:???
>>947
マルチポストは失せろ
949nobodyさん:2012/07/22(日) 17:10:54.98 ID:???
>>948
分からないならはっきりそう言えよカスw
950nobodyさん:2012/07/22(日) 18:16:33.82 ID:???
>>948
スレ違い指摘されてこっち来たんだろ
じゃあどうすればいいんだよ
未来永劫質問するなってか?
951nobodyさん:2012/07/22(日) 19:04:17.52 ID:???
いいんじゃないの?
Perl厨らしい流れだ
952nobodyさん:2012/07/22(日) 19:11:05.37 ID:???
まあ誘導されたなら誘導元で断ってから来るよね
953nobodyさん:2012/07/22(日) 19:25:10.48 ID:???
>>947
お前の人生が詰んでるんだからコンピュータ関係で詰むのも無理はない
諦めろ
>>1も読まずに誘導されてくるとかカスすぎる
954nobodyさん:2012/07/22(日) 19:39:14.83 ID:???
それより環境がほとんど書いてない。

どうせあとから情報出してくる典型的なクズだろこいつ。
955nobodyさん:2012/07/22(日) 19:50:34.90 ID:???
>>952
えっ
956nobodyさん:2012/07/22(日) 19:51:13.43 ID:???
\nがねぇ。
まあニヨニヨ見てよう。
957nobodyさん:2012/07/22(日) 19:51:14.95 ID:???
>>954
えっ? この問題に環境が重要なんですか?
958nobodyさん:2012/07/22(日) 19:53:19.26 ID:???
>>954
お前、答えがわからんから
あら探ししてるだけだろ。
意味のない質問をするな。
959nobodyさん:2012/07/22(日) 19:55:06.88 ID:???
>>956
確かに正しくは\r\nだが、今回は違うと思う
CGIが出力した\nを\r\nに変換してくれない鯖ってあんのかねぇ
960nobodyさん:2012/07/22(日) 19:59:59.69 ID:???
>>959
\n\n2回繰り返していいものか?

Content-Type: text/csv\n
Content-Disposition: attachment; filename="hogehoge.csv"\n\n

じゃないかと思ったんだが俺がバカだったか。
すまん。
961959:2012/07/22(日) 20:05:19.06 ID:???
>>960
あー!orz
…すまん、吊ってくる
962nobodyさん:2012/07/22(日) 20:08:59.36 ID:???
さて、俺は意地悪とか荒らしとかするタチじゃないので、>>947がもしまだわからなかったらヒント教えておく。
ダウンロードしたファイルをエディタなりで開いてみそ。
963nobodyさん:2012/07/22(日) 20:15:50.38 ID:???
>>954みたいな関係ない質問して
どや顔してる奴って多いよなw

いういうやつって質問の答が返って来ても
たいてい何も言わないんだ。
そりゃ分からない+関係ない情報だから
答えられるわけ無いわなw
964nobodyさん:2012/07/22(日) 20:19:24.74 ID:???
そして誰も答えられない
俺も何年も前に全く同じ現象に遭遇したけど自分で解決したな
965947:2012/07/22(日) 22:09:33.09 ID:???
まじでお前ら使えないな
Twitterでちゃんとした回答もらったわ
このスレは煽り合いしかできない雑魚しかいないということがよくわかった
役立たず共乙
966nobodyさん:2012/07/22(日) 22:21:43.27 ID:???
はいはい別人乙
967nobodyさん:2012/07/22(日) 23:17:58.86 ID:???
本人か別人かは知らんけど>>966が別人認定しないとアイデンティティを維持できないことは分かった。
968nobodyさん:2012/07/22(日) 23:30:39.36 ID:???
韓国人は全員日本から放り出せよ
969nobodyさん:2012/07/23(月) 16:06:28.96 ID:ksaJELgM
チキンラーメン旨いよな
970nobodyさん:2012/07/23(月) 21:56:34.68 ID:???
ワンタンメンのほうが旨い。
971nobodyさん:2012/07/23(月) 23:30:56.21 ID:???
アルキメンデス
972nobodyさん:2012/07/24(火) 03:09:04.42 ID:???
チキンラーメンって麺が薄っぺらくないか?
もうちょっと食べごたえあるほうがよい
973nobodyさん:2012/07/24(火) 17:58:36.77 ID:???
あれはふやけやすくするためにああなってるんだろうな。
古いカップラーメンの麺もちょうどあんな感じだし。
974nobodyさん:2012/07/24(火) 20:37:04.03 ID:???
>>972
太くすると3分じゃ食えなくなるけどいいのか?
975nobodyさん:2012/07/24(火) 23:38:50.40 ID:???
>>974
そこを3分で食えるようにするのがラーメン屋の腕の見せ所じゃまいか
976nobodyさん:2012/07/24(火) 23:46:07.71 ID:???
丈夫な歯があれば問題ない。
977nobodyさん:2012/07/25(水) 01:48:07.80 ID:???
最近うどんのように太いラーメンがあるのを知ってびびったよ
978nobodyさん:2012/07/25(水) 04:05:30.90 ID:???
そういやどんべえのうどんも薄っぺらいな
ただカップ麺によっては薄っぺらくないような
979nobodyさん:2012/07/25(水) 09:06:30.40 ID:???
どうせ生麺タイプのカップ麺だろ、あれは太い。
980nobodyさん:2012/07/25(水) 19:12:58.84 ID:???
いっそうどんでいいじゃん
981nobodyさん:2012/07/25(水) 19:27:27.56 ID:???
UFOとかカップヌードルと違ってちゃんとした麺だけど同じ3分できっちりふやけるよな
982nobodyさん:2012/07/25(水) 21:04:35.78 ID:dwLANYn+
webにボタン作ってそのボタンを押すとメールを発射するプログラムどれくらいで作れるんだよ?
983nobodyさん:2012/07/25(水) 23:31:36.10 ID:???
環境が整ってて、最低限の物なら、
おいらみたいな素人で、休憩こみで3時間くらい
984nobodyさん:2012/07/26(木) 00:04:46.61 ID:???
すごいな…
初心者だから何をどうしていいかわからんww
985nobodyさん:2012/07/26(木) 03:49:19.83 ID:???
理想の環境が整ってるって条件ならプログラムは10分でいけるだろ
Perlスクリプトとしてはsendmailかqmailに投げれば数行程度だし
HTMLも送信ボタンだけなら一瞬で作れる
休憩込みで10分くらいか

プログラム以外の環境整えたりする部分のほうがはるかに時間食う
986nobodyさん:2012/07/26(木) 05:08:32.55 ID:???
UFOに限らずカップ焼きそばって焼きそばっぽくないよな
ベチョベチョしてるし
あれ食べるくらいなら麺だけソースで炒めて食ってたほうがマシ
987nobodyさん:2012/07/26(木) 07:36:26.72 ID:???
なんか名前あったよな。カップ焼きそば現象だったか。

988nobodyさん:2012/07/26(木) 13:42:31.55 ID:???
何の現象?
989nobodyさん:2012/07/26(木) 19:03:02.38 ID:XToCrg0L
カップ焼きそばの裏技を教えて野郎
湯切りした後カップのフタを外し、
チャーハンを炒めるように麺を空中高く何回か放り上げると水分が飛んで水っぽさが減るぞ
多少冷えるから猫舌には一石二鳥
990nobodyさん:2012/07/27(金) 18:46:31.72 ID:???
赤いきつねも「うどん」とは思えないが
あれはあれで美味い
991nobodyさん:2012/07/27(金) 22:58:08.09 ID:HVW45JLN
俺はどん兵衛派。
きつねも肉も旨い。
992nobodyさん:2012/07/27(金) 23:06:30.19 ID:???
カップ麺食うならラーメンだろ
スーパーでラーメン汁と麺買ってきて食ってもマズイから
カップ麺で食ったほうが良い

一方うどんはスーパーで汁とうどん買ってきて食ってもそこそこ旨い
993nobodyさん:2012/07/27(金) 23:43:00.04 ID:???
インスタントのカレーライスがあったらいいのになぁ
994nobodyさん:2012/07/28(土) 00:48:46.75 ID:???
ご飯をお湯で戻すのが難しいから無理。
995nobodyさん:2012/07/28(土) 03:54:39.13 ID:???
インスタント麺って全部不味くね?
996nobodyさん:2012/07/28(土) 08:50:41.85 ID:???
プログラミング中に食うとうまいけどな
997nobodyさん:2012/07/28(土) 10:06:52.29 ID:???
プログラマーの夜食スレ、そろそろ次立てようかい?
998nobodyさん:2012/07/28(土) 10:25:59.59 ID:???
銘柄による。
999nobodyさん:2012/07/28(土) 10:34:05.89 ID:???
栄養の偏った負け組の食べ物
1000nobodyさん:2012/07/28(土) 10:51:03.34 ID:???
こっちのスレは雑談になってるし、
向うのスレも、明らかに初心者の質問でも誘導しないし、
超初心者スレもとっくになくなったし、、、
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。