Perl 初心者コーナー Part23
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/05/16 11:18ID:zDRBc/j4【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0522nobodyさん
03/05/28 19:24ID:uwixhF+z改行を取り除きたいのですが、
どのようにすればいいのでしょうか?
改行を取り除くのは
$body =~ s/\n//g;
これでできるのですが、
$bodyの中の1行目から3行目までだけの
改行を取り除きたいと思っています。
0523nobodyさん
03/05/28 19:46ID:???@bodys = split (/\n/, $body);
chomp ($body[0], $body[1], $body[2]);
いくら初心者のためのスレだと言っても、
最低基礎くらい覚えてこい!
0524523
03/05/28 19:51ID:???@head = splice (@bodys, 0, 3);
$body = join ("\n", @bodys);
スマン、俺も、ちゃんと勉強しておく。。。
0525nobodyさん
03/05/28 20:15ID:+jnsOx/qはぁ?じゃマジ初心者はどこいったらいいのよ?
お前スレタイ読んで出直してこいや(w
0526525
03/05/28 20:16ID:???0527nobodyさん
03/05/28 20:29ID:uwixhF+zありがとう。
でも配列使えないんですよ。
ポインタみたいな物使ってるので。
$body_item->{'body'}
これの中身の最初の\nから3つ目の\nまで消したいんです。
0528nobodyさん
03/05/28 20:31ID:uwixhF+z0529_
03/05/28 20:32ID:???0530nobodyさん
03/05/28 20:37ID:???for($i=0; $i<3; $i++){
$body_item->{'body'}[$i] =~ s/\n//g;
}
0532nobodyさん
03/05/28 20:44ID:uwixhF+z>531
ありがとう
use vars
for($i=0; $i<3; $i++){
$body_item->{'body'}[$i] =~ s/\n//g;
}
Unrecognized character \x81 at user_lib/xxxx/xxx.pm line 198.
というエラーが出ます。
0533nobodyさん
03/05/28 20:46ID:???198行目がなんなのかもわからんのに
0534nobodyさん
03/05/28 20:49ID:uwixhF+zuse vars
@body_item->{'body'} = split (/\n/, $body_item->{'body'});
@head = splice (@body_item->{'body'}, 0, 3);
$body_item->{'body'} = join ("\n", @body_item->{'body'});
これだと
Global symbol "@body_item" requires explicit package name at user_lub/xxx/xxx.pm line 196
このようなエラーが出ます。
0535nobodyさん
03/05/28 20:49ID:???0536nobodyさん
03/05/28 20:54ID:uwixhF+z0538nobodyさん
03/05/28 20:58ID:C2cSB0SK↓
http://www.dvd-yuis.com/index2.html
0539nobodyさん
03/05/28 20:58ID:uwixhF+z全然おちょくってないです。
本当に困ってるんですよ。
0540nobodyさん
03/05/28 21:00ID:uwixhF+z0541nobodyさん
03/05/28 21:01ID:uwixhF+z0543動画直リン
03/05/28 21:10ID:52+C0e9R0544nobodyさん
03/05/28 21:12ID:uwixhF+zありがとう
use vars qw(@body_item->{'body'},@head);
@body_item->{'body'} = split (/\n/, $body_item->{'body'});
@head = splice (@body_item->{'body'}, 0, 3);
$body_item->{'body'} = join ("\n", @body_item->{'body'});
これだと
@body_item->{'body'},@head' is not a valid variable name under strict vars at user_lub/xxxx/xxx.pm line 196
こういうエラーが出ます。
0546nobodyさん
03/05/28 21:15ID:???0547nobodyさん
03/05/28 21:15ID:???カンマ区切りじゃなくて、半角スペース区切りだろ
0549nobodyさん
03/05/28 21:18ID:uwixhF+z半角スペースでも試しましたが駄目でした。
0550nobodyさん
03/05/28 21:20ID:???@{$body_item->{'body'}} = split (/\n/, @{$body_item->{'body'}});
@head = splice (@{$body_item->{'body'}}, 0, 3);
$body_item->{'body'} = join ("\n", @{$body_item->{'body'}});
いっぱい間違ってないかい?
0551nobodyさん
03/05/28 21:20ID:???0552550
03/05/28 21:22ID:???$body_item->{'body'} = join ("\n", @{$body_item->{'body'}});
↓
@{$body_item->{'body'} = join ("\n", @{$body_item->{'body}});
変更。
0553nobodyさん
03/05/28 21:22ID:uwixhF+zありがとう
これだと
use vars qw(@body_item->{'body'} @head);
@body_item->{'body'} = split (/\n/, $body_item->{'body'});
@head = splice (@{$body_item->{'body'}}, 0, 3);
$body_item->{'body'} = join ("\n", @body_item->{'body'});
こういうエラーが出ます。
Type of arg 1 to splice must be array (not hash element) at user_lub/xxxx/xxx.pm line 199, near "3)"
0558nobodyさん
03/05/28 21:26ID:uwixhF+zそれだと
Bad name after body' at user_lub/xxxx/xxx.pm line 209.
というエラーが出ます。
0559550
03/05/28 21:27ID:???いや、厳密には配列に入ってるんだよ。
それが、リファレンスで入ってるんで、ちょっと扱いがわかってないっぽい。
要領は同じなんだけどね〜・・・
って、雑談ぽくなってきたので、これにて。
0561nobodyさん
03/05/28 21:28ID:uwixhF+zこうすると
'@body_item->{'body'}' is not a valid variable name under strict vars at user_lub/xxxx/xxx.pm line 196
このようなエラーが出ます。
0563nobodyさん
03/05/28 21:30ID:uwixhF+zそれは出来ないんですよ。ソースが膨大でDatabase使ってますから。
0564nobodyさん
03/05/28 21:31ID:???掲示板で教えるのは限界がある。
・・・とにかく、@body_item->{'body'}ってのを、@{$body_item->{'body'}} へ、ちゃんと変更する。
全部。
0566nobodyさん
03/05/28 21:38ID:uwixhF+zpakage使ってますから横の繋がりもあるんですよ。
0567nobodyさん
03/05/28 21:39ID:???それでもいいから。
エラーは、そのモジュール局部的な物と見てる。
それとも、晒せないソースなのか?
今のペースだと、スレ1つ消化するくらい説明のやり取りが必要になるぞ。
0568nobodyさん
03/05/28 21:40ID:???だったら、196行目だけ晒せばいいだろ!
0570nobodyさん
03/05/28 21:41ID:uwixhF+z分かりました。
もうちょっとやって駄目ならそこの部分のソースを2chアップローダに
上げます。
0572nobodyさん
03/05/28 21:43ID:uwixhF+z196行目は
my $body;
です。
0574nobodyさん
03/05/28 21:55ID:???0576nobodyさん
03/05/28 22:02ID:???$text = 'abc';
$regex = qr/$text/;
これでいいだろ?
んで、表示する時は$text使えばいいんじゃねーか。
0577nobodyさん
03/05/28 22:04ID:???0578nobodyさん
03/05/28 22:09ID:uwixhF+z完璧です。
それで完璧に出来ました。
ありがとうございます。
0579nobodyさん
03/05/28 22:16ID:uwixhF+zどこでそのような方法を勉強したのでしょうか?
perlのリファレンス見てもそのような表現方法は載ってなかったので
どうやって勉強したのか気になります。
0581nobodyさん
03/05/28 22:23ID:uwixhF+zそうですか。
人のソースで勉強したのですか。
人の書いたソースでも、あの表現方法を理解するのは
私には難解です。
まだまだ勉強が足りないですね。
0582nobodyさん
03/05/28 22:27ID:uwixhF+zちなみにこれについて教えていただきたいのですが、
$1$2$3というのは変数だと思いますが、strict内で変数宣言しなくても
エラーが出ませんでした。どうしてなのでしょうか?
普通は my $1;などと変数宣言しないといけないはずですが。
0583nobodyさん
03/05/28 22:37ID:???http://www.google.com/search?num=100&hl=ja&ie=UTF-8&oe=UTF-8&as_qdr=all&q=Perl+%E7%89%B9%E6%AE%8A%E5%A4%89%E6%95%B0+%241&lr=lang_ja
0584nobodyさん
03/05/28 22:42ID:???0585nobodyさん
03/05/28 22:44ID:???0586nobodyさん
03/05/28 22:47ID:uwixhF+z特殊変数だったのですね。
$n
最後に一致した正規表現内の()グループに相当する部分文字列が設定されるのですね。
正規表現を勉強しないといけませんね。
0587nobodyさん
03/05/28 22:58ID:uwixhF+z0588nobodyさん
03/05/28 23:14ID:???これもゆとり教育の弊害か。
0589nobodyさん
03/05/28 23:20ID:???0590nobodyさん
03/05/28 23:41ID:???こんな香具師、いつもならスルーなのに今日はどうした?
0591nobodyさん
03/05/28 23:53ID:???$body =~ s/\n//;
$body =~ s/\n//;
完璧だ!
0592nobodyさん
03/05/29 00:08ID:NXYitVzp構うなよバカを
0593nobodyさん
03/05/29 00:23ID:QV3HKWcehttp://homepage3.nifty.com/coco-nut/
ここ(σ ̄ω ̄)σ神がいます
http://jbbs.shitaraba.com/computer/2364/
0594nobodyさん
03/05/29 00:58ID:???0596nobodyさん
03/05/29 10:45ID:m7OaXWdv0597nobodyさん
03/05/29 10:56ID:OM7vlSMS2,SIBUYA
3,SHINJYUKU
という3行のCSVファイル「house.csv」があって、
それをHTML::Templateモジュール の<TMPL_LOOP>を使って表示させたいのですが、
いかんせん、リファレンスのことが理解できず(通算15時間以上読んでいるのですが(泣))、
やり方がわかりません。どのようにすればいいのでしょうか?
open(IN, "< house.csv");
while ($line = <IN>){
chomp $line;
$values = split(/,/, $line);
#不明箇所その1($values[0]、$values[1])をどうすりゃいいか
}
#--------------------------------------------------------------------
# HTMLテンプレートをオープン
my $template = HTML::Template->new(filename => './tmpl/search_result.html');
# パラメータを埋める
$template->param(SEARCH_RESULT => [
{ id => '1', station => 'UENO' },
{ id => '2', station => 'SIBUYA' },
{ id => '3', station => 'SHINJYUKU' },
#不明箇所その2
#今は、ここを、直接idとstationを書いているが、これを、
#CSVファイルからもってきた値に変えたい
]
);
あと、リファレンスについて、猿でもわかる解説ってないでしょうか・・・?
0598bloom
03/05/29 11:10ID:AQrs4zcG0599nobodyさん
03/05/29 11:51ID:???0600nobodyさん
03/05/29 11:54ID:???なぜ、ラクダ本を薦めるのかがわからん。
たしかに最強の本だが、ラクダ本で理解するのは難しいだろ。
ある程度分かってからなら、さらに深く理解できると思うけど。
お勧めは、「新Perlの国へようこそ」
俺は、これでリファレンス&オブジェクトを勉強した。
0601nobodyさん
03/05/29 12:00ID:e3PaTXyE十分と思われ。
まあ漏れもラクダ本は好きじゃないけど、これくらい買う気にならないと
どうせやっても頓挫するよ、くらいの目安にはなると思う。
ちなみに漏れは「初めてのPerl」みたいなタイトルの本買って勉強しますた。
0602_
03/05/29 12:01ID:???0603nobodyさん
03/05/29 12:18ID:???入門もリファレンスもネット上で足りるよな。
それでも理解不能な超初心者向けの本というと何だろう。
もはやPerl以前のところから説明してそうだけど。
0604597
03/05/29 12:34ID:???おれが一番読んでいるのは、その「新Perlの国へようこそ」です・・・
やばいのかな、おれって
いや、リファレンス以外はらいたい、その本で理解できたつもりなんですけどね
0605nobodyさん
03/05/29 14:19ID:???0606nobodyさん
03/05/29 14:42ID:???0607nobodyさん
03/05/29 14:59ID:hW1BfWjcを使ってダウンロードさせるプログラムがあって、
そいつをNetScape7でダウンロードさせると、ファイル名のケツに.cgiがつくんです。
対処方法はありますか?
0608nobodyさん
03/05/29 15:10ID:f7DLEcKaそれともパール?
どうなのYOー
0609nobodyさん
03/05/29 15:17ID:???まぁ、俺は駱駝本は欲しいなと思ってはいるけど、
入門段階で本を買ったら覚えれるという発想も安直だと思うのだが如何だろう?
0610nobodyさん
03/05/29 15:41ID:???0611nobodyさん
03/05/29 15:49ID:???0612nobodyさん
03/05/29 15:51ID:5xhJzi5fいちおうNet::SSLeayというモジュールが必要ということで
ppm install Nea::SSLeay としてやってみたもののうまくできません。
どうすればよいでしょうか?
perl初心者ですが申し訳ありません。
0613nobodyさん
03/05/29 17:15ID:???0614nobodyさん
03/05/29 17:48ID:???らくだ本を読めば理解できる人が全てというわけでは無いんだから、少し配慮しよう。
0615nobodyさん
03/05/29 17:50ID:???質問の内容がアホすぎる奴が多い。
いかにも「とりあえず聞いてます」みたいな奴。
ちったあ調べて来い! ってんだ。
0617nobodyさん
03/05/29 22:00ID:???考えるとあんま安くないな...。
あ、簡単なperlの本は読んだんですけど必要ないですかね?
掲示板とか作るところでつまずいたんで買おうと思ってるんですけど。
0618nobodyさん
03/05/29 22:03ID:???あ、スレ違いでした。すいません。
0619nobodyさん
03/05/29 23:22ID:RP1Tv8fKよければ教えて下さい。検索に出なかったもので、、
0620nobodyさん
03/05/30 00:11ID:???http://www.google.com/search?num=50&hl=ja&ie=Shift_JIS&q=Socket+perl&lr=lang_ja
ちゃんと調べたのか・・・。
検索したら、山ほど引っかかるが?
これ、全部読んでもダメなら本探しに行くがよろし。
0621sample
03/05/30 02:10ID:nd3Sm/eFmy @list;
open(IN, "house.csv");
while (<IN>){
chomp;
my ($id, $station) = split /,/;
my %list;
$list{id} = $id;
$list{station} = $station;
push @list, $%list;
}
my $template = HTML::Template->new(filename => './tmpl/search_result.html');
$template->param(
LIST => \@list
);
search_result.htmlの該当部分例
<TABLE>
<TMPL_LOOP NAME="LIST">
<TR><TD><TMPL_VAR NAME="id"></TD><TD><TMPL_VAR NAME="station"></TD></TR>
</TMPL_LOOP>
</TABLE>
■ このスレッドは過去ログ倉庫に格納されています