トップページ⇒php
1001コメント313KB

【Perl】初心者コーナー Part19

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/02/09 00:24ID:s0tpWWxg
初めに→「perl」その物のスレです。

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

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


CGIだけど、なんか質問ある? Part 9
http://pc.2ch.net/test/read.cgi/php/1041530204/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/

あとは>>2-10。
0002nobodyさん03/02/09 00:25ID:s0tpWWxg
[過去ログ]
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
 DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
 DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 知らん
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html

[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0003nobodyさん03/02/09 00:25ID:BxWrsuOv
4!
0004nobodyさん03/02/09 00:25ID:???
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0005nobodyさん03/02/09 00:25ID:???
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・use Perl; : http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
 ・use Object; : http://perl.infoware.ne.jp/
0006103/02/09 00:26ID:???
うげ part20 だった・・・
0007nobodyさん03/02/09 00:26ID:???
荒らしみたい・・・
0008nobodyさん03/02/09 00:27ID:???
>>6
致命的だな。。。
0009nobodyさん03/02/09 00:29ID:???
Part14のURL見つけてきた。

Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
0010nobodyさん03/02/09 00:29ID:???
>>9
乙。
0011nobodyさん03/02/09 00:40ID:???
前スレの>>992
lynx -sourceとかwget -q0をパイプしてopenして、
目的地までseekして、必要分read。
0012nobodyさん03/02/09 00:41ID:???
スレ建て乙
0013本7 ◆HON7/awDa. 03/02/09 02:17ID:???
またまたお願いします。

http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs.txt
と
http://hon7.hp.infoseek.co.jp/cgi-bin/test/trip.txt

を組み合わせて掲示板にトリップ機能を付けたいんですがどこにどう入れたらいいのかわかりません。
またどいう加工とが必要でしょうか?

もし他に2ch仕様のトリップ付く方法があればそちらでも結構です。
よろしくお願いします。
0014nobodyさん03/02/09 02:25ID:???
Perlのプログラムで、何かのデータを書き出したい時に、
テンポラリファイルを作ってそこにデータを書き込んでからrenameして、実際のデータファイルとする、
という作業がありますが、
この作業はSDBMなどのデータベースを扱っている場合でもすべきでしょうか?
0015nobodyさん03/02/09 03:22ID:???
これは間違ってる??

if unless while foreach for は制御構文
my our local return use require sub はキーワード
time localtime substr split join は関数
0016nobodyさん03/02/09 03:23ID:???
あ、よく考えたらuse requireは、普通に関数だな。
0017nobodyさん03/02/09 03:25ID:???
next lastは、キーワード?

困った。わけわからん。
0018nobodyさん03/02/09 03:49ID:???
>>17
名前付き単項演算子(フロー)
0019nobodyさん03/02/09 05:03ID:???
前スレ>>994

それでOKだよ。
my宣言する変数は基本的にすべて () でくくっておけば問題ない。
(ただし初期化したいときだけは注意)
0020nobodyさん03/02/09 08:23ID:???
>>13
改造公房
0021nobodyさん03/02/09 08:28ID:???
<input type="file"> で送ってもらったテキストデータの中身を
変数に代入したいんですがどうすればいいですか?

アップローダーとか参考にしたら、保存してしまうので
あまり参考にはならないのですが…

よろしくお願いします。
0022nobodyさん03/02/09 08:35ID:???
悪いこと言わないからやめときなさい。
0023nobodyさん03/02/09 08:59ID:BDYUFdWT
カート作ってるんですが、
<FORM METHOD="POST" ACTION="./cart.cgi" target="top">
てな感じでフレームで分割してかごの中身を表示したいのですが、
単体だとうまく動くのに、フレーム内だと、データを渡せないのか
確認画面でかごの中身が空になってしまいます。
ttp://openlab.ring.gr.jp/k16/htmllint/htmllintl.html
↑では、
<FORM> の属性 `TARGET` はあまり薦められない属性です。
と言われてしまいました。なんとかフレーム分割したいのですが・・・。
よろしくお願いします。
0024nobodyさん03/02/09 09:37ID:???
>>23
JavaScriptを併用する
と言ってみる
0025本7 ◆HON7/awDa. 03/02/09 13:10ID:???
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13


何とかしてくれー!
0026nobodyさん03/02/09 13:16ID:???
>>25
【 スクリプト改造工房 PART 5 】
http://pc2.2ch.net/test/read.cgi/php/1028193595/
0027nobodyさん03/02/09 13:52ID:???
>>23
フレームセットのファイルをA、フレーム内のファイルをB,Cとすると、

action="A" target="_top" として、まずAが変数を受け取って
B,Cに変数を渡す下準備をする。もちろんAはCGIでなくてはならない。

Aは、B,Cを frame src="B?変数名=変数" てな感じで呼び出す。
B,Cはそれぞれ渡された変数を元に画面表示する。

>>24がいうようにJavaScriptやcookie使った方がいいだろうなぁ・・・
0028nobodyさん03/02/09 15:15ID:???
>25
トリップ機能のある掲示板のソース研究すれば?
配布してるのでもあるよ。検索してみれ。
00292303/02/09 17:10ID:XYLtLJwJ
ありがとうございます。
cookie使ってるんで、そのへんかなぁ・・・?
0030nobodyさん03/02/09 17:17ID:???
>>23
スレ違いっぽいけど、、
どんな形でデータの受け渡しが行われるかの
情報が無いのでなんとも言えません。

another-htmllintのあまり薦められない属性は、
loose.dtdで書いている限り無視で構いません。

>>25
トリップなんて好きな所に埋め込めばいい。
どうしてもというなら、キャップ処理の前後。
0031本7 ◆HON7/awDa. 03/02/09 17:27ID:???
>>30
トリップ処理の方の$inを$FORMに変えて入れてみたらざなぜかエラーに
ブラウザにエラー行返して見たらトリップ機能の2行目でエラーらしいんですよ。
なぜでしょうか?
0032nobodyさん03/02/09 17:38ID:???
>>31
「エラーになった」だけじゃ分からんよ。
エラーの内容を一字一句もらさず書いてくれ。
0033本7 ◆HON7/awDa. 03/02/09 18:10ID:???
すんませんBBSを開いてレスかき込みを行うと

Software error:
Unrecognized character \x81 at /home/h/o/n/hon7/cgi-bin/test/bbs.cgi line 398.

For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

とでます。ソースは
http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs3.txt
を更新しました。よろしくです
0034nobodyさん03/02/09 18:18ID:+X3kwgjb
日本語検索は()←半角括弧が使えないのでしょうか?
$TEST = '(テスト)';
これをeucに変換して検索してもうまくいきません。
0035nobodyさん03/02/09 18:32ID:???
>>34
日本語検索って、具体的にどうやったの?
eucへの変換はどうやったの?
どううまくいかないの?エラーが出る?結果が変?
0036nobodyさん03/02/09 18:36ID:???
>>33
それは謎。とりあえず、
397行 my $trip;
406行 foreach my $key ('FROM', 'MESSAGE', 'mail') {
に変更。
0037nobodyさん03/02/09 18:46ID:???
>>33
398行 $FORM{'FROM'} =~ s/\◆/\◇/g;
もしかして、これで回避できるかも。
0038nobodyさん03/02/09 18:57ID:???
>>37
うちでその行だけテストしてみたけど、普通に置換できるんだよね。
なんでだろう。ソースの文字コードが違うのかな。

もしだめなら、これでどうだ。やってることは一緒。

$FORM{'FROM'} =~ s/\x81\x9f/\x81\x9e/g;
0039本7 ◆HON7/awDa. 03/02/09 20:15ID:???
おかげさまでなんとかトリップ機能が動きました。
でもまだ問題があってindexを開いた際にクッキー情報の名前もトリップ変換してしまい名前欄を
はみだしてしまいます。
396行の名無しさん処理のunless()のあとelse{}で398行〜425行のトリップ処理を加えました。
これを何行目あたりに入れることでこのバグを回避できますか?
自分でも悩んでるんですどうも全体の流れがつかめないもので・・


こちらでソースは更新しました。
http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs3.txt

よろしくお願いします
0040nobodyさん03/02/09 20:26ID:???
>>39
マルチポストすんなぼけ!
0041本7 ◆HON7/awDa. 03/02/09 20:37ID:???
あれ?誤爆ですた。すんません
0042nobodyさん03/02/09 21:07ID:???
2chのようなID制を作成したいんですが、どういった仕組みで動かせばいいんでしょうか?
自分なりに
1、 210.135.129.41 を点ごとに4つに分解
2、分解した後ろ3つと日付を掛ける [135] * [129] * [41] * [day]
3、数字からひたすらアルファベットに置き換える

としているんですが、全くランダム制がなく困っています
0043本7 ◆HON7/awDa. 03/02/09 21:17ID:???
>>42
2chだってランダム性は少なくてクラウンで同一の串なら同じIDだったような
0044nobodyさん03/02/09 21:21ID:???
>>42
IPを8ケタの16進数にして、日付を種(SALT)にしてcrypt、ってのはどうか。
0045nobodyさん03/02/09 21:45ID:???
>>43
あのね、クラウンは日付を種にしてないだけなの。
他の鯖は日付ごとに変わるでしょう?
0046nobodyさん03/02/09 22:04ID:???
crypt試してみました
どうやら先頭2文字がsaltそのままみたいですね
とりあえず、先頭の文字だけ切って表示するようにしときます
0047nobodyさん03/02/10 00:36ID:???
掲示板を作ってるんですが質問があります。
書き込みボタン押して本文が無かったらリロードというのをしたいです。
どうもうまくいかないみたいで・・・
ご教授お願いします。
0048nobodyさん03/02/10 00:46ID:???
>>47
どううまくいかないの?

上のほうにもあるけど、「うまくいかない」だけじゃわかんないよ。
どうなるか必ず書くこと。エラーメッセージもあれば書くこと。
0049nobodyさん03/02/10 00:46ID:???
if ($honbun eq "" ) { print "リロードタグ"}
0050nobodyさん03/02/10 02:56ID:???
>>14
0051nobodyさん03/02/10 04:15ID:???
>>50 >>14
SDBMにはロック機構がないようなので、
独自で排他処理をしないと駄目な感じですね。

ファイルロックで包む例。
ttp://cat.zero.ad.jp/mouse/download/log/dblog2/ezlog_cgi.txt

もしくは、MLDBM::Sync モジュールを使う。
http://www.perldoc.com/cpan/MLDBM-Sync-0.07.tar.gz.html
0052nobodyさん03/02/10 04:20ID:???
しかし、データベースファイルに
テンポラリファイルを使うのはいかがなものかと。
00535003/02/10 04:35ID:lunjJQvX
>>51さんのように
SDBMをファイルロックで包む例はよくあるんだけど、
>>52さんの言うように
テンポラリファイルを使う例があまりないみたいなので質問してみたんですが、
どうなんでしょうかね?

ファイルロックが完璧ならばテンポラリファイルを使う必要もないと思うんですが。
0054実は…51==5203/02/10 05:05ID:???
テンポラリファイル必要なしに同意です。

flockが不安定または使えない場合は、
symlinkとかmkdirの擬似的なロックでもいいと思います。
DBM処理系によっては複数のファイルを作成したりしますので、
テンポラリは結構面倒かもしれません。
0055超初心者03/02/10 11:47ID:MIMhYBnE
カウンターを作っていますがうまく行きません。
トータル・今日・昨日をカウントさせたいのですが、
昨日・今日が上手くカウントしてくれないです。
0056超初心者03/02/10 11:48ID:MIMhYBnE
#!/usr/bin/perl

print "Content-type: text/html\n\n";
$logfile = './1.txt';
$ENV{'TZ'} = "JST-9";
$mday = (localtime(time))[3];
open(IN,"$logfile");
$coall =<IN>;
$cotod =<IN>;
$coyes =<IN>;
$day =<IN>;
close(IN);
chop $coall;
$coall++;
if($mday != $day){
$coyes = $cotod;
$cotod = "0";
$day = $mday;
}
chop $cotod;
$cotod++;
open(OUT,">$logfile");
print OUT "$coall\n";
print OUT "$cotod\n";
print OUT "$coyes\n";
print OUT "$day\n";
close(OUT);
print <<"HTML";
累計$coall人<BR>今日$cotod人<BR>昨日$coyes人
HTML
0057nobodyさん03/02/10 12:33ID:???
>>56
改行の扱い方が悪し。
とりあえず下記の変更でも動くけれど、良くないね。全体的に見直すべし。

close(IN);
chop $coall;
chop $cotod;
chop $coyes;
chop $day;
$coall++;
if($mday != $day){
$coyes = $cotod;
$cotod = "0";
$day = $mday;
}
#chop $cotod;
0058超初心者03/02/10 14:42ID:MIMhYBnE
>>57さん
有難う御座いました。勉強になりました。
0059nobodyさん03/02/10 22:19ID:???
遅レスだしもう解決したみたいだけど、

>>33
Unrecognized character \x81 と来たときには全角スペースがないか疑え。
(全角スペースはシフトJISで\x81\x40)
0060nobodyさん03/02/10 22:57ID:0mJjU+k6
自分のWebフォルダに無いPerlプログラムを別のところから利用するには
どうしたらいいですか?
色々試してみたんですがやりかたがわかりません
例えば↓のチャットを、自分独自の
自動更新チャットに作りかえるにはどうしたらいいですか?
http://www.tcup6.com/cgi-localbin/chat8.cgi

(別のところからログファイルだけ更新できるようなイメージ)
0061↓新語03/02/10 22:59ID:???
”Webフォルダ”
0062nobodyさん03/02/10 23:04ID:???
彼方此方カキコするのはヤメレ
0063nobodyさん03/02/10 23:09ID:???
Webフォルダってのはアレですか?
自分のパソコンの中に作った「Web」っていう名前のフォルダですか?
0064nobodyさん03/02/10 23:15ID:???
わかんなければ、ぐぐる、これキホン(・∀・)!!
http://www.google.co.jp/search?q=+Web%83t%83H%83%8B%83_&ie=Shift_JIS&hl=ja&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0065nobodyさん03/02/10 23:31ID:???
>>64
なるほど。勉強になった。サンクスコ


Perlと何の関係が……
0066nobodyさん03/02/10 23:58ID:???
>>64
トップのページ
http://www16.u-page.so-net.ne.jp/xb4/katsumi/os/windows/webdav/
閲覧するとポートをガンガン叩いてくるんですけど…。
0067 03/02/11 04:31ID:???
0068nobodyさん03/02/11 12:23ID:1RQcCB3w
クッキーについて質問です。
掲示板を作っていて、
名前とメール部分のクッキーの設定は上手く行ったんですけど、
URL欄のクッキー情報が上手く保存されません。
調べてみたら、http:のコロンが原因だとかなんとか・・・?

どう対処したら良いのか教えて下さい。。
0069nobodyさん03/02/11 12:33ID:???
適当にエンコードしてみる。
0070nobodyさん03/02/11 12:48ID:???
>>68
http://www.2ch.netクッキーに
とクッキーに保存するんじゃなくて
www.2ch.net/
とクッキーに保存する
0071nobodyさん03/02/11 12:58ID:???
www.2ch.net/hoge::hoge.html
0072nobodyさん03/02/11 13:25ID:???
ぜんぜんperlと関係ないし。
0073nobodyさん03/02/11 13:37ID:???
テキストファイルに
-------------
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
-------------
とあったとして、真ん中の行のみ書き換えるにはどうしたらいいんでしょう?
私のIQでは思いつきません
0074nobodyさん03/02/11 14:21ID:???
IQのことを考えるからできないのです。

こころの眼でみるのです。
0075行頭じゃなくてもソートできるの?03/02/11 15:22ID:QuXhKMT3
ふりがな,名前,郵便番号,住所

の列からなるCSVファイルを読み込んで
2番目以降の列(例えば名前の列)でSortしなおすことはできますか?
もしかして順番変えたテンポラリファイルを作らないとダメですか?
0076nobodyさん03/02/11 15:27ID:mp4tOM/v
cgiなどのファイルの記述で自分で初期設定する変数を
$set{top_path} = '../';
のように%setのハッシュにしてるのですが
こういうのって格好悪いですか?
0077 ◆hMJAPH9PWA 03/02/11 16:25ID:???
>>73
一度全て読み込み、書き換えてから書き戻すしかないね。

>>75
テンポラリファイルなんて使わなくてもできるよ。
データが巨大ならデータベースを使った方がいいと思うけどね。

>>76
格好はどうでもいいけど、
要素名のタイプミスをするとすぐ発見できないのが面倒かもね。
あと、若干だけど効率も悪いかな。
0078nobodyさん03/02/11 17:04ID:???
>>75
名前の列でソートするならこんな感じ。
データが多いとちょっと重いかもしれないが。
@hoge = sort { (split(/,/, $a))[1] cmp (split(/,/, $b))[1] } @hoge;

>>76
自分は最近それと似た方法で定数を記述してる。

my %const = {
  HOGE => '../',
  HUGA => 100
};

こんな感じで。
まあ、確かに効率は悪いけど、見た目がきれいだし、定数だというのが
はっきり分かるから。
0079nobodyさん03/02/11 18:28ID:???
>>78
どのバージョンにもつかえるわけないけど、
use constant {
HOGE => ’../’,
HUGA => 100,
};

とか書くのが美しくて速いと思う(インライン化されるから)
0080nobodyたん03/02/11 18:37ID:???
{} ではなくて ()
0081nobodyさん03/02/11 18:43ID:???
>>79
use constant は便利なんだけど、文字列の中では展開されないよね。
これさえなければもっと積極的に使いたいのだけど。
0082nobodyさん03/02/11 19:01ID:???
ファイルを読み書きするときのflockに関する記述として以下は正しいでしょうか?
open(OUT, "+<aaa.txt");
flock(OUT, 2);
print OUT "略";
close(OUT);
0083nobodyさん03/02/11 19:39ID:???
seekでファイルの末尾に移動してから書き込む。
00847503/02/11 20:10ID:???
>>78
激サンクス
0085nobodyさん03/02/11 21:39ID:???
>>81
use constant PI => 4 * atan2 (1, 1);
print "The value of PI is @{[ PI ]}.\n";
0086nobodyさん03/02/11 21:53ID:???
>>85
おお、そんな使い方ができたなんて初めて知ったYO!
今までconstantはコンパイル時に展開されるもんだと思い込んでた。
こんどから積極的に使ってみます。マリガトー
0087nobodyたん03/02/12 00:00ID:???
ちなみに、
use constant NOBODY => 774;
は
sub NOBODY { 774 }
ってするのと同じ。(constant.pm 参照)

0088nobodyさん03/02/12 00:34ID:9lI7mE1F
質問です。
$a = "aaaaaabababanfjfggkrwaafrwnlwa";
例えば$aの中に「a」と言う文字が何回現れるか数えられる関数はありますか?
0089nobodyさん03/02/12 00:37ID:???
>>88
それくらい自分でつくれば?
0090nobodyさん03/02/12 00:48ID:???
$count = $str =~ tr/a//;
009188 自己解決03/02/12 00:49ID:???
>>89
その回答からすると関数は無さそうですね。
0092nobodyさん03/02/12 01:05ID:???
>>85
print "The value of PI is ${\PI}.\n";
これじゃだめ?
0093nobodyさん03/02/12 03:08ID:???
>>92
いいらしいよ
0094nobodyさん03/02/12 06:41ID:???
>>86
print "The value of PI is @{[ PI ]}.\n";はconstant.pmの
中に書いてあるのをコピペしただけ。まあ、ドキュメントを
読みましょ!って事ッス。何故そうなるか?はperlrefを
見ましょ。これも、constant.pmの中に書いてある(藁
>>92 はその応用形ってことっしょ。
0095nobodyさん03/02/12 14:43ID:???
echo や print で生成したフォームからは値を受け取ることは出来ないですか?
0096nobodyさん03/02/12 14:46ID:???
すまん perlじゃなかった
0097nobodyさん03/02/12 18:49ID:60fo1D0F
($a,$b,$c) = (0,2,0) だとそれぞれの変数に代入できるのに
@{[($a,$b,$c)]}[0..2] = @{[(0,3,0)]}[0..2] だと無理なのはなぜですか?
↓みたいな感じです。

DB<10> ($a,$b,$c) = (0,2,0)

DB<11> print "($a,$b,$c)"
(0,2,0)
DB<12> @{[($a,$b,$c)]}[0..2] = @{[(0,3,0)]}[0..2]

DB<13> print "($a,$b,$c)"
(0,2,0)
DB<14> print @{[(0,3,0)]}[0..2]
030
DB<15> print @{[($a,$b,$c)]}[0..2]
020

0098nobodyさん03/02/12 20:29ID:???
($a,$b,$c) = (1,2,3);
print (@{[($a,$b,$c)]}[0..2] = @{[7,8,9]}[0..2]),"\n";
0099 ◆hMJAPH9PWA 03/02/12 21:33ID:???
>>97
[]演算子は引数のコピーによる配列リファレンスを作るからだよ。
つまり
@{[ $a, $b, $c ]} = (...)
は
my @tmp = ($a, $b, $c);
@tmp = (...);
と同じことになる。
01009203/02/12 21:34ID:???
>>93-94
ありがとん。perlrefに
>Here's a trick for interpolating a subroutine call into a string:
> print "My sub returned @{[mysub(1,2,3)]} that time.\n";
を見つけました。
constant.pmのコードからすると、>>87さんの言うと通りなので、
配列にするのが礼儀正しい方法みたいですね。
0101nobodyさん03/02/13 02:39ID:???
@{[]}は実行効率悪いよ
普通に、
print "My sub returned" . mysub(1,2,3) . "that time.\n";
の方がいいと思う
■ このスレッドは過去ログ倉庫に格納されています