Perlについての質問箱 ..
75:デフォルトの名無しさん
08/01/18 13:17:22
>>74
なぜ動かないのかをつきとめて、そこを動くように修正すると良い。
76:デフォルトの名無しさん
08/01/18 14:32:22
ニコの仕様が変わったからじゃね?
使ったこと無いけどWWW::NicoVideoっつーのがCPANにあるから見てみれば
あとPlaggerにもぷらぎんあるかあr
77:デフォルトの名無しさん
08/01/18 15:33:05
いまいち頭の中でまとまってないけどuse strictを使い
cのヘッダファイルのように変数を一元管理するにはどうしたらいい?
例
##hoge.pl
use strict
$hoge = 'hoge';
print $hoge;
require 'piyo.pl';
print $hoge;
##piyo.pl
$hoge='piyo';
use strictコメントアウト時はhogepiyoだけど
Global symbol "$hoge" requires explicit package name at ./strict.pl line 3.
Global symbol "$hoge" requires explicit package name at ./strict.pl line 4.
Global symbol "$hoge" requires explicit package name at ./strict.pl line 6.
Execution of ./strict.pl aborted due to compilation errors.
と怒られるorz
78:デフォルトの名無しさん
08/01/18 15:43:02
@argv = ( 1 .. 5);
@argv[1] = ( 1 ..5);
なデータがあるんですけど、
@argv[1]のリストの数を調べたいときは、どうするんですかね?
$#argv[1]とすると、syntx errorになります。
79:デフォルトの名無しさん
08/01/18 16:05:46
それ以前の部分で理解が足りてないと思う
80:デフォルトの名無しさん
08/01/18 16:19:28
>>78
> @argv[1] = ( 1 ..5);
これはどういう意味だ?
($argv[1]) = (1 .. 5)
と等価か?
81:デフォルトの名無しさん
08/01/18 16:33:56
どういう意味も何も無いだろ・・・
82:デフォルトの名無しさん
08/01/18 17:26:00
配列の要素にリストを代入したい ←無理
配列を表すらしい@を付ければできるんじゃね?
つーところかと
83:デフォルトの名無しさん
08/01/18 17:46:32
ケチらずにリャマ本ぐらい読んでもよさそうなものだという気もするが。
84:デフォルトの名無しさん
08/01/18 18:36:29
配列の要素に、"a b"のようなスペースを挟んでいるものがあります。
これをスペースでsplitして2次元配列にしたいのですが、
そのようなことはできませんか?
85:デフォルトの名無しさん
08/01/18 18:41:25
できるよ
がんばれ
86:74
08/01/18 18:58:10
自己解決
Crypt::SSLeay入れたら動きました
87:デフォルトの名無しさん
08/01/18 19:24:02
if文使うときif($a eq "a" or $a eq "b")みたいに同じ変数の中身を判定する部分をまとめる(/a|b/)みたいにする方法ってあります?
88: ◆TWARamEjuA
08/01/18 20:10:12 BE:7841489-2BP(6825)
$a =~ m(^[ab]$)
89:デフォルトの名無しさん
08/01/18 20:11:10
>>87
あるけど、初心者はやるな。
90:デフォルトの名無しさん
08/01/18 20:18:43
>>87
if ($a =~ m/^(a|b)$/)
if (grep { $a eq $_ } qw(a b))
:
好きなように書け
91:デフォルトの名無しさん
08/01/18 20:21:36
確か[]より|のが速い
92:デフォルトの名無しさん
08/01/18 20:40:04
そんなはずがないだろうと思ってベンチ取ったが、やはりそんなはずはなかった。
use strict;
use Benchmark;
timethese(2000000, {
Alternation => sub{ my $x = "abcdefghijk"; my $y = $x =~ /(?:d|e|f)/ },
CharacterClass => sub{ my $x = "abcdefghijk"; my $y = $x =~ /[def]/ },
});
>> Benchmark: timing 2000000 iterations of Alternation, CharacterClass...
>> Alternation: 3 wallclock secs ( 2.45 usr + 0.00 sys = 2.45 CPU) @ 815328.17/s (n=2000000)
>> CharacterClass: 1 wallclock secs ( 1.41 usr + 0.00 sys = 1.41 CPU) @ 1422475.11/s (n=2000000)
93:デフォルトの名無しさん
08/01/18 22:58:31
>>77
相反する(しかも管理しづらそうな)ことをする理由は分からないけど、
エラーメッセージの通りパッケージ名を付けるだけで怒られないようにはできる
use strict;
$main::hoge = "hoge";
print $main::hoge;
94:デフォルトの名無しさん
08/01/19 06:20:50
>>93
相反するってのは例が悪かったって事で勘弁を。>>77の例でいうと$hogeはhoge.plでは変更しない。
#hoge.pl
use strict;
my($hoge);
$hoge='hoge';
require 'piyo.pl';
print $piyo;
#piyo.pl
$piyo='piyo'
でhoge.plを実行すると
Global symbol "$piyo" requires explicit package name と怒られる。
#piyo.pl
package piyo
を追加して
#hoge.pl
print $piyo::piyo;
とすれば怒られないけど hoge.pl内$piyoですます方法ないのかな?
95:77
08/01/19 14:49:54
77だが解決した。
#hoge.pl
use strict;
our($piyo);
require 'piyo.pl';
print $piyo;
#piyo.pl
$piyo='piyo'
96:デフォルトの名無しさん
08/01/20 00:08:53
11 12
13 14
15 16
のように、1行に2つのデータを持ったファイルがあります。
これを、
list[0][0] = 11;
list[0][1] = 12;
list[1][0] = 13;
list[1][1] = 14;
list[2][0] = 15;
list[2][1] = 16;
のように二次元配列にしたいのですが、どのようにすれば良いのでしょうか?
97:デフォルトの名無しさん
08/01/20 00:30:36
my @list;
push @list, [map int, split] while(<DATA>);
__DATA__
11 12
13 14
15 16
98:デフォルトの名無しさん
08/01/20 00:44:26
>>97
ありがとうございます。
コードを説明して頂けませんか?
99:デフォルトの名無しさん
08/01/20 01:06:20
↑
本を読まない。
ネットを検索しない。
誰かが教えてくれるのをじっと待っているだけ。
つねに受身の態勢。
100:デフォルトの名無しさん
08/01/20 01:09:23
本は持っていません。
ネットは検索しました。
回答を待っています。
受身の人間は質問しません。
101:デフォルトの名無しさん
08/01/20 01:15:34
多次元配列の操作についてなんですが、
@aと@bによる二次元の配列@xを作る際に、
for $i (0..$#a){
$x[0][$i] = $a[$i];
}
for $i (0..$#b){
$x[1][$i] = $b[$i];
}
多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変えるのに、
for $j (0..$#{$x[$i]}){
$c[$j] = $x[$i][$j];
}
というコードを書いてるんですが、もっと奇麗な書き方はありませんか?
102:デフォルトの名無しさん
08/01/20 01:38:01
>@aと@bによる二次元の配列@xを作る
@x = (\@a, \@b);
>多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変える
@c = @{@x[i]};
「続・初めてのPerl」のような参考書をお読みください。
103:デフォルトの名無しさん
08/01/20 03:24:16
「多次元配列」、「二次元配列」、その過てる認識がドツボへといざなう
104:デフォルトの名無しさん
08/01/20 05:56:49
>>102
ありがとうございました。
参考書を買って一通り読んだほうがよさそうですね。
アドバイスありがとうございました。
105:デフォルトの名無しさん
08/01/20 09:17:59
>>102
× @c = @{@x[i]};
○ @c = @{$x[i]};
106:デフォルトの名無しさん
08/01/20 22:02:02
>>100
ム板で言う「受け身」は「わからんから教えてくれ」の事だぞコラ
hoge や fuga を試したけど moge や munya のエラーになって
困っています。xxx.net や ○●の本を確認したけれど××の所
の通りで間違っていないコードかと思ったんですが。タスケテ
の様に複数の試行錯誤と複数の情報確認をひっさげてポストしてみ
107:デフォルトの名無しさん
08/01/21 10:27:18
二次元配列?
Perlの配列の要素はスカラーですよ?
108:デフォルトの名無しさん
08/01/21 10:59:15
いま本読んでるところだよきっと!
109:デフォルトの名無しさん
08/01/21 12:22:47
>>91
速さを求めるなら、正規表現の | より、正規表現使わないで or のほうが速いぞ
110:デフォルトの名無しさん
08/01/21 22:29:32
>>97
やっと理解できたよ。map なんて昔からあった?
111:デフォルトの名無しさん
08/01/21 22:32:21
大昔から
112:デフォルトの名無しさん
08/01/22 06:44:24
昔っていうと範囲が曖昧だけど、とりあえず前世紀の産物だしな。
113:デフォルトの名無しさん
08/01/22 06:46:56
僕らが生まれてくるずっとずっと前にはもう
114:デフォルトの名無しさん
08/01/22 07:31:26
>>110
perl4 には無かった記憶が。perl5 からだとすると
URLリンク(search.cpan.org)
> 5.000alpha1 1993-Jul-31
> 5.000 1994-Oct-17
115:デフォルトの名無しさん
08/01/22 10:44:57
map, grep を知ると、出来るだけそれを使ってプログラムを作りたくなる。
116:デフォルトの名無しさん
08/01/22 13:29:05
>115
なんとなくだが、その気持ちは分かった気がする。
117:デフォルトの名無しさん
08/01/22 13:39:17
そして後で泣く
118:デフォルトの名無しさん
08/01/22 14:18:17
>>115
そのままLISPerになっちゃえばいいのにw
119:デフォルトの名無しさん
08/01/22 17:29:54
>>115
前にも同じこと言ったけど中二病だよね。あれって。
120:デフォルトの名無しさん
08/01/22 17:31:34
forのかわりにmap使うボケが多すぎたので、voidコンテクストなるものが導入されました。
121:デフォルトの名無しさん
08/01/22 17:59:14
昔はgrep/mapのほうがforより速かったからなぁ。
122:デフォルトの名無しさん
08/01/22 18:23:02
たしかに。多言語に書き換えるときに泣くよね。
perl はプロトタイプとして使うな。
有る程度ロジックの検証ができたらCなりjavaなりに書き換える。
だから perl 固有すぎる命令は使いたくないね。
map のつかいかたを一所懸命覚えても、何の糧にもならないし。
123:デフォルトの名無しさん
08/01/22 18:24:23
122s/多言語/他言語/p
124:デフォルトの名無しさん
08/01/22 19:22:39
また for厨 が暴れてるのか
125:デフォルトの名無しさん
08/01/22 19:58:09
perl/Tkの参考になるサイトおしえて
126:デフォルトの名無しさん
08/01/22 20:18:47
perl/Tkもいちじはやってたけど、Qt始めてから使わなくなった。
127:デフォルトの名無しさん
08/01/22 20:19:10
でっていう
128:デフォルトの名無しさん
08/01/23 20:45:35
Google検索でいっぱい出てくるじゃん
129:デフォルトの名無しさん
08/01/23 21:13:32
構造体の要素に多次元配列を使いたいです。
struct A => {
aaa => '@', ←ふつうの配列
bbb => '@' ←これを多次元配列にしたい
};
$A->aaa(0, 'a0000'); ←これと
$A->aaa(1, 'a1111'); ←これはよいとして
$A->bbb(0, 0, 'b0000'); ←これはダメ
$A->bbb(0, {0, 'b0000'}); ←これもダメ
$A->bbb({0, 0}, 'b0000'); ←これもダメ
どう書けばよいですか?お願いします。
130:デフォルトの名無しさん
08/01/23 21:22:35
perlに多次元配列なんてものはないが、
配列のリファレンスの配列にすればいい。
131:デフォルトの名無しさん
08/01/23 21:26:06
>>129
$A->aaa->[0] = 'a0000';
$A->bbb->[0][0] = 'b0000';
こんなんじゃあかんの?
132:129
08/01/23 22:22:24
レスどうもありがとうございます。
>130
perlに多次元配列はないという噂は聞きますが
これまでCと同じ感覚で使ってました。プログラマじゃないので許してください。
>131
そんな記述できるのですね。
やりたかったことです。ありがとうございました。
133:デフォルトの名無しさん
08/01/23 23:15:25
言葉として、n次元配列という時はある。配列のリファレンスの配列、とか言いたくないよ!
134:デフォルトの名無しさん
08/01/23 23:36:07
一人っきりの部屋で、言う機会もないくせに。
135:デフォルトの名無しさん
08/01/24 00:08:28
意味は通じるから多次元配列でも問題ない。
リファのリファとか言うより伝わりやすい。
厳密なのは仕様書書きとかがやればいい。
136:デフォルトの名無しさん
08/01/24 00:14:57
多次元配列言う奴は多次元配列としてしか使わんからなあ
137:デフォルトの名無しさん
08/01/24 00:37:18
$hash{'a','b'}でハッシュを二次元配列のように使うとかなかった?
138:デフォルトの名無しさん
08/01/24 00:42:42
普通の配列でやればいい
139:デフォルトの名無しさん
08/01/24 00:48:09
>>137
それはPerl5で非推奨になった
140:デフォルトの名無しさん
08/01/24 01:26:30
>>137
$hash{'a-b'}みたいなもんだし多次元のつもりでやると想定外のことになりうるからあまり勧められんね。
keysとかで簡単に拾うこともできんし。
141:デフォルトの名無しさん
08/01/24 01:32:05
unix epoch より過去を unix time で扱うにはどうすればいいでしょうか。
いまテストしてる環境はWinXP SP2 (5.1.2600) + ActivePerl 5.8.8 です(一応)。
142:デフォルトの名無しさん
08/01/24 02:20:59
ビッグバンより前の宇宙
143:デフォルトの名無しさん
08/01/24 03:09:03
>>141
そもそもunixtimeの定義からして無理だろ。
負の数を正の整数で表現するにはどうしたらいいですか? みたいなもんだ。
自前の日付表現方法考えろ。
144:デフォルトの名無しさん
08/01/24 03:38:28
>>143
どうもです。
unix time定義の厳密な定義はわかりませんが、仮に整数のみであるとしても
負数から計算してタイムスタンプなり配列なりを返す実装はありそうかなと思って。
もうちょっと探してみて、なさそうなら他の手を考えます。
145:デフォルトの名無しさん
08/01/24 03:40:23
訂正:「整数のみ」→「正の整数のみ」
146:デフォルトの名無しさん
08/01/24 05:18:37
Perlでオススメのメーリングリストってあります?
検索したら、下記かな?と思いましたが、終わってるようですし。
URLリンク(bug.org)
147:デフォルトの名無しさん
08/01/24 10:42:03
>>135
分かってる人間どうしで言うのは構わんけど
ここで「多次元配列使いたい」って質問してくる人はたぶん分かってないと思うぞ
148:デフォルトの名無しさん
08/01/24 11:06:45
>>146
なんの話題をしたいかによる。
今はどこも過疎ってるけどね。
149:デフォルトの名無しさん
08/01/24 11:30:31
MLは使わなくなったなぁ。
ダイアルアップ時代の産物だと感じるねぇ
150:デフォルトの名無しさん
08/01/24 11:50:56
>>149
ダイアルアップ時代になって、メールをプロバイダに取りに行くように
なって利点が無くなったもんだよ。
151:デフォルトの名無しさん
08/01/24 12:46:53
>>150
じゃその利点があったとかいう時代に
日本で活動していたMLなんていくつあったの?
152:デフォルトの名無しさん
08/01/24 13:46:59
>>151
MLはクローズドな空間を構成するために使われていたから、日本でいくつなんて、
数えられるわけないだろ。
とりあえず私は、あるとき、メールがオフィスタイムに平均して3秒に1通来る状態に
なって、biff - メール到来通知エージェントがつねにフラグを立てている状態になっ
て、調べてみると72のMLに入っていたので、入っているMLを整理したことがある。
あとになって調べてみると、POPが出てきた時に、「これはMLを殺すぞ」と
指摘していた人がいるんだよね。まあ、その通りになったわけで。
153:デフォルトの名無しさん
08/01/24 14:26:54
読みづらい文章だな
154:デフォルトの名無しさん
08/01/24 14:47:16
何の話ししてんだろ
155:デフォルトの名無しさん
08/01/24 15:10:25
はなししとは?
156:デフォルトの名無しさん
08/01/24 15:26:35
プログラマってこういうツッコミ好きなやつほんと多いよな
157:デフォルトの名無しさん
08/01/24 15:42:03
以上、俺の自作自演
158:デフォルトの名無しさん
08/01/24 17:48:43
えー、続きましてー
159:デフォルトの名無しさん
08/01/24 19:14:46
今でもML使ってるよ。昔に比べると流量少ないけど。
ダイアルアップとは関係なく、コミュニティ・ツールが変わったのが大きい気がする。
perlな方々はblogやIRCで済ませてる人が多いみたいだし。
慣れてない人には不親切かもしんない。
160:デフォルトの名無しさん
08/01/24 19:30:09
ML衰退は他にもウイルスとか迷惑メールの増加の時期とシンクロしてた様にも。
しかし投稿を一気に落として、必要な書き込み作ってアップロードって作業は
時間が限られた電話回線時代にはマッチしてた様に思うね。
今、特に常時接続になってからはMLでもなんでもクライアントでは
データコピーを持たない、ASPスタイルこそが時代の流れと
なっていったと思う。
オンライン辞書の類は地味ながら個人的にはここ10年でも
指折りの革新的なツールだと思ってるお。
161:デフォルトの名無しさん
08/01/24 20:00:53
特殊変数だとおもうのですが、$,の使い方を教えてください。
イマイチよくわかりません。
$,=" ";
としても
すべての変数に空白がつくわけではないようですし・・・
162:デフォルトの名無しさん
08/01/24 20:13:50
perlvar嫁
163:デフォルトの名無しさん
08/01/24 22:49:43
google 「perl 特殊変数」
164:デフォルトの名無しさん
08/01/25 13:05:41
ircは日本語perlのコミュが会話に入りづらい雰囲気
165:デフォルトの名無しさん
08/01/25 13:07:32
↑お前、日本語が下手だから会話に来なくてけっこう
166:デフォルトの名無しさん
08/01/25 15:43:02
スレリンク(tech板)
167:デフォルトの名無しさん
08/01/25 18:59:19
>>161
暇だから答えよう。
$, = ' ';
@a = ('a'..'f);
print @a;
みたいな時に配列の間に半角スペースが入るってだけ。
print "@a";
の間には $" で指定。こっちはデフォで半角スペース入ってる。
168:デフォルトの名無しさん
08/01/25 20:38:17
たしかにircは内輪ネタが分からない奴はお断りの雰囲気がある
169:デフォルトの名無しさん
08/01/25 21:22:36
join関数の方が高速
170: ◆TWARamEjuA
08/01/26 11:31:21 BE:5881469-2BP(6825)
ユリウス使うと良いのかもかも。@うに刻以前
171:デフォルトの名無しさん
08/01/26 13:20:13
初歩的な質問ですがお願いします。
open関数でテキストドキュメントを読み込んで
表示するという初歩の操作を試しているのですが、
"invalid argument "というメッセージがでてきて
ファイルが開けません。
スクリプトは単純ですが以下の構造です。
open(F , ">C:\Perl\text.txt") || die " stupid : $!\n";
while(<F>) {
print;
}
close(F);
ファイルはtext.txtです。パスも間違っていません。どうすれば
よろしいでしょうか?
172:デフォルトの名無しさん
08/01/26 13:25:15
一冊入門書を(仮にわからないとこがあっても)通読した方が良いよ。
英語で言うと、I is bookみたいな状態。
173:デフォルトの名無しさん
08/01/26 13:30:38
>>171
print ">C:\Perl\text.txt", "\n";
とでもして、おまいが何をしようとしているかを確認してみろ。
174:デフォルトの名無しさん
08/01/26 18:39:26
基本的なことかもしれませんが…
Windowsでながーい(256文字以上の)ファイル名使っている場合に
ファイル名は取得できるのですが
そのファイルサイズなどを取得する方法がわかりません。
短いファイル名ならサイズの取得も可能なのですが
非常に長いファイル名だとサイズに0が帰ってきます。
もしよかったらサイズ取得の方法をヒントだけでも結構ですので
教えてもらえませんか?
絶対できるのは間違いないとは思うのですが…
175:デフォルトの名無しさん
08/01/26 19:34:11
WebProgのテンプレをこっちにも入れたいな。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
176:174
08/01/26 20:13:11
大変申し訳ありません。
あの後、考えてみたら
Win32::UTCFileTime
を使ってなんとかなりそうな雰囲気です。
少なくともいくつかの例ではうまくいきました。
お騒がせして大変申し訳ありませんでした。
もうちょっと自分で考えないとだめですね…
177:デフォルトの名無しさん
08/01/26 20:17:23
>>171
こりゃひどいね。
キミは、自分が何をしたいのかが分かってないみたいだね。
どこをどう直せばいいのか、教えるのは簡単だが
それはキミにとって良くない。
入門書を読むことをオススメするよ。
178:デフォルトの名無しさん
08/01/26 20:58:43
>>177
そういわずに教えてあげなよ
179:デフォルトの名無しさん
08/01/26 21:00:22
>>167
ありがとう。
これからはperldoc読みます。
プログラム言語は奥が深い。
三十路にはキツイザンス
180:デフォルトの名無しさん
08/01/26 21:26:32
下のファイルを読んで、XXX, YYY, ZZZのいずれかでなければ
値を取り込むプログラムを作りたいです。
====
AAA
BBB
CCC
……
====
my @prohibit = ('XXX', 'YYY', 'ZZZ');
my @keep;
if ($_ !~ /$prohibit[0]/ && $_ !~ /$prohibit[1]/ && $_ !~ /$prohibit[2]/ ) {
push @keep, $_;
}
とすればまあできるんですが、
my @prohibit に禁止文字の追加や削除をしたときに困ってしまいます。
if ($_ !~ /@prohibit/ ) はエラーになります。
下の $ifif を作っても if 文が中身を把握してくれません。どのようにすればよいでしょうか?
my $ifif;
foreach my $i (0 .. $#{@prohibit}) {
$ifif = $ifif . sprintf " \$prohibit\[$i\] =\~ \/\^%s\/ \&\&", $prohibit[$i];
}
$ifif = $ifif . ' 0 == 0';
181:デフォルトの名無しさん
08/01/26 21:40:32
なんか宿題みたいなの多いなあ。
半年授業をサボってたんだから、少しは自分で勉強しろよ。
182:デフォルトの名無しさん
08/01/26 21:41:02
>>180
my $regex = join '|', map quotemeta, @prohibit;
if ($_ !~ /$regex/) { ...
183:デフォルトの名無しさん
08/01/26 22:29:02
>>170
ありがとうございます。
単純なインクリメントで日単位の処理をしたいだけだったので
Date::Calc(::Object)で対応しました、という報告をしにきたところでした。
ユリウス暦とはまったく思いつきませんでしたが、Date::CalcはA.D.以降なので
ユリウス→グレゴリオ変換のほうが対応できる範囲が広がりますね。
まぁ20世紀を処理するだけなのでどっちもオーバースペックですがw
184:180
08/01/27 00:09:34
>182
ありがとうございました!!
185:デフォルトの名無しさん
08/01/27 00:35:54
Perlインストールしたんだけど
どうやってアンインストールしたらいいの?
フォルダ削除だけで平気?
186: ◆TWARamEjuA
08/01/27 00:48:49 BE:2723055-2BP(6825)
>>180
こういうのもありかしら?
for my $value (<DATA>){
%prohibit = map +($_, 1), qw|XXX YYY ZZZ|;
push @keep, $_ unless exists prohibit{$_};
}
exit;
__END__
AAA
GGG
ZZZ
YYY
ZZZ
XXX
HHH
>>183
月の満ち欠けを画像出力するときに、ユリウスを使って計算をしたことがありましたから(゚∀゚)アヒャ
>>185
念のためrootタソになって、# rm -rf 推奨♪
187:デフォルトの名無しさん
08/01/27 00:50:04
ディレクトリではなくフォルダと言うあたりWindowsか?
188: ◆TWARamEjuA
08/01/27 00:50:58 BE:4574467-2BP(6825)
>>186
なんかおかしいよな(´・ω・`)
my %prohibit = map +($_, 1), qw|XXX YYY ZZZ|;
my @keep;
for my $value (<DATA>){
push @keep, $value unless exists prohibit{$value};
}
exit;
__END__
AAA
GGG
ZZZ
YYY
ZZZ
XXX
HHH
189:デフォルトの名無しさん
08/01/27 01:02:24
>>187
そうなんです
まだ高校生でで思うように開発環境整えられないからさ
190:デフォルトの名無しさん
08/01/27 01:02:31
Regexp::Assembleでいいと思うよ。
191:デフォルトの名無しさん
08/01/27 03:03:57
perlの開発環境なんて本体と標準のメモ帳ありゃできるっしょ。
>>188
なんかあえて難解な書き方にしてるような。
192:デフォルトの名無しさん
08/01/27 03:48:53
読めるようになってくると戻り値を変数に入れるのが面倒になってくるよ。
Winだとインストールが面倒(できない)モジュールがあったりするよ。
まぁ中級後半くらいまでは充分だと思うけど。
193:デフォルトの名無しさん
08/01/27 11:12:16
そのへんがPerlのまずいところでもある。
モジュール頼みのPerlなのに、モジュールがインストールできなくて
ユーザーが離れていってしまうという。
194:デフォルトの名無しさん
08/01/27 12:27:43
かと言って初心者にいきなりUNIX系OSのPCをひとつ用意しろとか
Winにcygwinを導入してPerl使えとかいうのも酷な感じもする。
まあcygwin perlもCPANで入れられないモジュールもあるらしいけどなあ。
195:デフォルトの名無しさん
08/01/27 15:30:12
VMwarePlayerで
196:デフォルトの名無しさん
08/01/27 15:47:07
サードパーティのPPM含めりゃ大抵の物はあるだろ。
197:デフォルトの名無しさん
08/01/27 17:12:33
colinuxで
198:デフォルトの名無しさん
08/01/27 18:49:21
VC++入れてnmakeとclにパス通してCPAN.pmを中心に使ってるが
しばしばmake中にエラーが出るので、その場合にはPPMも使ってる。
CPAN.pmとPPMを併用することによるエラーも出てきてるのかもしれないが、
いずれにせよWinにおけるモジュール管理のノウハウをもうちょっと蓄積したいね。
199:デフォルトの名無しさん
08/01/27 20:08:59
ActivePerl 5.8.8.822を入れたんですが、ppmを使おうとすると
failed: unable to open database file(1)
と表示されて起動できません。
ppm-shellは起動できるんですがinstallの段階で同じエラーになります。
どうやらユーザー名にマルチバイト文字が入っているせいらしいんですが
エラーを避ける方法はありませんか?
200:デフォルトの名無しさん
08/01/27 22:50:58
Perl/Tkでスプレッドシートの Widgetを作成したいのですが、
ActivePerlでどのモジュールを利用するのか、分かりません。取り敢え
ず、Tk::TableMatrixをppmのコマンドでinstall Tk-TableMatrixでインストールし
ましたが、サンプルのコードが動きません。ActibePerlのバージョンは
This is perl, v5.8.7 built for MSWin32-x86-multi-threadとなって
います。
調べていたらuse Tk::TableMatrix;の1行のみのソースでもエラーが出
ます。エラーの内容は、下記です。
Had to create Tk::XlibVtab unexpectedly at C:/ActivePerl/lib/DynaLoader.pm line 253.
Use of uninitialized value in subroutine entry at C:/ActivePerl/lib/DynaLoader.pm line 253.
15.pl syntax OK
インストールに失敗しているのでしょうか? Perl/Tkの他の
Widgetについては、ボタン、ラベル、メニューについては動きます。全
てのテストはしていませんが。ppmのqueryではTk-XlibVtabはありませ
ん。searchでは、ActivePerlのリポジトリーにはありません。
そもそもが、スプレッドシートを使う時に、ActivePerlでどのモジュー
ルが必要なのかと言う事も理解していません。
恐れ入りますが、分かる方がいらっしゃいましたら、ご教授願います。
Perl/Tkでスプレッドシートが出来なければ、わざわざPerl/TkのGUIを
覚える必要もありませんから。宜しくお願いします。
201:デフォルトの名無しさん
08/01/28 00:05:07
>>199
環境変数設定し。
新:知らないことがあってもへっちゃらさ: ActivePerl の ppm が起動しないのです
URLリンク(riku.justblog.jp)
202:デフォルトの名無しさん
08/01/28 19:37:31
なんでこうなるのかよく分からないので教えてください。
■テスト1
・CORE::GLOBAL::exitは呼ばれず、終了してしまいます。
#!/usr/bin/perl
use strict;
*CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)};
exit(1);
1;
■テスト2
・事前にSample.pmを作成します。
package Sample;
use strict;
use warnings;
*CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)};
1;
・CORE::GLOBAL::exitが呼ばれます。
#!/usr/bin/perl
use strict;
*CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)};
exit(1);
1;
■動作確認環境
This is perl, v5.8.5 built for i386-linux-thread-multi
This is perl, v5.8.8 built for x86_64-linux-thread-multi
203:デフォルトの名無しさん
08/01/28 19:38:31
すみません。テスト2のコードが間違ってました。
#!/usr/bin/perl
use strict;
use Sample;
exit(1);
204:デフォルトの名無しさん
08/01/28 20:24:02
>>201
SET ACTIVEPERL_PPM_HOME=C:\Perl\ppm で起動できました
これで枕を高くして眠れます
ありがとうございます
205:デフォルトの名無しさん
08/01/28 21:41:52
>>202
コンパイラがexitキーワードを解決するときの *CORE::GLOBAL::exit の問題。
#!/usr/bin/perl
BEGIN {
*CORE::GLOBAL::exit = sub { printf "exit(%s)\n",join(',',@_);CORE::exit(@_)};
}
exit 1; # この行が(実行ではなく)コンパイルされる時の *CORE::GLOBAL::exit
206:デフォルトの名無しさん
08/01/29 10:53:21
my @a = (1, 2, 3, (4, 5));
のように配列の中に配列を入れたいんですが、できますか?
やっぱり、リファレンスを使うべきなんでしょうか?
207:デフォルトの名無しさん
08/01/29 11:23:20
べきっつうか、リファレンス使わないと出来ない
208:デフォルトの名無しさん
08/01/29 16:01:58
linux版CPANを入れたらcpan shellに出入りするたびに
Terminal does not support AddHistory.
Terminal does not support GetHistory.
と言われるんですが、これは何ですか。
209:デフォルトの名無しさん
08/01/29 17:15:04
readlineがないとか?
210:デフォルトの名無しさん
08/01/29 17:32:43
>>209
Bundle::CPANのことでしょうか?
入ってるし機能しているはずなんですが・・・。
cpan>
で上下矢印キー押すとコマンド履歴出てくるから入ってる証拠ですよね。
おかしいです。
211:デフォルトの名無しさん
08/01/29 18:28:34
とりあえず、ソースコードをメッセージテキストでgrepしてみるところから
探求をはじめなよ。
212:デフォルトの名無しさん
08/01/29 18:38:12
>>211
あっ!!そういう手があるんですね。
hackですね。ww
213:デフォルトの名無しさん
08/01/29 20:38:01
やはり分からないのでおたずねします。
cpanの入れ直しから始めて、cpan setup後に
cpan >install Bundle::CPAN
をして、途中で
----
Ah, I see you already have installed libnet before.
do you want to modify/update your configuration(y|n)? [no]
----
とあったのですが、これはどういう意味ですか?
(英語としての意味じゃなくて、その中身です。何を指してるんでしょう。)
ソース見てもソース自体がよく分からなかったです。
214:デフォルトの名無しさん
08/01/29 20:41:34
あと
enter arithmetic or perl expression: exit
はexitのままEnterで良いですか?
いずれもメッセージ本文でGoogle検索してみたものの英語力不足のせいか
全く目当ての情報が見つかりませんでした。
215:デフォルトの名無しさん
08/01/29 21:03:54
>>213
中身て?
単に、設定ファイル上書きしていいか 聞かれてるだけだけど…
216:デフォルトの名無しさん
08/01/29 21:18:58
>>215
中身というのは
「設定ファイルを上書き」
というのが何かという意味です。
perlに慣れた人ならすぐ分かるのでしょうが、私は慣れていないので
ピンとこない、といえば伝わるでしょうか?
217:デフォルトの名無しさん
08/01/29 21:21:03
慣れたもなにもcpanの設定を変えていいかどうかを聞いてるだけやがな
218:デフォルトの名無しさん
08/01/29 21:27:42
2時間もいろいろ調べ続けてこれなんです。
英語は分かるので英語的な意味は分かるんですが、それが「何を指しているか」
が分からないんですよ。
言葉って指すものについての経験が不足していると伝わらないでしょう。
パソコンを触ったことがない人にアルゴリズムの話をしても伝わらないように。
冷静に考えてみてください。
それに、上で引用した
----
Ah, I see you already have installed libnet before.
do you want to modify/update your configuration(y|n)? [no]
----
にしたって、その部分の意味は英語の分かる私にはわかりますが、
文脈が分からないのですよ。
言葉って断片だけでは意味をなさなくて、背景の理解があって初めて、
その言葉が理解できるものでしょう。
なので、私がこのメッセージがチンプンカンプンだというのはそういうことです。
それで、どうすればいいんですか?
cpanという言葉もよく分かっていない状態なのですが、
設定というのも何を指すか分からないですが、
cpanの設定を変えていいかはどう判断したらいいんですか?
よろしくお願いします。
219:デフォルトの名無しさん
08/01/29 21:44:59
自分の書いた設定を書き換えられるのに抵抗を感じるならno。
さもなくばyes.
220:デフォルトの名無しさん
08/01/29 22:14:58
>>218
日本語でおk。
要は、「どんな情報があって、それが何を意味していて、その情報を書き換えられたらどうなるのか、ということがわからない」と言いたいんだな?
221:デフォルトの名無しさん
08/01/29 22:22:50
いいえ、ケフィアです。
222:デフォルトの名無しさん
08/01/29 22:26:14
>>219 ありがとうございます。結局よく分かりません。
noにして大きなトラブルが生じそうになかったのでnoにしました。
では、代わりに。これも昨日から発生している問題なのですが、
cpan -fi [modname]
としたときに
Unknown option : f
と出ます。
Bundle::CPANを入れたらforceオプションが使えるようになると聞いたのですが、
このようになります。
ただし、cpanシェルのなかに入って
cpan[1]>force install [modname]
という操作なら出来ます。
出来ないのは、普通にシェルのコマンドライン上で
$ cpan -fi [modname]
とすることによるforceインストールが出来ません。
代わりに普通のインストールが行われてしまいます。
"unknown option: force" - Google 検索
URLリンク(www.google.co.jp)
17件しか引っかからず、よく分かりません。
Bundle::CPAN
223:デフォルトの名無しさん
08/01/29 22:30:38
>>220
質問の意味がよく分かりません。
私が言いたかったのは断片だけでは言葉って意味をなさないということです。
文章的な文脈と知覚経験的な文脈とがあって意味をなすということです。
つまり、
----
Ah, I see you already have installed libnet before.
do you want to modify/update your configuration(y|n)? [no]
----
が分からないという質問に対して2度も直訳的な回答をされたのに対して
それでは伝わらないと言ったまでです。
224:デフォルトの名無しさん
08/01/29 22:33:26
経験がないとかいう問題じゃなくて、単に理解力・想像力がないだけだろ。
225:デフォルトの名無しさん
08/01/29 22:39:55
>>224
いいえ、正確には、このケースで必要とされる理解力と背景知識がなかった、です。
それで、背景知識としてどういったものが必要なのかが分からないので手がかりが欲しくて
上記の質問をしたのです。
理解力なんて測定できなくて曖昧なものを頼りにしていても仕方ないので、
まず背景知識を摂取する、そこがスタートだと考えました。
226:デフォルトの名無しさん
08/01/29 22:52:57
>>214については、そのままEnterでOKだと分かりました。
>>222が分からないので調査中です。
227:デフォルトの名無しさん
08/01/29 23:01:51
>>225
理屈ばっかりこねて行動力の無いタイプだな
228:デフォルトの名無しさん
08/01/29 23:11:30
>>223
yes入力してみればどうなるか分かるだろうに。
229:デフォルトの名無しさん
08/01/29 23:59:27
>>225
手がかり? 文中にはっきり「libnet」と書いてあるじゃないか。
ググって最初に出てくるのがこのページだ。
URLリンク(perldoc.jp)
> libnetって何?
> libnetperl5モジュールの集合体で、それらは全てネットワーク
> プログラムに関連します。
ネットワーク関係のモジュール名を挙げて設定をするか否か
尋ねてきているんだから、ネットワーク周りの設定を改めて行うか
どうか問われている事ぐらい容易に想像できるだろ?
>まず背景知識を摂取する
それを自力で行う能力が致命的に欠けているだけだろ。
230:デフォルトの名無しさん
08/01/30 00:39:16
>>227
理屈をこねたかどうかが大事なのではなくて、理屈が正しいか、
そして理屈が有効かが大事なんですよ。
正しくないor無効な理屈をこねていて、なおかつ行動もしていないのなら
あなたは私を批判する権利があります。
しかし、残念ながらこのケースではそれに該当しません。
それに、私は>>224に対して>>225を言ったということを忘れないでください。
>>224で想像力がないと断定されたのに対して>>225はその反論です。
決して無駄なおしゃべりをしたのではありません。
>>228
yes入力してみましたよ。noも。3回くらいはやって何が起きたかを観察しましたが
違いが分かりませんでした。
231:デフォルトの名無しさん
08/01/30 00:39:53
>>229
>ネットワーク周りの設定を改めて行うか
>どうか問われている事ぐらい容易に想像できるだろ?
もちろんです。ですがそれ以上は想像できません。つまり、それ以上は「背景知識」を
摂取することで補完する必要がありました。
なぜ補完の必要があったか、それは以下のことが分からなかったからです。
1. たしかにlibnetと書かれているし調査の結果libnetがネットワーク関連だということも
分かったが、聞かれているのが本当にlibnetについてなのか、つまり、
do you want to modify/update your configuration(y|n)? [no]
というのは「configuration of libnet」の意味なのか
2. my configurationをmodifyとあるが私はこれまでにlibnetの設定をした記憶がない。
なのに、my configurationとはどういうことか。
3. configurationをなぜ今する必要があるのか
4. 今configurationの各項目をいい加減に決めてもconfigurationをあとで修正できるのか
5. もしそうなら知る必要があるconfigurationの保管場所はどこか
232:デフォルトの名無しさん
08/01/30 00:44:02
ここはお前の哲学を語るスレじゃない。
233:デフォルトの名無しさん
08/01/30 02:18:43
>>231
この"configuration"は「設定」というより、「構成」なんだろうよ。
234:デフォルトの名無しさん
08/01/30 02:56:38
Perlの話をしなさい。
ここは自分の思想を押し付けるスレじゃない。
235:デフォルトの名無しさん
08/01/30 05:11:37
英語が分かるなら英語圏のユーザーに
聞けばいいんじゃねえの?
236:デフォルトの名無しさん
08/01/30 05:27:59
IDが無い板なんだからコテハンつけてほしいな
あぼーんする手間が面倒だよ
237:デフォルトの名無しさん
08/01/30 05:50:31
>>231
ドラゴンボールの中でフリーザが一番好きです まで読んだ
238:デフォルトの名無しさん
08/01/30 08:52:31
>>233
そうなのですか。参考にします。
>>232>>234
とんだ誤解ですね。私は決めつけられた誤解に対して答えただけですよ。
うらむ相手が間違っています。
それに私は私の哲学をどこで語っているんでしょうか。
Perlに関する質問のやりとりのなかで、致命的な誤解が生じてしまったので、
事情説明をしてコミュニケーションの修復を図っただけですよ。
どこにも私の主観・思想が語られておらず、ただ私に関する事実が述べられているのみです。
(もう一度お読みになってみることをお勧めします。)
それなのにその部分だけとりあげて哲学を語っているからスレ違いだとするのは
あまりに早計ではないでしょうか。
>>235
それだけの英語力があるかはやや不安です。
やはり、日本人だから日本語のほうが話しやすいものです。
239:デフォルトの名無しさん
08/01/30 09:00:21
>>238
つうかもっと完結に書く能力はないの?
どうせ「誤解のない詳しく書いてどうのこうの」ってくどくど書くんだろ?
その妙な書き方 前に見たような気がするが…
240:デフォルトの名無しさん
08/01/30 09:10:20
>>238
> うらむ相手が間違っています。
>>232 >>234がお前さんを「うらんでいる」という解釈こそ、この場で最も大きい「とんだ誤解」では。
どこから「うらむ」という発想が出てきたのか、まるで見えてこない。
241:デフォルトの名無しさん
08/01/30 10:03:47
自分がなんで注意されてるかさっぱり理解できない天然さんぽいから放置で。
242:デフォルトの名無しさん
08/01/30 10:28:45
なんという入れ食い
243:デフォルトの名無しさん
08/01/30 10:34:40
>>239
確かに簡潔に書くことは大切ですが、私が簡潔に書く能力がないとするのは論理の飛躍です。
それに、私の文章が簡潔でないというのも偏見ではないでしょうか。
文字数が特別多いわけでもないでしょう。
あと、簡潔に書けるのになぜ簡潔に書かなかったかというと、その必要を感じたからです。
つまり、あらぬ誤解をかけられて、それがために質問者としての目的の遂行に障害が発生したので、
必要なだけの対策を講じたまでです。
そうした些末なことはまさにスレ本題ではないので、>>241の言うように放置をお勧めします。
それから、2chは私は数年前から定期的に利用しているので、私の文章をあなたが見た可能性は否定
できませんが、私の今回の文章を見ただけで、あなたが過去に見た特定の文章の書き手と同一視して
しまうのは早計ではないでしょうか。
そもそも、仮にあなたが過去に見たような気がするというその文章が私のものだったとしても、
だからどうしたというんですか?
発言の意図が見えてこないし、スレ違いもはなはだしいので自重お願いします。
>>240
うらむという表現は「敵対的な言い方をされる」という表現に置換することも可能です。
要するに、表現方法の問題です。
そもそも、仮に、私が>>238で「とんだ誤解」といったときに最大な過ちが私の表現方法
にあったのだとしても、>>232>>234が誤解をしていることには何ら変わりがありません。
>>241
具体的にどんな点で私が注意されるべきなのでしょうか。
もっとも、>>241が私に向けた発言でないことは明白ですが。
244:デフォルトの名無しさん
08/01/30 10:39:18
にゃーにゃー
245:デフォルトの名無しさん
08/01/30 10:42:17
日本語として成立しなくなったら釣りも終わりだな。
246:デフォルトの名無しさん
08/01/30 10:54:08
しねばいいのに・・・
247:デフォルトの名無しさん
08/01/30 12:47:15
日本語の得意な朝鮮人が来てますねwww
248:デフォルトの名無しさん
08/01/30 12:52:09
895 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/07(月) 02:32:27
頭が悪いのに口だけは達者な馬鹿の典型だなw
249:デフォルトの名無しさん
08/01/30 13:13:01
会社で嫌われてんだろうなぁ・・・
250:デフォルトの名無しさん
08/01/30 13:15:37
>>243
早くインストールしろよw
251:デフォルトの名無しさん
08/01/30 13:18:17
>>243
> そうした些末なことはまさにスレ本題ではないので、>>241の言うように放置をお勧めします。
オマエガナ
252:デフォルトの名無しさん
08/01/30 13:23:42
祭りと聞いて(ry
253:デフォルトの名無しさん
08/01/30 13:32:31
ごめんなさい。釣りでした。
254:デフォルトの名無しさん
08/01/30 13:39:22
続きまだぁ?
255:デフォルトの名無しさん
08/01/30 13:50:44
Perlでは珍しいタイプの狂人だな
256:デフォルトの名無しさん
08/01/30 16:52:12
この無駄な冗長さはコボラー
257:デフォルトの名無しさん
08/01/30 21:53:12
珍しく伸びてると思ったら
…珍しくもないか
258:デフォルトの名無しさん
08/01/30 22:51:58
それに、あと、つまり、それから、そもそも、
こんな接続詞が多用されている時点で
簡潔に書けてない事がよく分かるな。
259:デフォルトの名無しさん
08/01/30 23:22:35
みんな、楽しそう。
260:デフォルトの名無しさん
08/01/31 00:11:09
あーこんな文章をどこかで見たことがあると思ってたらアレだ
精神病の人が医者に「これこれで私は精神病じゃないです」って言ってるのにそっくりなんだわ
たとえばこれとか
URLリンク(www.so-net.ne.jp)
261:デフォルトの名無しさん
08/01/31 00:16:37
3行でおk
262:デフォルトの名無しさん
08/01/31 00:43:52
ス
レ
違い
263:デフォルトの名無しさん
08/01/31 02:25:46
なぜこのスレに、精神異常者チェイサーズが集結しているのか?
264:デフォルトの名無しさん
08/01/31 11:37:30
後に現れるのは、もちろんキティガイ
265:デフォルトの名無しさん
08/01/31 20:03:28
エンターキーを押さなくてもキーボードから
一字だけ入力を受け付けたいときはどうすればいいでしょうか?
266:デフォルトの名無しさん
08/01/31 20:08:05
>>265
っ[Term::ReadKey]
267:デフォルトの名無しさん
08/01/31 20:19:17
できました。ありがとうございました。
268:デフォルトの名無しさん
08/01/31 22:23:46
$count = $x =~ tr/0-9/0-9/;
で数字の桁数を数えられるようですが、どういう仕組みなのか分かりません・・・
くだ質の類だと思いますが、よろしくお願いします。
269:デフォルトの名無しさん
08/01/31 22:47:50
tr演算子は置換した文字の数を返す
270:デフォルトの名無しさん
08/01/31 22:48:16
$xの数字を同じ数字に置換して,置換した回数を$countに入れてる.
$xが数字だけなら桁数と一致するわな.
271:デフォルトの名無しさん
08/01/31 23:32:10
目からウロコが落ちた。確かに数えられるねぇ。
でもなんか違う気がする。
272:デフォルトの名無しさん
08/01/31 23:46:35
面白いコードと実用的なコードには差があるからな。
273:デフォルトの名無しさん
08/02/01 00:59:15
できるこたできるけど中身が数字列の場合に限るし
それが保証されてるならlengthでもいい気はする。
274:デフォルトの名無しさん
08/02/01 03:09:51
>>273
my $num = '-123,456';
print $num =~ tr/0-9//, "\n"; # 6
print length $num; # 8
275:デフォルトの名無しさん
08/02/01 08:49:13
実戦での桁数は計算で出すよね
276:デフォルトの名無しさん
08/02/01 10:18:25
計算てw
277:デフォルトの名無しさん
08/02/01 11:53:20
n進数の桁数は計算だすよ
278:デフォルトの名無しさん
08/02/01 11:54:25
>>274
いや数字だけの列と保証されてる場合よ。
279:デフォルトの名無しさん
08/02/01 12:08:24
電話番号やカード番号みたいに、ハイフンがあったりなかったりのチェックで・・
・・・文字数だけじゃあんまり意味ないか
280:268
08/02/01 14:12:06
trは置換した文字列を返すんですね。
処理の順番も勘違いしてました。↓の順番なんですね
$count = ( $x =~ tr/0-9/0-9/ );
ありがとうございました。
281:デフォルトの名無しさん
08/02/01 14:25:00
「置換した文字列」ではない。
置換もしくは削除した文字数を返す。
282:デフォルトの名無しさん
08/02/01 14:32:45
while ($x =~ m/\d/gs) { $count++ }
283:268
08/02/01 14:41:11
>>281
書き間違えでしたスイマセン
284:デフォルトの名無しさん
08/02/01 15:47:47
重箱の隅だけど、
tr/a/a/
ってのは置換したことになるの?
285:デフォルトの名無しさん
08/02/01 16:05:17
やってみろ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4953日前に更新/153 KB
担当:undef