[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/02 01:51 / Filesize : 211 KB / Number-of Response : 664
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:nobodyさん mailto:sage [2011/09/09(金) 18:11:49.71 ID:???]
Perlのコーディングで困ってる人のスレです。

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

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

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

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

前スレ hibari.2ch.net/test/read.cgi/php/1295170172/

607 名前:nobodyさん mailto:sage [2012/03/25(日) 20:04:16.17 ID:???]
605は安価がないからなー、自分が思ってるのと全く違う主張の可能性もあるw

608 名前:603 mailto:sage [2012/03/26(月) 02:46:50.44 ID:???]
>>606
>>605 とは別人なんだが、数百行の小さいソースって、1プロジェクトで数百行ってことかな。
1ファイルで4,5百行くらいって話だとちょっと長いかな。
スクリプトファイルを書くにしても、大体いろいろな機能をクラス(pmファイル)に分けてそいつらの責任に任せたほうがメンテが楽。








609 名前:nobodyさん mailto:sage [2012/03/26(月) 14:06:22.42 ID:???]
>>608
それはモダンなやり方ですか?

610 名前:nobodyさん mailto:sage [2012/03/27(火) 01:13:45.03 ID:???]
え、モダンかぁ、、、、悪い書き方はしちゃダメだけど、モダンとかは気にしないほうがいいと思うよ、、、
流行り廃りだし、自分で判断したほうがいいよ


611 名前:nobody mailto:sage [2012/03/30(金) 00:02:30.52 ID:???]
そうだね。モダンは足が速いから。スレッドももうなくなったしね。

612 名前:nobodyさん mailto:sage [2012/03/30(金) 00:16:05.99 ID:???]
【モダン推奨】Perlについての質問箱 50箱目
toro.2ch.net/test/read.cgi/tech/1327110999/

613 名前:nobody mailto:sage [2012/03/30(金) 00:29:41.87 ID:???]
初心者には敷居が高いから万人向けってわけじゃない

614 名前:nobodyさん mailto:sage [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)には含まれて居ないモジュールのようです。

対応方法が分かる方、ご教授いただけますでしょうか。
宜しくお願いいたします。


615 名前:nobodyさん mailto:sage [2012/04/03(火) 11:11:13.68 ID:???]
>>614
人がいなくてもそれがそのスレなんだからそこに書くしかないんじゃ?
人が少ないからで別スレきたら何でもアリになるだろ



616 名前:613 mailto:sage [2012/04/03(火) 16:39:22.06 ID:???]
自己解決しました
Catalyst::Engine::Apache2
なるものがcpanから出てました
ちょうど過渡期のようですね


617 名前:nobodyさん mailto:sage [2012/04/04(水) 00:34:44.70 ID:???]
過渡ちゃんペッ

618 名前:nobodyさん mailto:sage [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]<>...";
}


619 名前:nobodyさん mailto:sage [2012/04/04(水) 20:03:38.87 ID:???]
>何か所も出てくる
subにぶち込んどきゃいいだろ

620 名前:nobodyさん mailto:sage [2012/04/04(水) 21:27:07.37 ID:???]
そんなあなたにはスライス

621 名前:nobodyさん mailto:sage [2012/04/04(水) 22:59:22.68 ID:???]
スライスって数字のやつ?何か挿入して増やそうとするとずれるよね
単純に後ろに追加すると位置的にわかりにくいから挿入したいんだが、数字のチェックもしなくていい方法ない?
元のデータの書き換えは再生成するから考えないとして


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

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

それとサブルーチンだとどうやって引き渡そうか悩んでる
配列だと結局受け取るときに順番が大事だし連想配列だと上書きする時また<>で連結しにくいと思ったんだが

622 名前:nobodyさん mailto:sage [2012/04/04(水) 23:25:45.28 ID:???]
順番付き連想配列使えば良いじゃんw

623 名前:nobodyさん mailto:sage [2012/04/05(木) 00:00:05.98 ID:???]
データファイルにはヘッダを必ず含めれば幸せになれるかも。

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

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

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

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


CSV 的なデータを連想配列で読み込むモジュールがあった気がする。


624 名前:nobodyさん mailto:sage [2012/04/05(木) 00:25:31.57 ID:???]
だから順番付き連想配列使えって。
なんで無理して難しい方法で実現しようとするの?

625 名前:nobodyさん mailto:sage [2012/04/05(木) 06:21:58.63 ID:???]
>>624
例えばこうやるんだよ、って簡単なサンプルコードを書いてやるといいよ。



626 名前:nobodyさん mailto:sage [2012/04/05(木) 09:51:23.36 ID:???]
>>618
ちょっと書いてみた。
www5.puny.jp/uploader/download/1333586646.zip
pass: perl

順番付き連想配列ってこうでいいのかな?
添削歓迎。


627 名前:626 mailto:sage [2012/04/05(木) 10:42:38.78 ID:???]
id とかって配列なのか。
ぱっと見 $i いらなそうなので無視してましたよ。
要件満たしてないっぽいので忘れてください。

628 名前:nobodyさん mailto:sage [2012/04/05(木) 13:04:38.74 ID:???]
www5.puny.jp/uploader/download/1333598575.pl
pass:perl
自分はこう書いた

629 名前:nobodyさん mailto:sage [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... と配列があるんですよね。
これをどう処理してるか謎なんで
レコードをなめるだけでいいのか悩むところ。

630 名前:nobodyさん mailto:sage [2012/04/05(木) 16:34:07.79 ID:???]
そこは好みかな
自分はデータとヘッダは分離させたいので、ああやって書きました。


631 名前:nobodyさん [2012/04/06(金) 11:04:06.62 ID:AWfq6sbZ]
すいません。perlをコマンドラインで使うやり方について質問させて下さい。
例えば数字の入ったファイル名だけ全部lsしたい時って
どのように書けばいいのでしょうか。
こんな風に書いてみたんですが何も出力されません…
ls | perl -e "print /[0-9]/ "


632 名前:nobodyさん [2012/04/06(金) 11:29:12.54 ID:AWfq6sbZ]

find . -maxdepth 1 -name '*.gif' | perl -ne 'print if /\/*[0-9]{2}\.gif$/;'
こんな感じで出来ました

633 名前:nobodyさん mailto:sage [2012/04/07(土) 02:00:48.78 ID:???]
>>632
find . -maxdepth 1 -name "*[0-9][0-9].gif"

634 名前:nobodyさん mailto:sage [2012/04/07(土) 02:02:53.93 ID:???]
>>632
> if /\/*[0-9]{2}\.gif$/;
これはワイルドカードと正規表現をごっちゃにしているな。別物だからちゃんと区別するように。

635 名前:nobodyさん mailto:sage [2012/04/07(土) 04:29:33.70 ID:???]
それって
find . -maxdepth 1 -name "[0-9][0-9].gif"
と等価なだけなんじゃないのか



636 名前:nobodyさん mailto:sage [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/ が取得できない原因として,
何を疑ったらいいでしょうか??

637 名前:nobodyさん mailto:sage [2012/04/07(土) 11:49:34.04 ID:???]
USER AGENT がちゃんと設定されてないだけでしょ

638 名前:nobodyさん mailto:sage [2012/04/07(土) 12:32:23.46 ID:???]
HTTP::Cookies

639 名前:nobodyさん mailto:sage [2012/04/07(土) 19:43:25.79 ID:???]
マジレスするとSSLを使用しているページにはCrypt-SSLeayを入れないと繋げない事もある

640 名前:nobodyさん mailto:sage [2012/04/07(土) 21:04:03.67 ID:???]
あくてぃぶ とか すとろべりー ならインストール後には可能やよ
Linux 標準の ぱーる は おーぷんえすえすえる 入れないとだめですわ シャキーン

641 名前:nobodyさん mailto:sage [2012/04/08(日) 11:30:20.98 ID:???]
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
を追加すると繋げることもある

642 名前:636 mailto:sage [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/ は,特殊なんかな.

643 名前:nobodyさん mailto:sage [2012/04/14(土) 20:30:27.28 ID:???]
「かんたんプログラミングCGI/Perl」ってこのスレ的にはどうでしょう?
ttp://d.hatena.ne.jp/perlcodesample/20120414/1334359182

この人のブログ、>>2のテンプレに載ってないから心配になって聞いてみました。

644 名前:nobodyさん mailto:sage [2012/04/14(土) 20:38:40.49 ID:???]
ソースコードに誤字山積ってだけで論外だろ。

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



645 名前:nobodyさん mailto:sage [2012/04/14(土) 20:45:44.78 ID:???]
>>644の言う通り。その本もブログも絶対に参考にしちゃだめ。
現代的()なPerlなんて覚えてもろくなことにならないから
5.6でも動くようなコーディングを心がけるべし。
あとこいつがプッシュしてるMojoliciousも、ちょっと有名なCatalystとかも
やめといた方がいい。
フレームワークなんてすぐ腐る。
CGIが一番。



646 名前:nobodyさん mailto:sage [2012/04/14(土) 21:04:47.55 ID:???]
フレームワークは小さなやりたいことに対して規模がデカすぎ

647 名前:nobodyさん mailto:sage [2012/04/14(土) 21:09:27.25 ID:???]
10年以内に発売されたような高性能PCとかじゃないとすぐメモリを食いつぶされるからな>フレームワーク。
フレームワークは金持ちのお坊ちゃまの娯楽、甘えでしかない。
技術を自分のモノにしたければCGIで泥臭く書け。

648 名前:nobodyさん mailto:sage [2012/04/14(土) 21:45:18.04 ID:???]
フレームワークごときでメモリが食いつぶされるような
貧弱なマシンで使ってるの?

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

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

そういう世界の人に対して高性能PCとか、メモリ容量とか
釈迦に説法ってやつだと思わないか?

649 名前:nobodyさん mailto:sage [2012/04/15(日) 11:24:37.83 ID:???]
はいはい、Mojoと喪男でがんばってね!

650 名前:nobodyさん mailto:sage [2012/04/15(日) 11:27:08.04 ID:???]
とにかくCGIで書くことを心がければ小規模から大規模までどんなアプリだって書けるようになる。
フレームワークは覚せい剤。手を出したら終わり。

651 名前:nobodyさん mailto:sage [2012/04/15(日) 11:52:49.40 ID:???]
まあおれの場合、CGI.pmすら嫌なんでHTML直に書いてるけどね
その方が書きやすいしメンテもしやすいと思ってる
初期の頃からそうしてるけどぶれていないね

652 名前:nobodyさん mailto:sage [2012/04/15(日) 11:58:08.00 ID:???]
いいねぇ。素晴らしい。
楽はしちゃだめだよね。

653 名前:nobodyさん mailto:sage [2012/04/15(日) 13:46:50.99 ID:???]
モジュール作成者の世界観とおれが直面している問題とは無関係だから。
モジュールのメソッドの整理具合が、個別の問題にマッチしていないのは
当然あり得ること。
個別の問題を解決するのを車輪の再発明だとは思わない(キリッ

654 名前:nobodyさん mailto:sage [2012/04/15(日) 14:12:09.38 ID:???]
>>653
そういう場合はラッパーを作ればいい。


655 名前:nobodyさん mailto:sage [2012/04/15(日) 14:12:40.71 ID:???]
プロとアマチュアの違いを見た



656 名前:nobodyさん mailto:sage [2012/04/15(日) 15:17:25.01 ID:???]
なんだかんだで、ちょっと機能を足しただけのラップモジュールを作る機会って少なくないね。

自分が今のやってるロジェクトだとHTML::Template系使ってるけど、
共通パラメータやらフィルタやら、細かい部分が多くてなあ。

657 名前:nobodyさん mailto:sage [2012/04/16(月) 00:50:12.93 ID:???]
ラッパーを作るってことは元のものより粗いものしか作れないでしょ

658 名前:nobodyさん mailto:sage [2012/04/16(月) 02:30:46.51 ID:???]
>>643
ブログの中で自分の名前間違えてたりするレベルなので、本のほうも
推して知るべし、です。

659 名前:nobodyさん mailto:sage [2012/04/16(月) 09:27:44.08 ID:???]
もちろん、こいつの雑誌連載も糞。
上手になりたかったらもっと2chを活用しろ。
オライリーと2chだけで十分。

660 名前:nobodyさん mailto:sage [2012/04/17(火) 05:05:18.23 ID:???]
ある入門書にこう書いてありました
「関数とは、特定のまとまった処理を実行する機能のことです。
・・・一般的に、プログラムの中で呼び出される際にデータを受け取って
特定の処理を行い、結果を返す働きをします」

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

関数と演算子に大きな違いがあるのでしょうか?
なんで「関数」と「演算子」とわざわざ呼び分けているわけですか?

661 名前:nobodyさん mailto:sage [2012/04/17(火) 12:31:41.99 ID:???]
その入門書の信頼性を疑ってみる。

662 名前:nobodyさん mailto:sage [2012/04/17(火) 12:31:59.01 ID:???]
>>660
違いは無い。引数の取り方が違うだけ。

663 名前:nobodyさん mailto:sage [2012/04/17(火) 12:35:26.61 ID:???]
入門書なんか捨てろ
Googleも使うな
2chで全て解決






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef