[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/25 20:07 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlコーディング初心者質問スレ Part 56



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/

143 名前:nobodyさん mailto:sage [2007/09/28(金) 01:00:34 ID:???]
変数をたくさん使いたいなら代わりにハッシュ使えば一つで済むじゃん

144 名前:nobodyさん mailto:sage [2007/09/28(金) 01:01:15 ID:???]
なんだか意味が良くわからないけどハッシュにいれればいいじゃない
キー名を考えるのは同じだけど

145 名前:nobodyさん mailto:sage [2007/09/28(金) 03:02:00 ID:???]
>>140
なんか、その変数名だと単に配列と二次元配列の初期化だけですむ気がすんだけど?
my ( @s, @r ) ;
# @s は、オマエさんの ( $s1, $s2, ..... ) を入れる配列
# @r は、オマエさんの ( [@r1], [@r2], .... ) を入れる配列

本当に別々の変数名が必要なのか?
本当に必要ならば上の人たちが言ってる通りハッシュorハッシュリファレンス
使え。

146 名前:nobodyさん mailto:sage [2007/09/28(金) 03:04:18 ID:???]
for (1..20) { eval "my(\$s$_ , \@r$_)" }

147 名前:140 mailto:非公開 [2007/09/28(金) 06:42:10 ID:???]
>>143-145
ごもっともなんですけど、リファレンスにするとコードが汚くなるんですよね。
いちいちデリファレンスしながらのコードは読みにくいし。
ハッシュも同じです。単なるスカラーと配列変数以上に読みやすいものはないかと。

>>146
それってforブロックの中でローカル化されてませんか?
evalするとローカル化されないとか?

148 名前:nobodyさん mailto:sage [2007/09/28(金) 06:53:34 ID:???]
>>147
そのevalに突っ込み入れられる実力があれば、
キミの望んだことは実現出来るよな?

まあ、自分の考えに固執しないで、他の人が普通に「hash使え」って
言ってる意味を考えた方が良いと思うけど。
=> perlでは143-145が普通の感覚だし、たかだか変数の
 宣誓にevalなんぞ使ってたら「変態さんがいるわ&hearts」
 と言われること受けあいだ。
そもそもそんなに個別の変数が必要か否かを考え直したほうがいい
んじゃね?

149 名前:nobodyさん mailto:sage [2007/09/28(金) 08:03:45 ID:???]
> 書道3段とか簿記3級みたいに客観的にPerlにおけるプログラミング力を第3者に示すもの。

書道の段位なんて流派ごとに異なるので、客観性があることにできないんと思うよ。
日商簿記2級くらいまでなら試験対策する時間さえあれば能力関係なしにとれるから
持ってたからといってだから何?レベルだよね。


150 名前:nobodyさん mailto:sage [2007/09/28(金) 08:31:35 ID:???]
ttp://d.hatena.ne.jp/naoya/20050809/1123563794
脳内では、コレが参考になるかもしらんが、
○自己判断のレベルが客観的判断のレベルと一致しない。
○レベル7と8との間にとても深くて暗い河がある。

プログラミングの技量の判断として有名なのはFizzBuzz問題
だが、有名になりすぎて知ってて当たり前。


151 名前:nobodyさん mailto:sage [2007/09/28(金) 12:19:13 ID:???]
Lv8かなぁ?Lv9にはなってない気がする。



152 名前:nobodyさん mailto:sage [2007/09/28(金) 14:28:43 ID:???]
>>150
ほんと、7と8の間の河が深すぎる。7.5がほしい。
俺はたぶん6か7だけど。

153 名前:nobodyさん mailto:sage [2007/09/28(金) 15:13:33 ID:???]
use strictってどういう効果有るの?ググってもよく分からないや

とか思ってる他人のソース弄って何とかしている人がここに一人。

154 名前:nobodyさん mailto:sage [2007/09/28(金) 15:43:49 ID:???]
strictやwarningsは融通が利かなくなるので嫌いでちゅわ

155 名前:nobodyさん mailto:sage [2007/09/28(金) 15:58:21 ID:???]
いいね、初心者スレらしい。

156 名前:nobodyさん mailto:sage [2007/09/28(金) 16:22:17 ID:???]
strictや-wを使って粋がってる自称玄人は笑えるww

157 名前:nobodyさん mailto:sage [2007/09/28(金) 16:32:49 ID:???]
無理にstrictやwarings使って本末転倒になってる馬鹿はよく見る

158 名前:nobodyさん mailto:sage [2007/09/28(金) 17:27:09 ID:???]
普段から常に使ってるがどういう場面で本末転倒になるんだろう

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)なん?
それがいまいちわからんぽ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef