単純な切り出し、検索は 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ちゃんのスレに書き込むプログラム書いているのですが
文字が書き込まれないのですがどうすればいいでしょうか
Cookie の処理ってどうなってる?
304 :
デフォルトの名無しさん:2011/03/10(木) 18:23:28.95
>>300 ありがとうございます。
//g で普通にやったほうが速いみたいですね。indexとか使うとこの用途の場合は遅い・・。
305 :
>>302:2011/03/10(木) 18:25:43.68
>>303 その辺のことはまったくわかりません・・・
hako=>[{num=>$var2->{num}},{name=>$var2->{name}},{body=>$var2->{body}}]
}) if $n==3;
しょうがないからこうやったよ。
ばかじゃかけないコードだね
かわいそう
DBIxからTTにおくってるよ あほはリファレンスわからないからわからないだろうけど
てsr
普通にlwpでやれよ
>>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% --
凄いことが判明した
[% FOREACH i=[0..2] %]
[% name.${i} %]
[% num.${i} %]
[% END %]
${i}みたいにやるとちゃんと配列取得できます
name.iじゃなくて ${i}だったようです
これで悩み画消えました
>>274 hashrefinflator使えば?
TTは勝手にメソッドかハッシュか判別して辿ってくれるから
ハッシュにしなくても大丈夫なはずなんだけど。
FW使ってもう一段上でblessされてたりすると判別失敗することはある。
hashrefinflatorっていうやつぐぐってみる
314 :
デフォルトの名無しさん:2011/03/10(木) 23:00:06.26
qwの中に , を入れたら以下のように怒られたのですが、
--------
Possible attempt to separate words with commas
--------
セパレータとしてではなくホントに , を "," として配列に含めたい場合 qw の外で書かないといけないんでしょうか?
use warnings;
{
no warnings qw/ qw /;
my @l = qw/ a , b c /;
}
316 :
デフォルトの名無しさん:2011/03/10(木) 23:57:08.67
意図が良く理解できないんですが
>>316 「怒られた」んじゃなくて「警告が出た」だけだから、気にしなくてもいい。
やりたいことがちゃんと分かって書いてて意図どおりに動いているので。
でもPerlは「ひょっとすると書き間違いかもよ?」と警告を出してくれる。
「大丈夫、それはちゃんと分かって書いてるし意図どおりに動いているから」
ということをPerlに伝えるために、該当部分だけ警告が出ないようにしておく、
ということだろうな。qw/qw/で一瞬、ん? 何それ? となるかもしれないけど。ていうか俺はなったけど。
318 :
デフォルトの名無しさん:2011/03/11(金) 10:38:55.73
>>317 ありがとうございます。
no warnings でないとこの警告は止まらないんですね・・。
>>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
ln -s
認証サイトをつくりたいんですが
どんなモジュールがありますか?
openID意外でなんか教えてください
データベースを使う奴がいいです、なにがあるでしょうか?
認証サイトをつくるときに使うアクセス制御のモジュール
教えてください
自分で作れ。パスワードのハッシュをデータベースに格納して比較するだけ。
そうだけどさ
それでフォームから送られたアカウント情報とDBの比較してログインさせたらどうするの?
ユーザー名とかグループによって見えるページかえたいんだけど
322の場合はどんなやりかたでやってる?
「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践」
作者: 徳丸浩、出版社/メーカー: ソフトバンククリエイティブ
これを読む。PHPベースだけど役に立つかも。
ちなみに俺は未見。
そんなのセキュリティのことだろ
わざわざ書籍買う必要ない
ログインさせたら一意な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の状態ではしっかり動作します!
Catalyst::Model::DBIC::Schemaで生産したクラス名が
bbsテーブルのばあいBb.pmになってたんだけど何でですか?教えてください
なんでBbs.pmじゃないんでしょうか
>>328 そのエラーメッセージを読んで、どうすればいいか解らないわけ?
まあ、忠実に
>>4に従えば、動くようになるかもしれないな。
DBIx::Class::Schemaをつかって作ったクラスつかおうとしたら
5000エラーでるんです
index.cgiに use App::Schema;ってかくとエラー
なぜ?
mod_perl使ってからエラーがではじめました
mod_perl使わないとエラーがでません
ほかのCGIはエラーがでません
use App::Schema;っ手各とエラーがでます
App::Schemaは同じフォルダにあります
教えてください
ま た お 前 か
教えてください 精神が狂いそうです
多分カレントディレクトリが/usr/sbin/httpdとかになってて
パスが通ってないんじゃないかな。
use lib 'index.cgiまでの絶対パス';
と書いて問題の切り分けをしてみれば?
そもそも「5000エラー」って何だ?
mod_perlが邪魔して多様です
libとcwdつかってなおせました
ありがとうございました
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'
339 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:26:14.03
gitはぶのつかいかたおしえてもらってもいいかな?
340 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:27:15.02
得するひろむ
がなんとかするからほっとけよ
341 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:28:21.72
俺は他力本願じゃないからな
別に、見て見ぬふりしてないしな
別に俺はそれを直すことがないから
指示待ちでもないしな
perlでGMTの求め方を教えてください
343 :
デフォルトの名無しさん:2011/03/23(水) 23:23:03.94
gmtime(time)
345 :
Perl忍者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ってでます
346 :
Perl忍者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みたいに
でもできません 教えてください 助けてください
困ってます
347 :
Perl忍者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件ってかんじです
348 :
Perl忍者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))
じゃできませんでした教えてください
どうやってスカラーコンテキストで評価して配列すうえられますか?$#みたいなのどうやってつかうんですか子の場合
349 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:32:03.81
if(scalar $p->book_review->all>0) が逆でした
すっとぼけてました
すみませんでした
もうできました
ありがとうございました
350 :
Perl忍者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でいけるとおもったんですができません
教えてください 配列にいれないとできないみたいです どうすればいいんでしょう教えてください
351 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:49:55.74
これ答えてくれたらPerl忍者やめます
教えてください
352 :
Perl忍者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
353 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 01:05:51.92
答えてくださいまってます
答えるべきなのか、スルーすべきなのか分からんが、
all[n]で取得できても次回の取得前にresetが必要だから意味がない
素直に「my @a=$p->book_review->all;」で取得するべき
逆に、一回しか使わないのであれば、SQLで絞り込むべき
>>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で調べてみようと思います
回答ありがとうございました
foreach $result (@{$yahoo_xml->{Result}}) {
$click_url = $result->{ClickUrl};
print "$click_url\n";
}
とやると@{$yahoo_xml->{Result}}分の回数実行されて数個URLが出てくるのですが
これをforeachを使わずに一つだけ出すことってできますか?
$result = pop @{$yahoo_xml->{Result}};#前から取り出すならshift
ってことをきいているんだろうか
$result = ${$yahoo_xml->{Result}}[rand($#{$yahoo_xml->{Result}} + 1)];
とか?
361 :
Perl忍者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とかつかえってことですか?
教えてください
362 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 13:07:02.90
prefetch=>['book_review'=>'usr']じゃなくて
prefetch=>{'book_review'=>'usr'}
でしたすみませんでした解決しました
カス忍者うざいよ
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
366 :
デフォルトの名無しさん:2011/03/29(火) 14:00:04.22
Googleにいくなら
各言語の凄いやつらが
エンペラーっていう団体立ち上げてそこにはいって
Google潰してくれない?
367 :
デフォルトの名無しさん:2011/03/29(火) 15:59:23.62
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} 』だけが初期化される???
Perlの皆さん
WebはPHP王に乗っ取られ
システム系はPython先生に乗っ取られ
日本はRuby戦士の縄張りになってしまって
哀れなPerlerですね
>>371 localは変数の値をどこかにこっそり保存してブロックの最後で
元に戻すだけ、と理解するといいと思う。
374 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:08:34.33
Ruby戦士だもんな ださっ・・・トリッキーさとか、柔軟力とか、オールラウンドちっくがなさそう
戦士だから、術や魔法使えないしな
かわいそう
幅広く立ち回れないかわいそうなRuby
おまけにユーザーも頭悪いし 言ってることが馬鹿げてるよ
発言が、ぐぐればでること直接いってるだけの低能ばっかりだな
忍者たちを舐めないほうがいいよ
戦士とかださいしかっこ悪いしさ気持ち悪いんだけど お前の発言取り消したほうがいいよ
恥ずかしい発言だね君は
>>372 そもそも、Perlの真似してでてきたRubyがいきなり調子こきはじめて気持ち悪いよ
気持ち悪いもなにもOOに美徳感じてるハゲしかいねえ死ね
ごみみたいなアプリ作りやがって死んじまえ
375 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:10:29.89
なんかRubyの気持ち悪いゴミが暴れてるな
頭の悪い発言してたしったか君か
376 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:11:53.32
>>372 お前煽りかた下手だよ
気持ち悪いしね
糞みたいなRuby使って車輪の再発明してる雑魚なんですもんねあなたは
Railsつかってゴミアプリでも生産してろよ鼻くそ
てめえの作ったアプリなんて、身内しかつかわねえだろハゲ死ね雑魚
今すぐ消えろゴミクズ虫
377 :
Perl忍者 ◆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";
>>369 パッケージすら最近勉強し始めたばかりだからさ
ラジオボタンに使えるってのがイマイチ意味が分からない
>>378 レキシカル変数そのものはだめだけどハッシュの1要素だけとかなら
大丈夫みたいだね。俺も知らんかった。
my %hの下で、local %hはエラーになるけどlocal $h{a}はokらしい。
381 :
Perl忍者 ◆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 ローカル
おまえばかだなあ ほんと俺でもわかるのに
382 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 17:07:34.47
医局かできんだよはげ
>>381 local ってグローバル変数に作用するんですよね・・?
384 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 19:51:59.26
myにもするけど・・・バカ?
385 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:05:59.45
Dumpして%main::みてみろよはげ
386 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:13:08.09
シンボルテーブル理解してるか?だめなやつdなあ
>>384 分りました。そうなんですね。
ありがとうございます!
388 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 22:00:49.92
∠ ̄丶
〜|/゚U゚|
──╂∩0二)
/ ⌒i
(_ノ^U レベルアップ
いやいや、そういや解決になってない・・・(>_<)
レキシカル変数に対して、
local $h{a}=30;
local %h;
上が ok で下がなぜ NG なのか。
そういう風に仕様が 『 決まってんだよ 』 って言われればそれまでですけど。
>>389 スクラッチパッドという伝説の世界が開かれたから
my @a;
$a[0]=20;
{local $a[0]=50;}
print $a[0];
どうやら配列でやっても同じなようだな
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 を使いました。 これは認められていません。 同じ名前のパッケージ変数をローカル化したい場合は、 パッケージ名で修飾してください。
localって自動スワップアウトしてくれてる って認識なんだけど間違ってる?
sub{
local $i = 10;
...
}
↓
sub {
my $tmp_i = $i;
$i = 10;
....
$i = $tmp_i; # デストラクタ
}
my $h;
$h=100;
{local $a;}
これがダメなのは前にmyで宣言してるってことが関係あんだろ?
our $h;
$h=20;
{local $h}
localはグローバル変数の値を別の場所にやんだろ
my %h;
my %a;
なんでmyなのに$a[0]と$h{x}でlocalが使えるってことはこの二つがグローバルってこと
俺は知ってるけどおめえなんかに答えおしえねえよかす
すなおにperl-casualできけよはげ
>>394 単純に、local は自分のスコープ外の変数に関して作用するのかな? と最初思いましたが、
これでは local %h で %h がグローバルなら ok でレキシカルなら NG の理由が説明できない。
今必死にバックグラウンドでぐぐってるよPerl忍者たちが
いや。
忍者でもなければ、おもくそフォアグラウンドでぐぐってる。もう寝るけど。
単に、localの対象がグローバル変数だけってことじゃないのか。要するに仕様ってだけで。
perl 5以降myが使えるからlocalがグローバル変数のみ対象で誰も何も困らないってことで。