Perlコーディング初心者質問スレ Part 63
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/09/09(金) 18:11:49.71ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2 以降
前スレ http://hibari.2ch.net/test/read.cgi/php/1295170172/
0619nobodyさん
2012/04/04(水) 20:03:38.87ID:???subにぶち込んどきゃいいだろ
0620nobodyさん
2012/04/04(水) 21:27:07.37ID:???0621nobodyさん
2012/04/04(水) 22:59:22.68ID:???単純に後ろに追加すると位置的にわかりにくいから挿入したいんだが、数字のチェックもしなくていい方法ない?
元のデータの書き換えは再生成するから考えないとして
例
データ0<>データ1<>データ2<>・・・
↓
データ0<>データ1<>データx<>データ2<>・・・
それとサブルーチンだとどうやって引き渡そうか悩んでる
配列だと結局受け取るときに順番が大事だし連想配列だと上書きする時また<>で連結しにくいと思ったんだが
0622nobodyさん
2012/04/04(水) 23:25:45.28ID:???0623nobodyさん
2012/04/05(木) 00:00:05.98ID:???スライスは苦手なのでサンプルは今書けないけど、ファイルを全て読み込んだ時のイメージはこんな感じ。
my $data = {};
$data->{'headers'} = [〜];
$data->{'data'} = [
{○=>△,◇=>□},
{○=>△,◇=>□},
〜以下略〜
];
読み書きは @{$data->{'headers'}} の順番で行えば良い
で、読み書きを行うサブルーチンを作れば良い。
CSV 的なデータを連想配列で読み込むモジュールがあった気がする。
0624nobodyさん
2012/04/05(木) 00:25:31.57ID:???なんで無理して難しい方法で実現しようとするの?
0626nobodyさん
2012/04/05(木) 09:51:23.36ID:???ちょっと書いてみた。
http://www5.puny.jp/uploader/download/1333586646.zip
pass: perl
順番付き連想配列ってこうでいいのかな?
添削歓迎。
0627626
2012/04/05(木) 10:42:38.78ID:???ぱっと見 $i いらなそうなので無視してましたよ。
要件満たしてないっぽいので忘れてください。
0628nobodyさん
2012/04/05(木) 13:04:38.74ID:???pass:perl
自分はこう書いた
0629nobodyさん
2012/04/05(木) 15:56:41.39ID:???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... と配列があるんですよね。
これをどう処理してるか謎なんで
レコードをなめるだけでいいのか悩むところ。
0630nobodyさん
2012/04/05(木) 16:34:07.79ID:???自分はデータとヘッダは分離させたいので、ああやって書きました。
0631nobodyさん
2012/04/06(金) 11:04:06.62ID:AWfq6sbZ例えば数字の入ったファイル名だけ全部lsしたい時って
どのように書けばいいのでしょうか。
こんな風に書いてみたんですが何も出力されません…
ls | perl -e "print /[0-9]/ "
0632nobodyさん
2012/04/06(金) 11:29:12.54ID:AWfq6sbZfind . -maxdepth 1 -name '*.gif' | perl -ne 'print if /\/*[0-9]{2}\.gif$/;'
こんな感じで出来ました
0634nobodyさん
2012/04/07(土) 02:02:53.93ID:???> if /\/*[0-9]{2}\.gif$/;
これはワイルドカードと正規表現をごっちゃにしているな。別物だからちゃんと区別するように。
0635nobodyさん
2012/04/07(土) 04:29:33.70ID:???find . -maxdepth 1 -name "[0-9][0-9].gif"
と等価なだけなんじゃないのか
0636nobodyさん
2012/04/07(土) 09:58:11.44ID:???取得できません.
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/ が取得できない原因として,
何を疑ったらいいでしょうか??
0637nobodyさん
2012/04/07(土) 11:49:34.04ID:???0638nobodyさん
2012/04/07(土) 12:32:23.46ID:???0639nobodyさん
2012/04/07(土) 19:43:25.79ID:???0640nobodyさん
2012/04/07(土) 21:04:03.67ID:???Linux 標準の ぱーる は おーぷんえすえすえる 入れないとだめですわ シャキーン
0641nobodyさん
2012/04/08(日) 11:30:20.98ID:???を追加すると繋げることもある
0642636
2012/04/08(日) 21:41:15.55ID:???https:://gitub.com は,
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
でいけた.
しかし,https://member.livedoor.com/login/ は,それでもいけない.
https://member.livedoor.com/login/ は,特殊なんかな.
0643nobodyさん
2012/04/14(土) 20:30:27.28ID:???ttp://d.hatena.ne.jp/perlcodesample/20120414/1334359182
この人のブログ、>>2のテンプレに載ってないから心配になって聞いてみました。
0644nobodyさん
2012/04/14(土) 20:38:40.49ID:???そのブログ自体は数年前から、2ch に宣伝気味に貼られるけど
あんま相手にされてない
0645nobodyさん
2012/04/14(土) 20:45:44.78ID:???現代的()なPerlなんて覚えてもろくなことにならないから
5.6でも動くようなコーディングを心がけるべし。
あとこいつがプッシュしてるMojoliciousも、ちょっと有名なCatalystとかも
やめといた方がいい。
フレームワークなんてすぐ腐る。
CGIが一番。
0646nobodyさん
2012/04/14(土) 21:04:47.55ID:???0647nobodyさん
2012/04/14(土) 21:09:27.25ID:???フレームワークは金持ちのお坊ちゃまの娯楽、甘えでしかない。
技術を自分のモノにしたければCGIで泥臭く書け。
0648nobodyさん
2012/04/14(土) 21:45:18.04ID:???貧弱なマシンで使ってるの?
それ選択が間違いなだけだよ。
ユーザー数、数万、数十万のウェブサービスを作っていれば、
必然と複数台構成のマシンになる。
メモリの話だと1台10GBオーバーとか当たり前。
そういう世界の人に対して高性能PCとか、メモリ容量とか
釈迦に説法ってやつだと思わないか?
0649nobodyさん
2012/04/15(日) 11:24:37.83ID:???0650nobodyさん
2012/04/15(日) 11:27:08.04ID:???フレームワークは覚せい剤。手を出したら終わり。
0651nobodyさん
2012/04/15(日) 11:52:49.40ID:???その方が書きやすいしメンテもしやすいと思ってる
初期の頃からそうしてるけどぶれていないね
0652nobodyさん
2012/04/15(日) 11:58:08.00ID:???楽はしちゃだめだよね。
0653nobodyさん
2012/04/15(日) 13:46:50.99ID:???モジュールのメソッドの整理具合が、個別の問題にマッチしていないのは
当然あり得ること。
個別の問題を解決するのを車輪の再発明だとは思わない(キリッ
0655nobodyさん
2012/04/15(日) 14:12:40.71ID:???0656nobodyさん
2012/04/15(日) 15:17:25.01ID:???自分が今のやってるロジェクトだとHTML::Template系使ってるけど、
共通パラメータやらフィルタやら、細かい部分が多くてなあ。
0657nobodyさん
2012/04/16(月) 00:50:12.93ID:???0659nobodyさん
2012/04/16(月) 09:27:44.08ID:???上手になりたかったらもっと2chを活用しろ。
オライリーと2chだけで十分。
0660nobodyさん
2012/04/17(火) 05:05:18.23ID:???「関数とは、特定のまとまった処理を実行する機能のことです。
・・・一般的に、プログラムの中で呼び出される際にデータを受け取って
特定の処理を行い、結果を返す働きをします」
演算子もこの説明における関数と働きは似ているように見えます
例えば加算演算子が 2 つの数を受け取って和の値を返すというように
関数と演算子に大きな違いがあるのでしょうか?
なんで「関数」と「演算子」とわざわざ呼び分けているわけですか?
0661nobodyさん
2012/04/17(火) 12:31:41.99ID:???0663nobodyさん
2012/04/17(火) 12:35:26.61ID:???Googleも使うな
2chで全て解決
0664nobodyさん
2012/04/23(月) 13:21:35.61ID:???勝手に持ってきたけど…
printの前に
binmode(STDOUT);
を追加、が手っ取り早い答えかな。
ちなみにバイナリファイルを<>で取得するのは本来良い考えではないよ。
0665nobodyさん
2012/04/23(月) 16:18:26.17ID:???ちょっとめんどくさいのだけコピペ
0666nobodyさん
2012/04/23(月) 23:16:14.38ID:???たわけなんだよ。これ以上演算子を増やすにはアルファベットを並べるしか
ない。それが関数。だって数字を並べると数値になっちゃうからね。
0667nobodyさん
2012/04/23(月) 23:38:11.72ID:???0668nobodyさん
2012/04/23(月) 23:39:07.69ID:???0669nobodyさん
2012/04/24(火) 00:13:24.36ID:???0671nobodyさん
2012/04/25(水) 22:26:34.87ID:+oSgS9z70672nobodyさん
2012/04/25(水) 22:54:01.87ID:???name="form1" target="_top">
<input type="hidden" name="SelectPoint" id="SelectPoint" value="">
</form>
上記をmechで記述したいのですが、どのようにしたら良いのでしょうか?
submit か post モジュールでしょうか?
0673nobodyさん
2012/04/26(木) 18:55:24.85ID:???つ ttp://ja.wikipedia.org/wiki/%E7%A9%B6%E6%A5%B5%E8%B6%85%E4%BA%BA%E3%81%82%E3%80%9C%E3%82%8B
0674nobodyさん
2012/04/27(金) 21:41:56.60ID:Sw347W35いろいろ作業が便利になりそう。
0675nobodyさん
2012/04/27(金) 21:48:46.25ID:???に渡したい、ということですか?それはCGIに関する質問ですか?
0676nobodyさん
2012/04/28(土) 05:21:45.77ID:???name="form1" target="_top">
<input type="hidden" name="SelectPoint" id="SelectPoint" value="">
</form>
上記をmechで記述したいのですが、どのようにしたら良いのでしょうか?
submit か post モジュールでしょうか?
0677nobodyさん
2012/04/28(土) 05:22:25.20ID:???レスして頂きありがとうございます。
私は社会人になったばかりで、プログラミングをしたことがほとんどなく、上司に何とかしろと言われて困っています。
上司はプログラミングは全く出来ず、零細企業なので相談する相手もいません。
スレチなのかもしれませんが、ヒントだけでも、ご教授頂けないでしょうか?
連休明けには出来るようにしとけ、と言われています(>_<)
0678nobodyさん
2012/04/28(土) 05:23:46.66ID:???0679nobodyさん
2012/04/28(土) 08:17:52.38ID:???0680nobodyさん
2012/04/28(土) 08:40:53.38ID:???悩んでる暇があるなら、直接書け
0681nobodyさん
2012/04/28(土) 11:24:03.04ID:???直接書くほうが吉。覚えるものが少ないし、今後応用も利く。
あるいはmethod="post"をmethod="get"にしてもいいけどね。
0683nobodyさん
2012/04/28(土) 12:44:57.48ID:???こうはなりたくないものだ。だが反面教師としてはいい仕事。
0684nobodyさん
2012/04/28(土) 13:44:06.50ID:???まず、当事者意識が完全に欠如している。さらに、独り立ちをしようとせず、常に何かに依存し、
消費し、批判するだけの「お客さま」でいつづけようとしている。これはゆゆしき事態であり、
日本社会のありかたにかかわる重大な問題である。
最近の若者は、定職に就きたがらない。
あるいは、会社に入っても一定のポジションで身を立てようとしない。
なぜなら、社会的なかかわりを、全て暫定的・一時的なものと見なしているからだ。
彼らに言わせると、本当の自分は別のところにあり、現実の自分は仮の姿に過ぎないんだそうだ。
本当の自分は棚上げしておいて、いつまでも立場を替え、考えを変え、
自分自身をも変身させる余地を残しておく。一貫した主義主張をもたないか、もたないふりをする。
特定の党派、集団に全てを賭けることを避けようとする。
↑これ1977年に書かれた論評な 1997年じゃないぞ 今から30年以上前の文章だ
0685nobodyさん
2012/04/28(土) 14:46:07.99ID:???#!/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);
0686nobodyさん
2012/04/28(土) 14:46:57.80ID:???#ブラウザのユーザエージェントのエイリアス名
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";
0687nobodyさん
2012/04/28(土) 14:49:00.58ID:???スレ汚しで申し訳ありませんm(_ _)m
0688nobodyさん
2012/04/28(土) 15:16:19.51ID:???0690nobodyさん
2012/04/28(土) 16:13:31.64ID:???非協力的なのに何とかしろというのならば、あるいは何とかしたいのかも
しれない(試用期間も終わったし)
0691nobodyさん
2012/04/28(土) 16:48:30.97ID:???0692nobodyさん
2012/04/28(土) 17:53:29.20ID:???0694nobodyさん
2012/04/28(土) 19:48:03.75ID:???本題の解決策がわからなくて申し訳ないが気になった点を。
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";
かな。
0695nobodyさん
2012/04/28(土) 22:34:34.68ID:zGua3yDXとりあえずこの本を読んでいるがおおよそ理解できている。
http://www.amazon.co.jp/dp/4774150258
つぎにおすすめとかある??
MovableTypeのプラグインとか作れるレベルには3ヶ月ぐらいでなりたい。
ちなみにプログラミング歴はJavaScriptをまぁまあ、PHPを少々。
0696nobodyさん
2012/04/28(土) 23:04:09.66ID:???自分は中学生の頃読みました。
0697nobodyさん
2012/04/28(土) 23:17:08.63ID:???0698nobodyさん
2012/04/28(土) 23:24:14.90ID:???0699nobodyさん
2012/04/28(土) 23:43:56.75ID:???いうのはステルスマーケティングの疑いが濃厚ですね
0700nobodyさん
2012/04/29(日) 00:15:11.47ID:???ものをPerlで書くにはどうするのかって話なのな。んで処理した結果をExcel
に貼り付けるのは手作業なのなwま、いいけどね。
0701nobodyさん
2012/04/29(日) 00:23:08.69ID:???0702nobodyさん
2012/04/29(日) 00:26:42.16ID:???壊れるモジュールならあります。
0703nobodyさん
2012/04/29(日) 00:29:36.92ID:???0704nobodyさん
2012/04/29(日) 07:08:52.17ID:???676, 685-686です。
返答ありがとうございます。
1. /いらないですね(>_<)
2. $my cookie_file; を加えました。続きはありません。
3. 文字化けして困ってました。ご指摘ありがとうございます。
質問A
POSTの部分ですが、name と id がそれぞれ2回ずつ出てきます。
同じ変数名でいいのでしょうか?
質問B
form タグ内のid (form1)は、ここには書いていませんが、javascript から返された値だと認識してます。直接、値を記述してよいものでしょうか?
0705nobodyさん
2012/04/29(日) 10:58:15.00ID:???name は複数あると、CGI モジュールは配列で返してくると思った
0706nobodyさん
2012/04/29(日) 12:58:54.45ID:???とりあえず内容の誤りが多いので作者のページの正誤表でフォローが必須なのは事実
逆にそれをわきまえて自分の中で反芻してるなら問題はないでしょ
で、次のお勧めはこれかな
ttp://www.amazon.co.jp/dp/486267108X/
標準添付でも案外見落としてるモジュールがあることに気付く
CGI系はもう扱ってない(代わりに扱ってるのはPSGI/Plack系)点には要注意
0707nobodyさん
2012/04/29(日) 15:49:59.28ID:???だけあれば十分なのにね。その位ならPerl5ポケットリファレンスに付け足し
てもいける。
0708nobodyさん
2012/04/29(日) 18:28:09.76ID:???「cpanminus教えれば十分そんな本いらん」って、お前も随分と失礼な発言だな
2chのPerlスレはそのレベルに達していないどころか
「cpanmもperlbrewも使うな、システムがぐちゃぐちゃになる」
なんてのがまかり通ってたじゃねえか
0709nobodyさん
2012/04/29(日) 20:28:14.32ID:???0710nobodyさん
2012/04/29(日) 20:30:21.61ID:???0711nobodyさん
2012/04/29(日) 20:37:03.58ID:???,,ッヾ ミ、
、ヾ ミ、
X゛ ミ
ミ ,,,,,,,,,a''''ヾ. ミ
三 ,,a''" ヾ ミ
彡 |`ヽ'" _ヾミ
彡 ヽ __ _彡ミ_ミ
ミ 〉 _彡≡'´ ,r __ |
ミ / 〃 _ ヽ 〈 ∠ソ,>.{
ミ ヽ ∠ソ_ヽ, ′ ヽ`ー'' ヽ
ミ __ | ー一' \ !
`{ r-;\| ,、 丿ヽ. j
ヽヽ`コ.`j / `ー ''" :i!
ヽ _ ; / _,, -―‐''"ア j
\ i ヽ ヽ´`ー―一'" /
`! ` ⌒ |
,、_」 ` 、 \ _ノ
_/ ヽ ` ー-=―一'「`i-、_
/ \ \ __,r'´ |  ̄
/ .\  ̄ ̄ ̄ ̄ ̄ ノ
`ー―――――― '"
0712nobodyさん
2012/04/30(月) 07:35:10.72ID:???よくもまあ日本人の書いた本なんて読むもんだわ。献本でもされてんの?
読んでない(本屋で斜め読み)けど薦めてんの?
普通の人間なら、O'Reilly のラクダ、料理本、PBPあたりを読んで、追加で
Effectiveと救命病棟くらいを読めばいっぱいいっぱいだろ?
逆に、これらを読んでたら後発の日本人の本なんて読む気すら失せるけど。
0713nobodyさん
2012/04/30(月) 07:36:19.02ID:???0716nobodyさん
2012/04/30(月) 11:59:40.66ID:???外国の本マンセー
日本の本はクソ
でも英語読めないから日本語に訳せ
まあおかしくはないけどね、おかしくは
0718nobodyさん
2012/04/30(月) 12:21:35.69ID:???日本語訳がある本は、この本は訳して
日本で売れると判断したものだから
選ばれた本でもある。
■ このスレッドは過去ログ倉庫に格納されています