- 1 名前:nobodyさん mailto:sage [2007/09/16(日) 19:49:43 ID:???]
- Perlのコーディングで困ってる人のスレです。
【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >2 以降 前スレ ttp://pc11.2ch.net/test/read.cgi/php/1180492441/ 過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
- 159 名前:nobodyさん mailto:sage [2007/09/28(金) 17:36:03 ID:???]
- その昔はグローバル変数をサブルーチンでいじり倒すようなコードがあったけど
スコープ区切って引数と戻り値のやりとりするほうが100万倍読みやすいよ
- 160 名前:140 mailto:非公開 [2007/09/28(金) 18:12:42 ID:???]
- >>148
>そのevalに突っ込み入れられる実力があれば、 >キミの望んだことは実現出来るよな? すいません。もう少し普通の会話がしたいです。 >そもそもそんなに個別の変数が必要か否かを考え直したほうがいい んじゃね? このよくある「答は一つ、綺麗でスマート」っていうのはどうにも好かない。
- 161 名前:nobodyさん mailto:sage [2007/09/28(金) 20:40:06 ID:???]
- >>160
じゃおまえの好きなようにすれば?
- 162 名前:nobodyさん mailto:sage [2007/09/28(金) 21:25:32 ID:???]
- >>140
「Perlはあなたが自分の首を締めるのに十分なロープを 提供しているのだ」てな忠告がラクダ本に載ってたな。 #--- Filter/Range.pm --- package Filter::Range; use strict; use Filter::Simple sub { s{ my \s* \( \s* ([\$\@%][A-Z_a-z][0-9A-Z_a-z]*?) ([0-9]+) \.\. ([0-9]+) \s* \) } { 'my(' . join(',', map "$1$_", $2 .. $3) . ')' }egx; }; 1; __END__ #!/usr/local/bin/perl -w use strict; use Filter::Range; my($s1..20) = (1..20); print $s10; __END__
- 163 名前:nobodyさん mailto:sage [2007/09/28(金) 21:41:10 ID:???]
- Damian Conway ぷろだくとか。
- 164 名前:nobodyさん [2007/09/28(金) 22:27:42 ID:3wKaaJqT]
- サブルーチンを10個くらい作ってあります。
同じディレクトリに5個くらい違うCGIファイルがあります。 5個のCGIファイル全てに、冒頭の10個のサブルーチンをコピペしてあります。 print routin(1,2); 5個のCGIふぁいるではこういう記述でサブルーチンが使えます。 どうもこれを外部ライブラリ化とかいうのすると print パッケージ名::routin(1,2); で使えるようになるとか。 でもパッケージ名を入れるとなると5個のCGIファイル全てを書き直すのが嫌です。 またパッケージ名が入って見た目がウザくなるのも嫌です。 外部ライブラリにしながらも、メインパッケージにあるのと同じごとくサブルーチンを使うにはどうすればいいでしょうか? メインパッケージに初めに全部もらえばいけるんじゃないかとか妄想していますが。
- 165 名前:nobodyさん mailto:sage [2007/09/28(金) 22:30:18 ID:???]
- >>164
>>19読んで応用しろ。キーワードはexporter
- 166 名前:nobodyさん [2007/09/28(金) 22:45:38 ID:3wKaaJqT]
- orz
- 167 名前:nobodyさん mailto:sage [2007/09/28(金) 23:42:41 ID:???]
- べつにExporterなんかいらないだろ
全部plファイルにしてrequireでつなげろ
- 168 名前:nobodyさん mailto:sage [2007/09/28(金) 23:57:57 ID:???]
- おれだったらOOPが楽かな
- 169 名前:nobodyさん mailto:sage [2007/09/29(土) 00:02:00 ID:???]
- >>167
すげえまじで感動したw つか、require '....pl' ってperl4時代のモンだと思って使ってもなかったよ。 これからも使わんけどw もちろんstorableとか使用するときには必須>require
- 170 名前:nobodyさん mailto:sage [2007/09/29(土) 00:04:52 ID:???]
- があ、Data::Dumper の読み込み時だ。require 使うのorz...
- 171 名前:nobodyさん [2007/09/29(土) 00:51:07 ID:2KPMiuug]
- >>167
え? 明日試してみます。
- 172 名前:nobodyさん mailto:sage [2007/09/29(土) 02:58:11 ID:???]
- みんなrequire つかわないのかw
おらぁ使いまくりだ メインCGI一個に 汎用サブルーチンplに処理ブロックごとにpl分割 これが楽でいい。
- 173 名前:164 [2007/09/29(土) 06:51:46 ID:2KPMiuug]
- >>167
できないんですけど・・・・ s.plのpackage s;にサブルーチンを移しました。 で、 print check(1,2,3,4,5); でエラーでました。メインパッケージにそんな関数ないと。 もちろん print s::check(1,2,3,4,5); なら動作します。 どういうことですか? ウソ付きましたか?
- 174 名前:nobodyさん mailto:sage [2007/09/29(土) 07:14:33 ID:???]
- 3時間の出来事をシミュレーションするプログラムを書いています。
一応完成したのですが、時間の捉え方が「残り時間」というものになっています。 これを例えば、9時〜12時の間とかで捉えたいのです。 今は内部の処理が進むにつれて「残り時間」の変数を減算して、「残り時間」変数が0になったら処理おしまいというものです。 これを開始時刻と終了時刻を初めに決めて、+10秒とか命令出しながら実際に時間が進んでるかのような感じに 「今何時?」と聞けるくらいの感じに変えてみたいのです。 使えそうなモジュールがあったら教えてください。
- 175 名前:nobodyさん mailto:sage [2007/09/29(土) 07:57:19 ID:???]
- >>173
>package s; に移しました。 何故移す?
- 176 名前:nobodyさん mailto:sage [2007/09/29(土) 12:27:00 ID:???]
- 変数名を参照することって出来ますか?
$test = 'abc'; という変数があるとして、$testの'test'の部分を知りたいのです。 例えば、@a = ($test, $boo, $hoge); という配列があるとして、 これを それぞれ変数名 => 値 というハッシュに変換したいのです。 $h{'test'} => 'abc' のように。
- 177 名前:nobodyさん mailto:sage [2007/09/29(土) 13:07:39 ID:???]
- >>176
> @a = ($test, $boo, $hoge); この時点で $a[0] には $test が持つ値 'abc' そのものがコピーされて入る。 よって代入後に @a 内の各値からコピー元の変数名を辿る事はできない。
- 178 名前:nobodyさん [2007/09/29(土) 21:46:18 ID:m5gmrcyE]
- 文字コードをUTF-8に変換したいのですが
use Jcode; $str = "あああ"; print Jcode->new($str)->utf8; とすると Undefined subroutine &Jcode::_Classic::euc_utf8 called at パス/Jcode/_Classic.pm line 255. というエラーが発生してしまいます。 ちょっと調べたらJcodeのバージョンを下げれとありましたがそれは無理なので何か他に方法はないでしょうか。
- 179 名前:nobodyさん mailto:sage [2007/09/30(日) 02:32:26 ID:???]
- 未だにJcodeが使われるのは子飼弾がちゃんとEncodeの使い方を解説しないからなのか・・・
- 180 名前:nobodyさん mailto:sage [2007/09/30(日) 04:35:03 ID:???]
- >>178
使っているPerlのバージョンは? Jcodeはどのようにインストールしたもの? >>179 Web関連のムックで書いてなかったか? >Enocdeの使い方
- 181 名前:164 [2007/09/30(日) 08:09:20 ID:9pVP3h63]
- >>175
そりゃ中身なにもないものをrequireしてもしょうがないからですよ。 一体何が間違ってるというんですか? メインパッケージにないものをrequireを使えば routin(1,2,3); で呼べるというのは本当なんですか?ウソなんですか?
- 182 名前:nobodyさん mailto:sage [2007/09/30(日) 08:18:04 ID:???]
- ほらね、strictとwarningsを無理に使うと本末転倒になるでしょ。
- 183 名前:nobodyさん mailto:sage [2007/09/30(日) 08:34:17 ID:???]
- >>181
誰もウソなんかついちゃいない。 お前が全然理解できてないだけ。
- 184 名前:164 [2007/09/30(日) 08:40:27 ID:9pVP3h63]
- >>183
だから何をどうしろというんですか? 最小コードを教えてください。
- 185 名前:nobodyさん mailto:sage [2007/09/30(日) 08:49:27 ID:???]
- >>182
181の事を示して言ってるならwarningsもstrictも無関係にエラー出るぞ。 176はそう言う次元のお話しではないし、 178は、my宣言してないからwarningsとか宣言してないと見るが? 別にstrict,warningsを嫌うのは勝手だけど、事象は切り分けてくれ。 ここは初心者スレで勝手に脳内変換して>>182を信じてしまう人が いる可能性もあるんだから。
- 186 名前:nobodyさん mailto:sage [2007/09/30(日) 08:59:25 ID:???]
- >>184
うざいなあ、ここで文句垂れてる間にググればとっくに exporter の使い方も 習得出来てるだろうに % cat foo.pl sub foo{ 1 ; } 1; % perl -le 'require q{foo.pl} ; print foo()' 1
- 187 名前:nobodyさん mailto:sage [2007/09/30(日) 09:40:39 ID:???]
- >>185
ああごめん。mod_perlと混同して勘違いしてた。 Perlが初めての方なら尚更strict/warningsは ややこしくなるから不必要だと思うけど。
- 188 名前:164 [2007/09/30(日) 10:10:19 ID:9pVP3h63]
- >>186
突っ込みが下手すぎ。 package使うなって言って欲しかった。
- 189 名前:nobodyさん mailto:sage [2007/09/30(日) 10:12:50 ID:???]
- >>188
くだらない質問でもど偉そうに聞いていいスレ pc11.2ch.net/test/read.cgi/php/1158647441/
- 190 名前:164 [2007/09/30(日) 11:09:19 ID:9pVP3h63]
- もしもお前に部下がいるなら可哀想だ。
まだ使う側でないというなら、今のうちに間違いを指摘してきた相手が目下だと反省のできない上司にならないよう気をつけておけ。
- 191 名前:nobodyさん mailto:sage [2007/09/30(日) 12:11:48 ID:???]
- >>188
「最小コードを書け」 って言われたから書いたまでだが? >>175で package に関する点は指摘されてるだろ >>187 mod_perl の mod の字も出てないのに…
- 192 名前:nobodyさん mailto:sage [2007/09/30(日) 12:51:11 ID:???]
- 自分の読解力、理解力の無さを棚に
上げて回答者を批判する男の人って…
- 193 名前:164 [2007/09/30(日) 14:35:18 ID:9pVP3h63]
- >>191
>>175のどこがpackageに関する点の指摘なのよ。 あれじゃサブルーチンを別ファイルに移した事の指摘だろ。 >>192 女ならいいのか?クソフェミニストめ。
- 194 名前:nobodyさん mailto:sage [2007/09/30(日) 15:37:17 ID:???]
- 質問してもよろしいでしょうか?
すみませんが宜しくお願いいたします。 特定の契機を迎えたとき? @_や$_には値が自動でセットされるようになっていますよね? その契機の一覧みたいなものが知りたいのですが、膨大ですか? うまくまとめてるサイトあれば教えてください。
- 195 名前:nobodyさん mailto:sage [2007/09/30(日) 15:38:11 ID:???]
- やはり読解力の欠片も無いな
- 196 名前:nobodyさん mailto:sage [2007/09/30(日) 15:44:41 ID:???]
- >>194
search.cpan.org/~nwclark/perl-5.8.8/pod/perlvar.pod perldoc.jp/docs/perl/5.6.1/perlvar.pod ラクダ本
- 197 名前:nobodyさん mailto:sage [2007/09/30(日) 16:14:26 ID:???]
- >>179
5.005とか5.6と互換を取るのに便利だったりする。 (5.005は古いバージョン使ってたり、変換規則が違ったりするけど。) それはともかく、チュートリアルをpodで欲しいとか思うよね。 unicodeのチュートリアルとか、あっちこっちにドキュメントが散らばってて、 しかも、翻訳も無かったりして、初心者にはきついと思う。
- 198 名前:nobodyさん mailto:sage [2007/09/30(日) 23:01:50 ID:???]
- コーディングではないけれどPerl関連(Windows関連?)ということでお願いします。
PerlのパスをUNIX風に設定しておくことってできますか?(usr/bin/perl) 今は5.8なんですが、前に5.6の頃、実際のパスがc:\perlだとしても この書き方(パス)で動いてた気がするんだけど・・・
- 199 名前:nobodyさん mailto:sage [2007/10/01(月) 00:24:00 ID:???]
- 5.8でも動く件
- 200 名前:198 mailto:sage [2007/10/01(月) 01:04:55 ID:???]
- >>199
すんません、ブラウザでCGIとして起動した場合はどうですか? 関連に気づかなくて書かなかったんですが、 こちらでもプロンプトでは動くんだけど、ブラウザではアウトです。
- 201 名前:nobodyさん mailto:sage [2007/10/01(月) 01:27:53 ID:???]
- 普通にpath通せばいいんじゃね?
- 202 名前:nobodyさん mailto:sage [2007/10/01(月) 02:12:06 ID:???]
- それはPerlじゃなく各々のhttpdの管轄
なので他の適切なスレを当たって下さい
- 203 名前:198 mailto:sage [2007/10/01(月) 02:14:31 ID:???]
- >>201
ありトゥース!・・・が、しかし。。 恥をしのんでお尋ねしますが、パス通すって・・? Windowsの環境変数にusr/bin/perlを追記するってことではないですよね。 い、いかように・・・
- 204 名前:nobodyさん mailto:sage [2007/10/01(月) 07:19:52 ID:???]
- 関連付けでおk。
- 205 名前:nobodyさん [2007/10/01(月) 09:49:39 ID:4GodVsb7]
- >>180
レス遅くなってすみません。 JcodeやめてEnocdeで対応させました。 perlのバージョンは5.8、Jcodeは最初サーバーには入っていなかったので 自前で自分のディレクトリにインストールして使ってました。 それで問題なかったのですが最近サーバの方が用意してくれたらしく そっちを読み込むようになってました。 そのサーバにインストールされた新しいJcodeで問題が発生していたと言う次第でした。 しかし新しいJcodeはなんであんなとんでもないバグを持ってるんだろうか。 UTF-8変換できなきゃJCodeの存在意義が無くなるのに。
- 206 名前:nobodyさん mailto:sage [2007/10/01(月) 10:32:27 ID:???]
- >>203
環境変数にperl.exeのパスを通せばいい。 もしくは出来るならhttpdの方で指定するとか。
- 207 名前:nobodyさん mailto:sage [2007/10/02(火) 00:21:38 ID:???]
- >>203
かなり無理やりな解決方法。 C:\直下にusrを作って、そこへC:\Perl\bin\(Enter連打でinstした場合)をフォルダごとコピー。 でC:\Perl\lib\とC:\Perl\site\もフォルダごとコピー。 これでC:\usr\直下に、binとlibとsiteができる。 それでcgiファイルの頭に #!/usr/bin/perlでOK。 でも、ppmや、自前でモジュールインストールする度に、本来のC:\Perl\以下よりlibやsiteをコピー しなければならないし、UpgradeやUninstallの時も当然ながら消してはくれません。 普通の人にはお勧めできない。 実を言うと、C:\直下にusrやtmpやvarなんかを作ってると、perlスクリプトの中からフルパスで /var/tmp/〜とかやってファイル操作したりするのに、Unix環境といちいち書き換えなくて済むっちゅう 横着ができたりします。
- 208 名前:nobodyさん mailto:sage [2007/10/02(火) 00:40:37 ID:???]
- activeperlで>207の方法をやるなら、perldoc reloc_perlを見ると幸せになれるかもしれない。
- 209 名前:nobodyさん mailto:sage [2007/10/02(火) 01:54:23 ID:???]
- 質問です。
LWP::UserAgentとCrypt::SSLeayを利用して、SSLでサーバと通信を行っています。 相手先の証明書が、期限切れなど信頼できない場合は、以降の処理を打ち切りたいのですが、 それを判別するにはどうすればよいですか?
- 210 名前:nobodyさん mailto:sage [2007/10/02(火) 02:05:01 ID:???]
- LWP::Protocol::httpsにヒントがあるかもね
- 211 名前:180 mailto:sage [2007/10/02(火) 02:34:16 ID:???]
- >>205
ん、別に少し間が開いたくらいは気にせんからいいよ。 ただ、サーバー管理者が入れたのがおかしいってのは変だね。 症状からすると、(わざわざ)pure perl のコードを選択したときのバグっぽいけど これって fix されたんじゃなかったっけか? それにPerl本体が 5.8なら Encodeを利用する形でJcodeは入るはずだしなあ。
- 212 名前:nobodyさん [2007/10/02(火) 06:25:36 ID:SbhRpQr+]
- レン鯖に特定のモジュールがインスコされてるかどうか
テストするのに良い方法はないでしょうか?
- 213 名前:nobodyさん mailto:sage [2007/10/02(火) 07:23:13 ID:???]
- @INCを総当たり
- 214 名前:nobodyさん mailto:sage [2007/10/02(火) 08:34:43 ID:???]
- >>211
原因を特定できないのなら黙っておけ。
- 215 名前:nobodyさん mailto:sage [2007/10/02(火) 09:25:29 ID:???]
- >>212
実際に use して調べるのが一番確実。 #!/usr/bin/perl -w use strict qw(subs vars); my $token = qr/[A-Z_a-z][0-9A-Z_a-z]*/; my $module = ($ARGV[0] || '') =~ /^($token(?:::$token)*)\z/ ? $1 : ''; my $result = $module ? eval "use $module" : 'usage: .../this.cgi?Module::Name'; $result ||= $@ || qq/$module ${"${module}::VERSION"}/; print "Content-Type: text/plain\n\n$result"; __END__
- 216 名前:nobodyさん mailto:sage [2007/10/02(火) 09:39:01 ID:???]
- もう少し可読性を高める努力をしろよ。
- 217 名前:nobodyさん mailto:sage [2007/10/02(火) 10:20:20 ID:???]
- >>207
インストールしなおしでその構成になるようにしたほうがいいんじゃ・・・
- 218 名前:nobodyさん mailto:sage [2007/10/02(火) 17:33:08 ID:???]
- $^Oが取り得る値のリストってどこかにない?
- 219 名前:nobodyさん mailto:sage [2007/10/02(火) 19:19:35 ID:???]
- >>218
search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#PLATFORMS
- 220 名前:nobodyさん mailto:sage [2007/10/02(火) 20:12:26 ID:???]
- >>215
コードまで書いていただいてありがとうございました。 use <モジュール名> をevalして戻り値を確かめるわけですね。 どうもevalは使うのに躊躇してしまうんですが、こういうときは便利ですね。 >>213 @INCの中を覗くという発想も考えたことがなかったので やってみたいと思います。
- 221 名前:nobodyさん [2007/10/02(火) 21:03:46 ID:2QBdgnfp]
- 日本語変換の問題について質問です。
コードをEUCで書いて、出力をShift_JISで行うのが目的です。 今はjcode.pl使っています。 activeperlのwinxp用でローカルチェックをしています。 JCODEというモジュールもあるそうですが、activeperlには初期状態でなかったりしますよね。 確か自分は入れた覚えもあるのですが。 オススメは何ですか? 確か他にも変換用のモジュール?はあったと思いますが。 euc,shift_jis,jisの3つだけでのオススメが知りたいです。
- 222 名前:nobodyさん mailto:sage [2007/10/02(火) 21:47:16 ID:???]
- >>221
万能解は無いので、Encode / Jcode / jcode.pl / Unicode::Japanese を 一通り使い込んでから、好みと用途に合ったものをお選びなさいな。
- 223 名前:nobodyさん mailto:sage [2007/10/02(火) 23:24:50 ID:???]
- いまさらjcode.pl薦めるなよ。
- 224 名前:221 [2007/10/02(火) 23:41:50 ID:2QBdgnfp]
- jcode.plを除いて一番汎用的に使えるのはどれですか?
汎用的って言っても、サーバーやローカル環境で一番広く使えるものです。 一番広まってるモジュールといえばいいのですかね。
- 225 名前:nobodyさん mailto:ge [2007/10/03(水) 00:23:34 ID:???]
- リストをリストのままリストの個数を得るにはどうすればいいですか?
(1,2,3,4,5) これを配列にいれずにってことです。 grepとかでもリストが作られますよね。 そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。 scalar(@{[grep{$_>0}]}) っていうのも同じくなんかなぁと思います。 普通にないなら関数作ろうと思うのですが。
- 226 名前:nobodyさん mailto:sage [2007/10/03(水) 00:41:53 ID:???]
- scalar(@{[1,2,3,4,5]})
- 227 名前:nobodyさん mailto:sage [2007/10/03(水) 00:41:53 ID:???]
- はあ
- 228 名前:nobodyさん mailto:sage [2007/10/03(水) 01:16:44 ID:???]
- システムに依存する組み込み関数が使用できるかどうか
手っ取り早く調べる方法ってなにかな?
- 229 名前:nobodyさん mailto:sage [2007/10/03(水) 01:49:55 ID:???]
- >>224
インスコしてなかったら自分で読み込むようにすればいいよ。 use libつかうなり同階層に置いてuseするなり。
- 230 名前:nobodyさん mailto:sage [2007/10/03(水) 01:58:30 ID:???]
- >>224
Perl 5.8.x なら標準モジュールの Encode が一番広まっていると言えば 広まっている。 >>225 リストコンストラクタが幾つの要素を吐くかは、吐かせてみないと 分からない。吐かせた結果を保存しないのなら、目の前を流れていく 個数を数えるしかない。 sub count { scalar @_ } $num = count((1) x rand 10); $num = scalar @{[ (1) x rand 10 ]}; $num = 0; ++$num for (1) x rand 10; >>228 search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#FUNCTION_IMPLEMENTATIONS に目を通した上で eval 内で実際に使用して確認。
- 231 名前:225 [2007/10/04(木) 00:46:59 ID:kUiVRXqk]
- >>230
黒魔術みたいなコードはいけないってこのスレで教えてもらいました。 素人ながら納得しました。 ですからあなたもそういうコード書いていてはいけないと思います。 それも教える側でそれを使うと黒魔術が流行ってしまいます。 僕にはあなたのコードが何をしてるのかわかりません。
- 232 名前:nobodyさん mailto:sage [2007/10/04(木) 00:52:08 ID:???]
- ++$num for (1) x rand 10;
こんな書き方はじめてみたw 7行プログラミングとかに出てきそうだな。 だれか解説というか一般的な形にしてクレクレ
- 233 名前:nobodyさん mailto:sage [2007/10/04(木) 00:57:28 ID:???]
- foreach((1) x rand(10)){
++$num; }
- 234 名前:nobodyさん mailto:sage [2007/10/04(木) 02:06:39 ID:???]
- こんなの全然黒魔術じゃないと思うが・・・
- 235 名前:nobodyさん mailto:sage [2007/10/04(木) 03:26:46 ID:???]
- 中身が1行のfor(もしくはforeach)なんて普通こう書かんか?
↑もう何年もforeachなんて書かずにforで済ませてるからスペル調べちまったw
- 236 名前:nobodyさん mailto:sage [2007/10/04(木) 03:33:49 ID:???]
- それは分かりづらい。括弧でくくった方がいいな。
++$num for ((1) x rand 10);
- 237 名前:nobodyさん mailto:sage [2007/10/04(木) 06:44:51 ID:???]
- これだからPerlのコードは気持ち悪いんだよな
- 238 名前:225 [2007/10/04(木) 07:08:27 ID:kUiVRXqk]
- ((1) x rand(10))
これの意味がわかりません。 1*10とどう違うんですか。 それとforに10とか与える意味も。 0..10ならわかるけど。
- 239 名前:nobodyさん mailto:sage [2007/10/04(木) 08:10:41 ID:???]
- このスレは精神障害者ばかりですね。
- 240 名前:nobodyさん mailto:sage [2007/10/04(木) 08:14:34 ID:???]
- >>231
その程度の実力で関数を自作するってかw
- 241 名前:nobodyさん mailto:sage [2007/10/04(木) 09:03:58 ID:???]
- >>238
ひょっとして >吐かせた結果を保存しないのなら、目の前を流れていく >個数を数えるしかない。 の意味がわかってないのか? お前が一定の個数で決め打ちしたいなら最初からそうすればいいだけ。
- 242 名前:nobodyさん mailto:sage [2007/10/04(木) 09:42:16 ID:???]
- >> grepとかでもリストが作られますよね。
>> そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。 grepに限って言えばスカラーコンテキストでは条件が真になる要素数を返すわけだが。 % perl -e 'print scalar(grep { $_ > 0 } 0,1,1,0,1)' 3
- 243 名前:nobodyさん mailto:sage [2007/10/04(木) 09:43:48 ID:???]
- x 10ならわかるけどなんでrand(10)なん?
それがいまいちわからんぽ
- 244 名前:nobodyさん mailto:sage [2007/10/04(木) 10:10:16 ID:???]
- いつも10だと面白くないと思って乱数にしただけで特に意味はないだろう。
そんなこと気にしてるとハゲるぞ。
- 245 名前:nobodyさん mailto:sage [2007/10/04(木) 10:20:27 ID:???]
- >>238
perldoc.jp/docs/perl/5.8.8/perlop.pod 「Multiplicative Operators operator, multiplicative」の項 rand EXPR は 0 以上 EXPR 未満の値を返すので、整数値が欲しい際は 通常 int() を通す。但し perl が整数値を欲しがっている箇所に小数値が 与えられた場合は、自動で整数値に丸められる。 $str = substr('abcd', 0, rand 5); # '', 'a', 'ab', 'abc', 'abcd' $var = $array[ rand @array ]; # @array 中の要素からランダム選出 x 演算子の右辺は「個数」という整数値を要求しているので、(1) x rand 5 という式は (), (1), (1,1), (1,1,1), (1,1,1,1) のいずれかになる。 >>243 >>241 が指摘してくれているように、最初から個数が分かっているなら 「リストをリストのままリストの個数を得る」必要はなく、$num = 10; 等と書いておけば済む。(1) x rand 10 という式には「要素数が不定で」 「コピペですぐ動作確認できる」リストのサンプルという以上の意味は無い。
- 246 名前:nobodyさん mailto:sage [2007/10/04(木) 17:45:56 ID:???]
- これ何?
$|++;
- 247 名前:nobodyさん mailto:sage [2007/10/04(木) 18:42:58 ID:???]
- 出力バッファの自動フラッシュを抑制
- 248 名前:nobodyさん mailto:sage [2007/10/04(木) 18:43:28 ID:???]
- ハニーフラッシュ!
- 249 名前:nobodyさん mailto:sage [2007/10/04(木) 18:44:27 ID:???]
- 抑制じゃねえ間違えた まあいいや
- 250 名前:nobodyさん mailto:sage [2007/10/04(木) 19:48:49 ID:???]
- プログラミングPerlのパッケージ、オブジェクトの章を読んでも意味が
さっぱりわからなかったのですがどうすればいいですか? みなさんはあそこに書いてあること、あっさりわかりました?
- 251 名前:nobodyさん mailto:sage [2007/10/04(木) 20:48:51 ID:???]
- >>250
ラクダ本だけでは実感が掴みにくいような。 www.rfs.jp/sb/perl/ でも解説されてる。 同じ説明でもいろんな説明を見ると分かってくるような。
- 252 名前:nobodyさん mailto:sage [2007/10/04(木) 21:37:38 ID:???]
- >>250
fleur.hio.jp/perldoc/mix/pod/perlboot.html
- 253 名前:nobodyさん mailto:sage [2007/10/05(金) 09:42:06 ID:???]
- OOP 勉強したいなら Plagger に入門すればいいよ!
- 254 名前:nobodyさん mailto:sage [2007/10/05(金) 12:41:48 ID:???]
- >>251
これは本当に超初心者向けといった感じですね。 >>252 これはわかりやすい! >>253 こんな面白いものがあったんだ
- 255 名前:nobodyさん [2007/10/06(土) 12:48:34 ID:PfM+S4yJ]
- foreach(){}
↑フォーイーチみたいな発音でいいですよね・・・?
- 256 名前:255 [2007/10/06(土) 13:03:13 ID:PfM+S4yJ]
- 追加お願いします。
use strict; my %hash = qw/2 5 s 2 d 3/; print map{"$_ " , 1}keys %hash; >Execution of C:\test.pl aborted due to compilation errors. これ何がいけないんですか? print map{$_ ," ", 1}keys %hash; こう書き換えるとエラーになりません。 activeperl5.8.1のwinxp稼動です。
- 257 名前:255 [2007/10/06(土) 13:23:18 ID:PfM+S4yJ]
- ぐるせいや。ぐるせいや。
- 258 名前:nobodyさん mailto:sage [2007/10/06(土) 13:30:22 ID:???]
- >>256
perldoc map見れば分かる
- 259 名前:255 [2007/10/06(土) 15:01:35 ID:PfM+S4yJ]
- >>258
すいません。わからないです。 教えてください。
|

|