Perlについての質問箱 46箱目

このエントリーをはてなブックマークに追加
301デフォルトの名無しさん
単純な切り出し、検索は substr とか index で代用出来るならその方が良いよ。

前にベンチマークとったけど、圧倒的に関数の方が速かった。
302デフォルトの名無しさん:2011/03/10(木) 18:01:07.47
#! /usr/bin/perl

use WWW::Mechanize;
use strict;

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

$mech -> get('http://yuzuru.2ch.net/test/read.cgi/gamef/1297000987/');

$mech->submit_form(
fields => {
FROM => '名無し',
mail => 'sage',
MESSAGE => 'ここにメッセージ',
},
button => 'submit'
);

print $mech->content;

2ちゃんのスレに書き込むプログラム書いているのですが
文字が書き込まれないのですがどうすればいいでしょうか
303デフォルトの名無しさん:2011/03/10(木) 18:17:38.80
Cookie の処理ってどうなってる?
304デフォルトの名無しさん:2011/03/10(木) 18:23:28.95
>>300
ありがとうございます。
//g で普通にやったほうが速いみたいですね。indexとか使うとこの用途の場合は遅い・・。
305>>302:2011/03/10(木) 18:25:43.68
>>303
その辺のことはまったくわかりません・・・
306デフォルトの名無しさん:2011/03/10(木) 18:35:23.50
hako=>[{num=>$var2->{num}},{name=>$var2->{name}},{body=>$var2->{body}}]
}) if $n==3;

しょうがないからこうやったよ。
307デフォルトの名無しさん:2011/03/10(木) 18:40:56.12
ばかじゃかけないコードだね
かわいそう

DBIxからTTにおくってるよ  あほはリファレンスわからないからわからないだろうけど
308デフォルトの名無しさん:2011/03/10(木) 18:43:43.94
てsr
309デフォルトの名無しさん:2011/03/10(木) 18:52:33.65
普通にlwpでやれよ
310デフォルトの名無しさん:2011/03/10(木) 19:31:01.28
>>301が言うようにsubstrが速いね。use bytesでバイト単位で処理させるとさらに速い。

use utf8;
use Benchmark qw(:all);
my $text = 'あるないないあるあるある';

cmpthese ( timethese( undef, {
substr => sub {
my $count;
my $word_len = length 'ある';
for my $i ( 0 .. length($text) - $word_len ) {
$count++ if substr($text, $i, $word_len) eq 'ある';
}},
bytes => sub {
use bytes;
my $count;
my $word_len = length 'ある';
for my $i ( 0 .. length($text) - $word_len ) {
$count++ if substr($text, $i, $word_len) eq 'ある';
}},
re_list => sub {
my $count = @{[$text =~ m{ある}g]};
},}));

Benchmark: running bytes, re_list, substr for at least 3 CPU seconds...
bytes: 2 wallclock secs ( 3.13 usr + 0.01 sys = 3.13 CPU) @ 21894.42/s (n=68639)
re_list: 4 wallclock secs ( 3.10 usr + 0.02 sys = 3.12 CPU) @ 58206.79/s (n=181838)
substr: 4 wallclock secs ( 3.03 usr + 0.00 sys = 3.03 CPU) @ 38457.81/s (n=116681)
        Rate bytes substr  re_list
bytes  21894/s   --  -43%   -62%
substr  38458/s   76%   --   -34%
re_list  58207/s ..166%   51%    --
311デフォルトの名無しさん:2011/03/10(木) 20:08:36.01
凄いことが判明した
[% FOREACH i=[0..2] %]
[% name.${i} %]
[% num.${i} %]
[% END %]


${i}みたいにやるとちゃんと配列取得できます
name.iじゃなくて ${i}だったようです

これで悩み画消えました
312デフォルトの名無しさん:2011/03/10(木) 22:11:04.66
>>274
hashrefinflator使えば?
TTは勝手にメソッドかハッシュか判別して辿ってくれるから
ハッシュにしなくても大丈夫なはずなんだけど。
FW使ってもう一段上でblessされてたりすると判別失敗することはある。
313デフォルトの名無しさん:2011/03/10(木) 22:48:56.78
hashrefinflatorっていうやつぐぐってみる
314デフォルトの名無しさん:2011/03/10(木) 23:00:06.26
qwの中に , を入れたら以下のように怒られたのですが、
--------
Possible attempt to separate words with commas
--------
セパレータとしてではなくホントに , を "," として配列に含めたい場合 qw の外で書かないといけないんでしょうか?
315デフォルトの名無しさん:2011/03/10(木) 23:42:18.54
use warnings;
{
no warnings qw/ qw /;
my @l = qw/ a , b c /;
}
316デフォルトの名無しさん:2011/03/10(木) 23:57:08.67
意図が良く理解できないんですが
317デフォルトの名無しさん:2011/03/11(金) 02:33:37.27
>>316
「怒られた」んじゃなくて「警告が出た」だけだから、気にしなくてもいい。
やりたいことがちゃんと分かって書いてて意図どおりに動いているので。
でもPerlは「ひょっとすると書き間違いかもよ?」と警告を出してくれる。
「大丈夫、それはちゃんと分かって書いてるし意図どおりに動いているから」
ということをPerlに伝えるために、該当部分だけ警告が出ないようにしておく、
ということだろうな。qw/qw/で一瞬、ん? 何それ? となるかもしれないけど。ていうか俺はなったけど。
318デフォルトの名無しさん:2011/03/11(金) 10:38:55.73
>>317
ありがとうございます。
no warnings でないとこの警告は止まらないんですね・・。
319デフォルトの名無しさん:2011/03/12(土) 10:48:05.13
>>310で、bytes::length、bytes::substrとbytesを明示すれば10倍ぐらい速くなるな(ActivePerlで)。
何故速くなるかは、PerlのCソースを見ないとわからないのかな?

indexより正規表現のほうが速いのは正規表現エンジンがかなり最適化されてるからなのか?
ただ、bytes::indexとすると正規表現より速くなった。
320デフォルトの名無しさん:2011/03/12(土) 16:56:21.02
cgi環境で以下のどれでも対応出来るようにするにはどのようにしたらよいでしょうか?

#!/usr/bin/perl
#!/usr/local/bin/perl
321デフォルトの名無しさん:2011/03/12(土) 16:58:36.78
ln -s
322デフォルトの名無しさん:2011/03/15(火) 09:19:43.11
認証サイトをつくりたいんですが
どんなモジュールがありますか?
openID意外でなんか教えてください

データベースを使う奴がいいです、なにがあるでしょうか?
認証サイトをつくるときに使うアクセス制御のモジュール

教えてください
323デフォルトの名無しさん:2011/03/15(火) 09:21:51.54
自分で作れ。パスワードのハッシュをデータベースに格納して比較するだけ。
324デフォルトの名無しさん:2011/03/15(火) 09:29:26.64
そうだけどさ

それでフォームから送られたアカウント情報とDBの比較してログインさせたらどうするの?
ユーザー名とかグループによって見えるページかえたいんだけど

322の場合はどんなやりかたでやってる?
325デフォルトの名無しさん:2011/03/15(火) 10:25:09.22
「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践」
作者: 徳丸浩、出版社/メーカー: ソフトバンククリエイティブ

これを読む。PHPベースだけど役に立つかも。
ちなみに俺は未見。
326Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/03/15(火) 10:30:03.06
そんなのセキュリティのことだろ
わざわざ書籍買う必要ない
327デフォルトの名無しさん:2011/03/15(火) 10:33:59.58
ログインさせたら一意なIDを生成して、必要なデータを関連付けて
サーバー側セッションに保存する。
ブラウザにはセッションIDだけをCookieで渡す。
その後はセッションIDで場合分けする。

以上
328デフォルトの名無しさん:2011/03/15(火) 13:09:03.50
Perl2EXEを使ってexe形式にしたのですが実行できません。
どのようにすればいいのか教えてください
source:
use Tk;
use encoding qw(shift-jis);
MainWindow->new()->Label(-textvariable=>\ "てすと1")->pack;
MainLoop;
error:
encoding: Unknown encoding 'shift-jis' at C:\ディレクトリ\ファイル名.exe lin
e 2
BEGIN failed--compilation aborted at C:\ディレクトリ\ファイル名.exe line 2.
.plの状態ではしっかり動作します!
329ななしさん:2011/03/15(火) 13:51:28.28
Catalyst::Model::DBIC::Schemaで生産したクラス名が
bbsテーブルのばあいBb.pmになってたんだけど何でですか?教えてください
なんでBbs.pmじゃないんでしょうか
330デフォルトの名無しさん:2011/03/16(水) 13:32:28.54
>>328

そのエラーメッセージを読んで、どうすればいいか解らないわけ?
まあ、忠実に>>4に従えば、動くようになるかもしれないな。
331デフォルトの名無しさん:2011/03/17(木) 10:37:21.14
DBIx::Class::Schemaをつかって作ったクラスつかおうとしたら
5000エラーでるんです

index.cgiに use App::Schema;ってかくとエラー
なぜ?

mod_perl使ってからエラーがではじめました

mod_perl使わないとエラーがでません

ほかのCGIはエラーがでません
use App::Schema;っ手各とエラーがでます

App::Schemaは同じフォルダにあります

教えてください
332デフォルトの名無しさん:2011/03/17(木) 11:42:21.20
ま た お 前 か
333デフォルトの名無しさん:2011/03/17(木) 16:09:50.12
教えてください 精神が狂いそうです
334デフォルトの名無しさん:2011/03/17(木) 21:15:14.87
多分カレントディレクトリが/usr/sbin/httpdとかになってて
パスが通ってないんじゃないかな。
use lib 'index.cgiまでの絶対パス';
と書いて問題の切り分けをしてみれば?
335デフォルトの名無しさん:2011/03/18(金) 03:47:44.92
そもそも「5000エラー」って何だ?
336デフォルトの名無しさん:2011/03/18(金) 09:03:05.26
mod_perlが邪魔して多様です
libとcwdつかってなおせました
ありがとうございました
337デフォルトの名無しさん:2011/03/22(火) 16:42:49.63
http://www.tohoho-web.com/lng/200001/00010144.htm
これと同じことをCatalyst使ってもっと綺麗で短くできないものか
datファイルもDBも使わないhtmlだけの掲示板が欲しい
338デフォルトの名無しさん:2011/03/23(水) 12:43:29.58
http://perldoc.jp/docs/perl/5.10.1/perlfaq4.pod

下の方が壊れててみれない
誰か直さないとまずくないか?

Why don't my <<HERE documents work?¶

(なぜ私の <<HERE ドキュメントがうまく動かないのでしょう?)

以下の三つの点を確認してください。

POD ERRORS¶

Hey! The above document had some coding errors, which are explained below:

Around line 2583:
=end original without matching =begin. (Stack: =begin original; =over)

Around line 2699:
You forgot a '=back' before '=head1'
339Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:26:14.03
gitはぶのつかいかたおしえてもらってもいいかな?
340Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:27:15.02
得するひろむ
がなんとかするからほっとけよ
341Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:28:21.72
俺は他力本願じゃないからな

別に、見て見ぬふりしてないしな

別に俺はそれを直すことがないから
指示待ちでもないしな
342デフォルトの名無しさん:2011/03/23(水) 23:15:37.15
perlでGMTの求め方を教えてください
343デフォルトの名無しさん:2011/03/23(水) 23:23:03.94
>>330
従っても出来ませんが……
344デフォルトの名無しさん:2011/03/23(水) 23:32:56.65
gmtime(time)
345Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:10:06.66
my $schema=MyApp::Schema->connect('dbi:mysql:kasu','root','kasu');
my $rs=$schema->resultset("Book")->search({},{order_by=>{-desc=>['me.isbn']},prefetch=>['book_review']});
while(my $p=$rs->next)
{
print $p->isbn,"\n";
print $p->book_review,"\n";
}

ってやると 

978-4-89100-626-6

978-4-89100-625-9

978-4-8443-2699-1
MyApp::Schema::Result::Review=HASH(0x9d4e618)MyApp::Schema::Result::Review=HASH(0x9d523c8)
978-4-8443-2061-6
MyApp::Schema::Result::Review=HASH(0x9d528c8)MyApp::Schema::Result::Review=HASH(0x9c2cb30)MyApp::Schema::Result::Review=HASH(0x9d4e758)
978-4-8443-2005-0
MyApp::Schema::Result::Review=HASH(0x9d521e8)MyApp::Schema::Result::Review=HASH(0x9c2cb30)
978-4-7981-1992-2
MyApp::Schema::Result::Review=HASH(0x9d525e8)MyApp::Schema::Result::Review=HASH(0x9c2cb30)
978-4-7981-1876-5

978-4-7741-4076-6
MyApp::Scheってでます
346Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:16:52.36
print $p->book_reviewこれを
print $p->book_review->nextかfirst変えると

MyApp::Schema::Result::Review=HASH(0x9d4e618)MyApp::Schema::Result::Review=HASH(0x9d523c8)
978-4-8443-2061-6
の一番最初のMyApp::Schema::Result::Review=HASH(0x9d4e618)が得られるんですが

print $p->book_review->next->bodyとやっても表示されません
print $p->book_review->next->[0]->bodyでもできませんし
やっぱりここはmy @a=$p->book_review->allで配列に全部取得してから表示しないとだめなんでしょうか?
allは配列を返すってなってるので
書籍にはTemplate toolkit向けにつくられており
[% item.book_review.0.body %]で本文表示してるんです
これをTTつかわないでやってみたんですが・・・配列使えませんでした
$p->book_review->[0]ってやっても
Not an ARRAY reference at k.pl line 12.ってでたんですが
foreachとかで回すと全部表示することになってしまうんです
好きな場所の番号えらんで表示したいんですが$p->book_review->[1]->bodyみたいに
でもできません 教えてください 助けてください
困ってます
347Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:21:01.99
978-4-8443-2699-1 のやつには2個のbody(コメント)があります
978-4-8443-2061-6 には3コメント
978-4-89100-626-6 は0件ってかんじです


348Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:27:43.00
my $a=$p->book_review->all;
if($a>0)
{
print $p->book_review->next->body,"\n";
}

これでできました

最初のnextがからだから
Can't call method "body" on an undefined value at k.pl line 12.
ってでてました
ですが、いちいち$aにいれてスカラーコンテキストで配列数得るの大変です
if($a>scalar($p->book_review->all))
じゃできませんでした教えてください
どうやってスカラーコンテキストで評価して配列すうえられますか?$#みたいなのどうやってつかうんですか子の場合
349Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:32:03.81
if(scalar $p->book_review->all>0) が逆でした
すっとぼけてました
すみませんでした

もうできました

ありがとうございました
350Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:40:09.92
my @a=$p->book_review->all;
print $a[2]->body,"\n";


こうしないと取得できないのですが
print $p->book_review->all->[0]->body
これじゃなんで取得できないんでしょうか?教えてください
allが返すのは、配列なのですが

$p->book_reviw->allだと
MyApp::Schema::Result::Review=HASH(0x9589700)
MyApp::Schema::Result::Review=HASH(0x9467b90)
って表示されるので
2番目のやつを表示したいので
$p->book_review->all->[1]->bodyでいけるとおもったんですができません
教えてください 配列にいれないとできないみたいです どうすればいいんでしょう教えてください
351Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:49:55.74
これ答えてくれたらPerl忍者やめます
教えてください
352Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 01:02:47.60
print $p->book_review->slice(1),"\n";
MyApp::Schema::Result::Review=HASH(0x8e85870)
978-4-8443-2061-6
MyApp::Schema::Result::Review=HASH(0x8e85bb0)
978-4-8443-2005-0
MyApp::Schema::Result::Review=HASH(0x8e85690)
978-4-7981-1992-2
MyApp::Schema::Result::Review=HASH(0x8e85450)
978-4-7981-1876-5
978-4-7741-4076-6
MyApp::Schema::Result::Review=HASH(0x8e85cb0)

$p->book_review->slice(2)

978-4-89100-626-6
978-4-89100-625-9
978-4-8443-2699-1

978-4-8443-2061-6
MyApp::Schema::Result::Review=HASH(0x9875ac0)
978-4-8443-2005-0

978-4-7981-1992-2

978-4-7981-1876-5
978-4-7741-4076-6
353Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 01:05:51.92
答えてくださいまってます
354デフォルトの名無しさん:2011/03/24(木) 01:35:02.56
答えるべきなのか、スルーすべきなのか分からんが、
all[n]で取得できても次回の取得前にresetが必要だから意味がない
素直に「my @a=$p->book_review->all;」で取得するべき
逆に、一回しか使わないのであれば、SQLで絞り込むべき
355デフォルトの名無しさん:2011/03/24(木) 02:33:18.21
>>350
>print $p->book_review->all->[0]->body

はallが配列リファレンスを返すことを期待しているが、

my @a=$p->book_review->all;

がちゃんと動くんならallが返すのはリファレンスじゃなくてリストなんだろう。

てことで無理に書くとこうかな?

print (($p->book_review->all)[0]->body);

print [$p->book_review->all]->[0]->body;
356デフォルトの名無しさん:2011/03/24(木) 08:51:55.93
>>35 >>355
昨日これやりました

print [$p->book_review->all]->[0]->body;

これやったのにできなかったのは
#if(scalar $p->book_review->all >0)がなかったから
Can't call method "body" on an undefined valueってでてたからでした
空のリストで値表示しようとさせたからです

Can't call method "body" on an undefined valueで調べてみようと思います
回答ありがとうございました
357デフォルトの名無しさん:2011/03/24(木) 12:09:55.09
foreach $result (@{$yahoo_xml->{Result}}) {
$click_url = $result->{ClickUrl};
print "$click_url\n";
}

とやると@{$yahoo_xml->{Result}}分の回数実行されて数個URLが出てくるのですが
これをforeachを使わずに一つだけ出すことってできますか?
358デフォルトの名無しさん:2011/03/24(木) 12:18:43.04
$result = pop @{$yahoo_xml->{Result}};#前から取り出すならshift
ってことをきいているんだろうか
359デフォルトの名無しさん:2011/03/24(木) 12:46:04.39
$result = ${$yahoo_xml->{Result}}[rand($#{$yahoo_xml->{Result}} + 1)];
とか?
360デフォルトの名無しさん:2011/03/24(木) 12:50:09.28
>>358-359
ありがとうございます。
目的の結果がでました
361Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 12:57:42.76
my $schema=MyApp::Schema->connect('dbi:mysql:kasu','root','kasu');
my $rs=$schema->resultset("Book")->search({},{prefetch=>['book_review'=>'usr']});

prefetchで2個結合させると
DBIx::Class::ResultSet::count(): No such relationship usr on Book at k.pl line 8
ってでます
ちゃんとスキーマクラスにはhas_manyとかやってます
書籍の内容ではTemplate Toolkitでは
[% FOREACH book=list %]
[% FOREACH item=book.book_review %]
ってやってるんですが
$rs->nextとか$rsとかやっても
DBIx::Class::ResultSet::all(): No such relationship usr on Book at k.pl line 8
ってでます
どうすればいいでしょうか?

そもそも、DBICはTT用とかにむいてるんでしょうか?
TT使わないなら、DBIとかつかえってことですか?
教えてください
362Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 13:07:02.90
prefetch=>['book_review'=>'usr']じゃなくて
prefetch=>{'book_review'=>'usr'}

でしたすみませんでした解決しました
363デフォルトの名無しさん:2011/03/24(木) 16:08:04.73
カス忍者うざいよ
364デフォルトの名無しさん:2011/03/24(木) 16:39:28.24
363 :デフォルトの名無しさん:2011/03/24(木) 16:08:04.73
カス忍者うざいよ

wwwwwwwwwwwwwwwwwwwwwwwwwww

wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww

wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
365デフォルトの名無しさん:2011/03/29(火) 13:25:53.28
Perl の母って誰ですか?

Java の父 James Gosling、Google へ
http://slashdot.jp/it/article.pl?sid=11/03/28/239202

>次は Perl の母あたりが Google に行くに違いない。
366デフォルトの名無しさん:2011/03/29(火) 14:00:04.22
Googleにいくなら

各言語の凄いやつらが
エンペラーっていう団体立ち上げてそこにはいって

Google潰してくれない?
367デフォルトの名無しさん:2011/03/29(火) 15:59:23.62
cpanで、Plaggerを、インストールしたいのだけど、できない。
コマンドラインの言葉のリンク。
http://akiba.geocities.jp/tr4583384/Pluggernotinstall.txt

どうしたら、できるようになりますか?
368デフォルトの名無しさん:2011/03/30(水) 00:43:17.53
my $test = 'SAMPLE';
my $pkg = $test->new;
$pkg->test();


こんなこと出来るのね。
気持ち悪いけど、このお陰で自分のやりたいことが出来るようになった。
369デフォルトの名無しさん:2011/03/30(水) 10:54:47.76
シンボリックリファレンスですよ
そんなのもわからないんですか?

死ね ラジオボタンとかでつかえるだろ
370デフォルトの名無しさん:2011/03/30(水) 11:01:00.25
my $radio=param("radiobox");

$box{$radio}="xxxx";
371デフォルトの名無しさん:2011/03/30(水) 11:16:18.72
local $h{a} = 'A';

local宣言ですが、undefで初期化されると記憶していたので上のコードは、
------------
local %h;
$h{a} = 'A';
------------
と同義なのかと勘違いしてしまっていたのですが、このような記述は
local $h{a} = 'A';
どういう意味になるのでしょうか?
『 $h{a} 』だけが初期化される???
372デフォルトの名無しさん:2011/03/30(水) 11:23:15.85
Perlの皆さん
WebはPHP王に乗っ取られ
システム系はPython先生に乗っ取られ
日本はRuby戦士の縄張りになってしまって
哀れなPerlerですね
373デフォルトの名無しさん:2011/03/30(水) 11:57:31.68
>>371
localは変数の値をどこかにこっそり保存してブロックの最後で
元に戻すだけ、と理解するといいと思う。


374Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:08:34.33
Ruby戦士だもんな ださっ・・・トリッキーさとか、柔軟力とか、オールラウンドちっくがなさそう

戦士だから、術や魔法使えないしな
かわいそう

幅広く立ち回れないかわいそうなRuby
おまけにユーザーも頭悪いし 言ってることが馬鹿げてるよ
発言が、ぐぐればでること直接いってるだけの低能ばっかりだな

忍者たちを舐めないほうがいいよ
戦士とかださいしかっこ悪いしさ気持ち悪いんだけど お前の発言取り消したほうがいいよ
恥ずかしい発言だね君は>>372
そもそも、Perlの真似してでてきたRubyがいきなり調子こきはじめて気持ち悪いよ
気持ち悪いもなにもOOに美徳感じてるハゲしかいねえ死ね
ごみみたいなアプリ作りやがって死んじまえ
375Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:10:29.89
なんかRubyの気持ち悪いゴミが暴れてるな

頭の悪い発言してたしったか君か
376Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:11:53.32
>>372
お前煽りかた下手だよ
気持ち悪いしね
糞みたいなRuby使って車輪の再発明してる雑魚なんですもんねあなたは
Railsつかってゴミアプリでも生産してろよ鼻くそ
てめえの作ったアプリなんて、身内しかつかわねえだろハゲ死ね雑魚
今すぐ消えろゴミクズ虫
377Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:20:45.60
逃げたかカスは
378デフォルトの名無しさん:2011/03/30(水) 13:59:17.50
>>373
分りました。あと、以下みたいに my で作った奴にも local がちゃんと?動作するみたいなんですが、
localってグローバル変数だけじゃなく、レキシカルなものにも動作するもんなんですか?

use strict;
use warnings;

my %h = (a=>'A', b=>'B');
{
 local $h{a} = '_a_';
 print $h{a},"\n";
}
print $h{a}, "\n";
379デフォルトの名無しさん:2011/03/30(水) 14:38:32.19
>>369
パッケージすら最近勉強し始めたばかりだからさ


ラジオボタンに使えるってのがイマイチ意味が分からない
380デフォルトの名無しさん:2011/03/30(水) 14:44:09.31
>>378
レキシカル変数そのものはだめだけどハッシュの1要素だけとかなら
大丈夫みたいだね。俺も知らんかった。

my %hの下で、local %hはエラーになるけどlocal $h{a}はokらしい。
381Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 17:01:18.22
ばかかよ
my %h;
ってやって
local %h;ってできるわけねえだろあほ
localはブロックない有効できるからな
my %h;
$h{a}=10;
{ local $h{a}=30; }

外のが10 変更されない 10のままlocal ローカル
おまえばかだなあ ほんと俺でもわかるのに
382Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 17:07:34.47
医局かできんだよはげ
383デフォルトの名無しさん:2011/03/30(水) 18:11:59.15
>>381
local ってグローバル変数に作用するんですよね・・?
384Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 19:51:59.26
myにもするけど・・・バカ?
385Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:05:59.45
Dumpして%main::みてみろよはげ
386Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:13:08.09
シンボルテーブル理解してるか?だめなやつdなあ
387デフォルトの名無しさん:2011/03/30(水) 21:34:47.27
>>384
分りました。そうなんですね。
ありがとうございます!
388Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 22:00:49.92
   ∠ ̄丶
  〜|/゚U゚|
──╂∩0二)
   / ⌒i
   (_ノ^U レベルアップ
389デフォルトの名無しさん:2011/03/30(水) 23:27:18.86
いやいや、そういや解決になってない・・・(>_<)

レキシカル変数に対して、
 local $h{a}=30;
 local %h;
上が ok で下がなぜ NG なのか。

そういう風に仕様が 『 決まってんだよ 』 って言われればそれまでですけど。
390Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:40:19.96
>>389
スクラッチパッドという伝説の世界が開かれたから
391Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:45:12.69
my @a;
$a[0]=20;
{local $a[0]=50;}
print $a[0];

どうやら配列でやっても同じなようだな
392Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:46:30.75
Can't localize lexical variable %s

(F) You used local on a variable name that was previously declared as a lexical variable using "my". This is not allowed. If you want to localize a package variable of the same name, qualify it with the package name.

(F) 以前に "my" を使ってレキシカル変数として宣言された変数名に対して local を使いました。 これは認められていません。 同じ名前のパッケージ変数をローカル化したい場合は、 パッケージ名で修飾してください。
393デフォルトの名無しさん:2011/03/30(水) 23:46:34.32
localって自動スワップアウトしてくれてる って認識なんだけど間違ってる?

sub{
 local $i = 10;
 ...
}
  ↓
sub {
 my $tmp_i = $i;
 $i = 10;
 ....
 $i = $tmp_i; # デストラクタ
}
394Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:54:00.84
my $h;
$h=100;
{local $a;}

これがダメなのは前にmyで宣言してるってことが関係あんだろ?

our $h;
$h=20;
{local $h}

localはグローバル変数の値を別の場所にやんだろ

my %h;
my %a;
なんでmyなのに$a[0]と$h{x}でlocalが使えるってことはこの二つがグローバルってこと

俺は知ってるけどおめえなんかに答えおしえねえよかす
395Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:55:46.26
すなおにperl-casualできけよはげ
396デフォルトの名無しさん:2011/03/31(木) 00:13:12.55
>>394

単純に、local は自分のスコープ外の変数に関して作用するのかな? と最初思いましたが、

これでは local %h で %h がグローバルなら ok でレキシカルなら NG の理由が説明できない。
397Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/31(木) 00:27:23.46
今必死にバックグラウンドでぐぐってるよPerl忍者たちが
398デフォルトの名無しさん:2011/03/31(木) 00:35:20.97
いや。

忍者でもなければ、おもくそフォアグラウンドでぐぐってる。もう寝るけど。
399デフォルトの名無しさん:2011/03/31(木) 00:39:32.69
>>398
じゃあなんですか?
400デフォルトの名無しさん:2011/03/31(木) 02:38:22.26
単に、localの対象がグローバル変数だけってことじゃないのか。要するに仕様ってだけで。
perl 5以降myが使えるからlocalがグローバル変数のみ対象で誰も何も困らないってことで。