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
やってみろ。
286:デフォルトの名無しさん
08/02/01 17:08:30
tr/hoge/hage/
の hoge にマッチした回数でいいんじゃね?
287:デフォルトの名無しさん
08/02/01 18:12:45
>>284
文法上は置換する(したことになる)が、実際の置換は行われない。
tr/X// や tr/X/X/ は対象に含まれるXを数える為の記述で、この場合には対象が
左辺値である必要もない。
perl -le "print q/123,456/ =~ tr/0-9a/0-9a/" # エラーにならない
perl -le "print q/124,456/ =~ tr/0-9a/0-9b/" # エラーになる
perl -le "print int(1234.56) =~ tr/0-9a//" # エラーにならない
288:デフォルトの名無しさん
08/02/01 21:17:49
ちょっと自分で試してみればすぐ答えが出るのに。
なんで試さないのかなぁ。
もしかして、ナイコン?
289:デフォルトの名無しさん
08/02/02 13:24:32
確かにわけわからん
レスを書くよりキーを叩く回数が少ないのに。
290:デフォルトの名無しさん
08/02/02 13:55:00
重箱の隅とか言いつつperlバイナリのソースコードのレベルの話を求めてるんじゃね?
291:デフォルトの名無しさん
08/02/02 15:24:02
% perl -MO=Deparse -e 'print q/aaaaa/ =~ tr/a//'
print 'aaaaa' =~ tr/a//;
-e syntax OK
% perl -MO=Deparse -e 'print q/aaaaa/ =~ tr/a/a/'
print 'aaaaa' =~ tr/a//;
-e syntax OK
292:デフォルトの名無しさん
08/02/02 17:10:44
5.00503だと 'aaaaa' =~ tr/a// は
Can't modify constant item in character translation
と怒られてdieした。5.6.1なら置換回数が返された。
293:デフォルトの名無しさん
08/02/03 23:24:30
質問です。
だいぶ前に書かれたライブラリ(*.pl)が現役で動いているとします。
色々な箇所で使われているため、(動いている限りは)できるだけこれを修正したくありません。
このライブラリの中に、以下のようなサブルーチンがあります。
sub Func
{
local *data = $_[0];
#ハッシュにいろいろ詰め込む
}
このサブルーチンは、以下のように呼び出すようにとサンプルコードが示されています。
local %hash;
&Func(*hash);
これを呼び出し側だけでもlocalを排除しようと、以下のように書き換えました。
実行してみた結果、ちゃんと動いているように見えます。
my %hash;
Func(\%hash);
この場合、
1.呼び出し元だけを書き換えることに意味はあるのか?
2.あるとしたら正しい書き方は?(cron、CGI、mod_perlで動かすことを想定)
よろしくお願いします。
294:デフォルトの名無しさん
08/02/04 02:17:53
バージョンによる
295:デフォルトの名無しさん
08/02/04 02:25:32
>>293
一般論としては、その修正で得られるのが自己満足だけなら、さわらないことをお勧めする。
296:デフォルトの名無しさん
08/02/04 10:16:16
>294
あ、バージョン書き忘れてました。
Perl 5.005
Apache/1.3.28 (Unix)
mod_perl/1.29
※下2つはCGIやmod_perl動作時のもの。
>295
自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので
なるべくmyで統一したいと考えています。
それに、そのサブルーチンを呼ぶときだけlocalなのも変かなーと。
297:デフォルトの名無しさん
08/02/04 10:21:10
>>296
> 自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので
> なるべくmyで統一したいと考えています。
そんな変質的行為に突入する前に、localの挙動をきちんと理解しろ。
298:デフォルトの名無しさん
08/02/04 10:41:31
localだと値を追いかけるのが面倒で……。
299:デフォルトの名無しさん
08/02/04 11:08:20
基本的にはそれで正しく動くはず。
ただ、1.2.の問いがあるから「書き換える必要はないんじゃないの?」って言われてるわけで。
300:デフォルトの名無しさん
08/02/04 11:38:30
ありがとうございます。
ライブラリの方を修正したいけど……中途半端に手を出したら悲惨なことになりそう……
301:デフォルトの名無しさん
08/02/04 11:52:29
古いライブラリをmod_perlで使おうとは思わないなぁ
302:デフォルトの名無しさん
08/02/04 12:18:11
古いライブラリをmod_perlで使うんじゃないんです
古いライブラリがmod_perlで動いてるんです……
303:デフォルトの名無しさん
08/02/04 12:22:08
自分なら、そんな動作よくわからない関数mod_perlで使わないが・・・
なんかラッパー関数作ってそっち使うようにしてけば
そのうち古い関数は淘汰されるんでは?
304:デフォルトの名無しさん
08/02/04 12:51:20
まあ、その少しずつやってます……。
305:デフォルトの名無しさん
08/02/04 13:53:56
他人の書いたperlの読みにくさは異常
書き換えるよりも書きなおしたほうが早いことさえある
306:デフォルトの名無しさん
08/02/04 14:38:28
読みながら書き直したりする。
以前、「どう見てもPrologです。本当にありがとうございました」な
プログラムをもらったことがある。
307:デフォルトの名無しさん
08/02/04 18:33:33
よくわからない物はよくわかるようになるまで触らない方がいいとは思うな。
localが気になるならコメント添えてここはこういう理由って記述しときゃ後で見たときにもわかるし。
せめてそのライブラリの流れ把握できるくらいになってからでないと。
308:デフォルトの名無しさん
08/02/04 19:53:07
localの98%くらいはmyにしてしまっても問題なくね?
309:デフォルトの名無しさん
08/02/05 00:06:02
いや、97%くらいだろ。
310:デフォルトの名無しさん
08/02/05 05:09:26
動いてんならいじるなよ
311:デフォルトの名無しさん
08/02/05 18:09:00
懸念してるのは想定外の2%だか3%のバグの発生だからな。
上でも言われてるがいじるメリットが自己満足だけなら俺もそのままのがいいとは思う。
312:デフォルトの名無しさん
08/02/05 20:11:35
Exporter が import を強制的にexportしなくなったのって、
仕様変更はいつから?
実装変更は、perl 5.9から?
313:デフォルトの名無しさん
08/02/06 00:30:23
人狼ってゲームのCGI設置したいんだけど(nifftyに)
できなくて質問CGIが動かないんだけど、以下エラー
Wed Feb 06 00:22:09 2008 Client Abort 2-- detected during CGI/SSI process
Wed Feb 06 00:22:10 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:11 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:12 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:14 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:15 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:16 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:18 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:19 2008 Warning: Connection closed and CGI process ID=400 ・・・・・・
以下の文法あやしい?
sub sub_lock {
# 1分以上古いロックは削除する
if (-e $lock_path) {
local($mtime) = (stat($lock_path))[9];
if ($mtime < time - 60) { &sub_unlock; }
}
local($retry) = 5;
# mkdir関数式ロック
while (!mkdir($lock_path, 0755)) {
if (--$retry <= 0) { &error('LOCK','LOCK is BUSY'); }
sleep(1);
}
$sys_lockflag=1;
}
ニフティで設置してる人いたからできるとは思うんだけども誰か助けて(;;)。。。
314:デフォルトの名無しさん
08/02/06 01:18:29
鼬害です
315:デフォルトの名無しさん
08/02/06 03:27:35
>>1 の冒頭くらい読んでね。
ここはプログラムの板でってCGIの板じゃないよ。はい移動。
スレリンク(php板)
316:デフォルトの名無しさん
08/02/06 16:20:24
Perlって数ヶ月書かないだけでかなり忘れるんだけど、
おまいらPerlは毎日のように書いてるの?
俺のような記憶力弱いやつはPythonに替えるべき?
317:デフォルトの名無しさん
08/02/06 16:22:52
$str =~ tr/a-z/A-Z/g;
として小文字を大文字に変換しようとしてますが、
Bareword found where operator expected~
とか言ってエラーになります。
何度ググってもこれであってるぽいんですが…。わけがわかりません助けて。
318:デフォルトの名無しさん
08/02/06 16:26:31
その前後が問題なんじゃないの?
319:デフォルトの名無しさん
08/02/06 16:29:44
>>317自己レス
gをなくしたら通りました。g使えないの?
ぐぐってでてきた複数の例で使われてるんだけど。
試したVerは5.8.2と5.8.8。
320:デフォルトの名無しさん
08/02/06 16:31:36
tr///はcdsだけみたいね
321:デフォルトの名無しさん
08/02/06 17:01:29
uc($str);
322:デフォルトの名無しさん
08/02/06 17:26:53
>>316
そんな毎日やるわけないけど
忘れたらリファレンスのページとか参考にすりゃいんじゃないの?
>>319
gはm s // だけのはず。
tr y は>>320
似てるけど一応動作は別もんだからね。
323:デフォルトの名無しさん
08/02/06 18:47:07
>>316
Pythonでも、クラスのメソッドとか多くて覚えられないけどね。
ただ、Pythonに乗り換えたらPerlには戻れないと思う。
324:デフォルトの名無しさん
08/02/06 20:38:28
>>316
使うときはWebサイトか昔書いたソースを見ながらやってる
325:デフォルトの名無しさん
08/02/06 22:47:26
>>316
毎日とは言わないが、けっこう頻繁に使ってるな。
1回しか使わないような使い捨てスクリプトは perl で書いてる。
何度も使うのはCやjavaやVBやVBScriptや・・・・
perl って便利ですよ。
バッチファイルみたいに手軽にかけて、バッチファイルよりも遥に高度な処理ができるからね。
perl が嫌われてる理由を俺なりに考えてみた。
・漢字(ShiftJIS)に対応していない
・サーバアプリに向かない(CGI は負荷が重い)
・ソース丸見えだから業務アプリに向かない(納品できない)
でも使いようによっては超強力だよ。
326:デフォルトの名無しさん
08/02/06 22:56:53
perlって嫌われてるのか?
ところでperlで自分で書いたものって一月も前に書いたものは修正したくてならなくなるんだがwww
327:デフォルトの名無しさん
08/02/06 22:58:19
> 漢字(ShiftJIS)に対応していない
Encode.pmがあるじゃない
> サーバアプリに向かない(CGI は負荷が重い)
Hatena, Mixi, その他探せば色々あると思うんだけど
Perlが糞な理由はOOPやリファレンス回りの小汚い記法と
省略の美学(笑)によって解読不能なコードが書けるからだろう
きちんと書けば(『Perlベストプラクティス』みたいに)大分ましだが
Perlの特長を削いでる感じがするね
328:デフォルトの名無しさん
08/02/07 00:21:34
>>325
>ソース丸見えだから業務アプリに向かない
暗号化する仕組みがあるよ。
329:デフォルトの名無しさん
08/02/07 00:33:04
個人で使うならRubyかPythonのほうが幸せになれる?
330:デフォルトの名無しさん
08/02/07 00:46:13
>>329
個人で使うだけなら、迷わずPerl。
まぁ、好き好きだけどね。
331:デフォルトの名無しさん
08/02/07 00:57:31
理由はユーザーが多いから?年期の入った言語ゆえにソースが転がってるから??
後発の言語のほうが練られてそうなんですが。
初学者なんでこのままマスターしようか乗り換えようか迷ってるのですわ。
332:デフォルトの名無しさん
08/02/07 01:02:24
perlなんて簡単なバッチ処理を書いて使い捨てにするようなのに向いてる言語だから、
マスターした!って達成感を味わいたいなら別の言語にしたほうがいいよ。
333:デフォルトの名無しさん
08/02/07 01:05:36
perlを使う理由なんて「どこにでもある」「たいていのものはCPANにある」しかないよ。
334:デフォルトの名無しさん
08/02/07 01:08:19
マスターてのがどういう状態を指してるのか分からんが、
一通り文法覚えて書けるようになるだけなら、RubyもPythonも大して変わらんね
335:デフォルトの名無しさん
08/02/07 01:24:51
Perlぐらい憶えときゃええがな。他言語へも1,2週で移行できるわな
そんな人生の選択みたいに迷うほどのことちゃいまっせ
336:331
08/02/07 01:43:10
マスターって言葉使いましたが単にテキスト処理ならなんでもってレベルです。
レスありがとうございました。とりあえずPerl覚えときます。
337:デフォルトの名無しさん
08/02/07 01:50:17
>>327
横入りだけどJcode使ってた身としてはEncodeはかゆいとこに手が届かないなぁ。
あと、今はPHPとかエディタの機能とかで知れてるけど正規表現に腰が引けてる人もいたかもね。
使いこなせば強い味方だけどいきなりだとさっぱりわからんだろうし。
記述の簡略化はあるねー即興で組んだやつはファイルのクローズせずに終わらせたりかなり乱暴なことしてる。
338:デフォルトの名無しさん
08/02/07 02:12:19
良くも悪くも無茶な書きかたができるよね
339:デフォルトの名無しさん
08/02/07 09:46:44
コード書く
→後日、意味もなく省略化を施す
→さらに後日、自分の書いたものが理解できず解読作業
ひとつのコードで3回も楽しめるPerlサイコー\(^o^)/
340:デフォルトの名無しさん
08/02/07 10:38:16
>>339
あるあるwwwありすぎて困るwww
341:デフォルトの名無しさん
08/02/07 11:22:36
日々のperlは書き捨て
342:デフォルトの名無しさん
08/02/07 12:13:33
激しくスレ違いかもしれませんが、質問です。
PCゲームを多重起動しようと試みたのですがダメでした。
大抵のゲームはWindowsのアカウントを2つ作成し、別々のアカウントで起動すれば問題ありません。
現在、Vistaを使っているのでXPではどうなるかはわかりませんが(XPは右クリックから別ユーザーで起動が可能)、
Vistaでその手法をとる場合、runasコマンドを使用することになります。
しかしこのコマンドで別々に起動しても、後から起動したほうが無効になってしまいました。
で、ここからがわけわかめなのですが、同一のデスクトップからの起動はダメでも、
Windowメニュー→ユーザー切り替えをし、別々に起動すればうまくいきました。
この違いはいったいなんなのでしょうか?
343:デフォルトの名無しさん
08/02/07 12:17:36
このゆとりはいったいなんなのでしょうか?
344:デフォルトの名無しさん
08/02/07 12:27:32
単なる誤爆じゃね? と思いたいが
345:デフォルトの名無しさん
08/02/07 15:02:53
use utf8;
use Encode;
use WWW::Mechanize;
my $start = "URLリンク(***.com)";
my $mech = WWW::Mechanize->new( autocheck => 1 );
$mech->get( $start );
my $phrase = 'こんにちは';
$mech->follow_link( text_regex => qr/$phrase/);
.....
見たいなコードを書いて日本語のページ(shiftjis)をとりに行ってるんだけど、
getのときの文字コードの判別がうまくいかないので、
text_regexがうまく動かないんですが、いい方法ないですか?
346:デフォルトの名無しさん
08/02/07 17:29:33
>>345
裏2chにあります
●裏2chの入り方
1・”名前欄”に「ura2ch.czfusianasana.net」と入力します。
裏2chへ飛ぶためのコマンドです、間違えないように”「」”の内側の文字をコピーペーストして下さい。
2・メール欄に閲覧したい板の関連キーワードを入力してください。
例:ロリ、グロ、無修正など
3・”本文欄”にIDとパスワードを入力します。
ID/パスワード=「guest/guest」
4・書き込みが終了すると2chのTOPに戻るのでもう一度入場
5・背景が暗転していたら成功、裏2chに侵入出来ています。
ちなみに裏2chに既存の板は勿論存在します、それにサーバーは外国のサーバーなので日本のややこしい法律に抵触する事も無いです
週末や2ちゃんねるで話題の事件があるときはアクセス数が増えサーバーに負荷がかかる為、つながりについ場合があります
スポーツ選手のコラや無臭性画像も多数UPされている板も存在します
それに完全な匿名性を誇るので違法行為を繰り返しても逮捕される事はまずありません
347:デフォルトの名無しさん
08/02/07 18:01:32
すごい久々にそのコピペ見た。
348:デフォルトの名無しさん
08/02/07 18:07:56
:content_cbで変換するとか?
349:p4143-ipbfp205otsu.shiga.ocn.ne.jp ◆TWARamEjuA
08/02/07 20:57:18 BE:3811875-2BP(6825)
wktk♪
名前が長すぎるようです♪
350:デフォルトの名無しさん
08/02/07 21:41:57
コマンドプロンプトでperl -vと打ち込むところでperlと打ち込んだら
exitと打ち込んでもコマンドプロンプトが終了できなくなってしまいます・・・
351:デフォルトの名無しさん
08/02/07 22:03:10
__END__
352:デフォルトの名無しさん
08/02/07 22:08:09
kill -KILL `pidof perl`
353:デフォルトの名無しさん
08/02/07 22:10:53
^D
354:デフォルトの名無しさん
08/02/07 23:16:05
CTRL+Z
エンター
355:デフォルトの名無しさん
08/02/08 01:33:02
ctrl+s押して右往左往したことはある
356:デフォルトの名無しさん
08/02/08 09:05:11
>>355
あるある。リンクが切れたのかと思っちまう。
#ちなみに、Ctrl+Qでぬける。
357:345
08/02/08 11:45:09
自己解決しました。
裏2ちゃんねるにはいけませんでした、残念w
358:デフォルトの名無しさん
08/02/09 00:38:06
>>332
>perlなんて簡単なバッチ処理を書いて使い捨てにするようなのに向いてる言語だから、
したり顔でそんな放言出来るなんて、おまいはまだまだだな。
perlでも信頼性と保守性を担った、アプリケーションと呼べるレベルのものまで書けるわさ。
359:デフォルトの名無しさん
08/02/09 00:57:31
でっていう
360:デフォルトの名無しさん
08/02/09 01:14:05
さくっと書いてさくっと終わるようなものに 「も」 向いている言語だというのは間違いないんじゃないかな
361:デフォルトの名無しさん
08/02/09 01:32:18
いっしょけんめいPerlのコアなプログラミングを学習したところで、
就職にはなんの役にも立たない。
それどころか、履歴書や職務経歴書に「Perl」などと書こうものなら
面接のその場で不採用決定。
C言語とか覚えとけば、java やその他の言語にも生かせるが
Perlじゃ「つぶしが利かない」からねぇ。
362:デフォルトの名無しさん
08/02/09 01:38:34
まあ、趣味のプログラマな人間には全く関係ない話題ではあるなあ。
363:デフォルトの名無しさん
08/02/09 01:52:55
ウチの会社なら…履歴書の審査は通るぞ!
(他の履歴とか面接でダメになる可能性はるけど)
364:デフォルトの名無しさん
08/02/09 01:54:14
VBとか書いてあるよりはマシ。
まあ、会社の分野というか方向性によって違うんだろうけど。
365:デフォルトの名無しさん
08/02/09 06:17:51
「特技: 自転車に乗れます」と書くようなもんだからな。
366:デフォルトの名無しさん
08/02/09 06:38:44
参照渡しについて質問。
$a = 'aa';
$b = \$a;
print $$b;
のデリファレンスを
print $b;
この形で行いたいんですが、良い代入方法は無いでしょうか?
*b = *a;は配列とかも同じになるので無しで。
PHPの
$b = &$a;
みたなのを希望。
367:デフォルトの名無しさん
08/02/09 07:02:56
>>366
URLリンク(www.kt.rim.or.jp)
$b = \$a;
368:デフォルトの名無しさん
08/02/09 07:07:50
>>367
ありがとうございます。
読んで来ます。
369:デフォルトの名無しさん
08/02/09 09:14:46
比較で一致しないのはなぜ? 整数だと一致するし、直接比較しても一致する。 $b = $b+0.1;
がみそ?
$a = 5.5;
$b = 4.5;
for($i = 0; $i< 11 ; $i++)
{
if($a == $b)
{
printf("match :");
}
else
{
printf("unmatch :");
}
printf( "%2.2f %2.2f \n",$b,$a);
$b = $b+0.1;
}
結果
unmatch :5.40 5.50
unmatch :5.50 5.50 (- 一致しない
370:デフォルトの名無しさん
08/02/09 09:24:45
>>369
異なる値が一致しないのは当然。
371:デフォルトの名無しさん
08/02/09 09:50:00
浮動小数点を==で比較してはいけない。プログラミングの常識。
372:デフォルトの名無しさん
08/02/09 09:51:09
差の絶対値がある閾値より小さいかどうかで調べるよね。
373:デフォルトの名無しさん
08/02/09 09:58:13
へーそうなんだ。整数しか使ったことがないから知らなかった。
369じゃないけど勉強になったわ。
374:デフォルトの名無しさん
08/02/09 10:12:53
cygwinのPerlだと
perl -e '$A=5.5;$B=5.500000000000001;print "match\n"if $A eq $B'
これがイコールになっちゃうみたいですね
375:デフォルトの名無しさん
08/02/09 11:18:45
浮動小数点表現では0.1が循環小数になる。
(だからお金の計算に浮動小数点使っちゃだめ)
376:デフォルトの名無しさん
08/02/09 12:02:59
>>374
eqの意味知っていて意図的に使ってるの?
377:デフォルトの名無しさん
08/02/09 14:08:21
>>374
こりゃ便利だな。
378:デフォルトの名無しさん
08/02/09 17:17:17
>>371
FAQのようですね。確かに今回初めて浮動小数点の比較を使ったんだけど、知らなかった。
379:デフォルトの名無しさん
08/02/09 17:29:41
>>378
> FAQのようですね。
ちゃう。ちゃんとした教育を受けた人なら、質問を出す前に教わるくらいの事柄。
380:デフォルトの名無しさん
08/02/09 17:32:41
>>375
じゃあ、お金の計算には何使えばいいんだ?
利息計算とかでいやでも小数使うと思うんだが。
381:デフォルトの名無しさん
08/02/09 17:40:17
10進浮動小数点数
382:デフォルトの名無しさん
08/02/09 17:45:35
>>379
スマソ。
教育は受けてない。
383:デフォルトの名無しさん
08/02/09 17:49:14
Perlの場合はBigDecimalだったっけ?
384:デフォルトの名無しさん
08/02/09 18:20:08
>>380
例えば消費税なら価格に5かけてから100で割る。
要するに細かい計算は整数で計算する。
385:デフォルトの名無しさん
08/02/09 18:50:44
それでは、コボラーさんどうぞ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓
386:デフォルトの名無しさん
08/02/09 18:52:56
固定小数点という便利な言い方があると思うんだが(笑)
387:デフォルトの名無しさん
08/02/09 19:02:22
固定小数点でも底が2なら0.1は表せないだろ。
388:デフォルトの名無しさん
08/02/09 20:29:27
ある既存のシステムからもらってきたデータの中に4バイトの単精度実数が入ってるんです。
それを受け取りたいんですが、画面表示すると丸め誤差ってヤツ?が出てしまうんです。
ためしにやってみたこと
$x=pack('f', 123456 ); $y=unpack('f', $x); print $y,"\n";
$x=pack('f', 0.05 ); $y=unpack('f', $x); print $y,"\n";
$x=pack('f', 0.0000001); $y=unpack('f', $x); print $y,"\n";
結果
123456
0.0500000007450581
1.0000000116861e-007
元の数字に戻すには、どうしたらいいですか?
389:デフォルトの名無しさん
08/02/09 20:32:19
>387
「固定少数点」でググれ
390:デフォルトの名無しさん
08/02/09 20:34:52
>388
精度を指定すれば?
391:386
08/02/09 20:36:48
>387
すまん、>384への補足のつもりだったんだ
392:デフォルトの名無しさん
08/02/09 20:52:05
>>390
精度の指定の仕方を教えてください。
393:デフォルトの名無しさん
08/02/10 00:44:37
>>388
$x=pack('f', 0.0000001 ); $y=unpack('f', $x); ($z = sprintf("%.7f\n", $y)) =~ s/\.?0*$//;print $z;
394:デフォルトの名無しさん
08/02/10 16:23:05
標準入力を待つため以下の様に書いたがうまくいきません。
何がまずいのでしょうか。ActivePerl5.8です。
use IO::Select;
$sel = IO::Select->new;
$sel->add(\*STDIN);
while(1){
print "can_read\n";
@a = $sel->can_read;
foreach $fh (@a){
if($fh == STDIN){
print "STDIN\n";
}
exit;
}
}
395:デフォルトの名無しさん
08/02/10 16:51:18
>394
perlport より
>select
>Only implemented on sockets. (Win32, VMS)
396:394
08/02/10 18:23:33
>395
そう言う事かー。納得しました。ありがとうございました。
397:デフォルトの名無しさん
08/02/11 02:25:54
現在、与えられた文字列を読み込み、それを元にHTMLを出力するプログラムを作成しています。
与えられた文字列の中に特定のキーワードを見つけると、それをリンクに変換するようにしたいと考えています。
例:
[google:hoge] → <a href="URLリンク(www.google.co.jp)">Googleでhogeを検索</a>
[mixi:xxxxx] → <a href="URLリンク(mixi.jp)">mixi</a>
URLリンク(xxx.xx)<)">URLリンク(xxx.xx<)
こういった置換を行うコードを1つずつ書くのではなく、
例えば、以下のような置換パターンをセットしたハッシュを用意しておき
%hash = (
'\[google:\w+\]' => '<a href="URLリンク(www.google.co.jp)">Googleで$1を検索</a>',
)
forやforeachで回しながら自動的に置換したいのですが、どのようにすればよいでしょうか。
(エンコードとかは考えない方向で)
foreach my $key (keys %hash)
{
$input_str =~ s/$key/$hash{$key}/g;
}
とやった場合、変換後の文字列の中に「$1」そのものが入ってしまいます。
398:デフォルトの名無しさん
08/02/11 02:29:35
$input_str =~ s/$key/$hash{$key}/gee;
できるかは知らん
399:デフォルトの名無しさん
08/02/11 10:43:55
>>397
クロスサイトスクリプティングって知ってるか?
素人のCGI作成は法律で禁止して欲しい。
400:デフォルトの名無しさん
08/02/11 11:28:03
>>397
答えそのものは書かないけど、以下のことが必要。
'\[google:\w+\]'の部分は'\[google:(\w+)\]'でしょうね。そうしないと
$1で受け取れないから。
置換をするなら、
$input_str =~ s/$key/conv($1, $hash{$key})/eg;
などとしておいて、
sub conv {
my ($word, $str) = @_;
$str =~ s/\$1/$word/g;
$str;
}
などとでもしておくとか。
で、
URLのクエリー部分に仕込む文字列はURIエスケープが必要。
そんで、マルチバイトの場合、どの文字コードにしてからエスケープするかも
考える必要あり。
さらに、<a>と</a>の間の文字列に使用するときはサニタイズ処理が必要(XSS対策)。
>>398 の方法だと、perlコードをそのまま解釈してしまうので、別の危険あり。
「与えられた文字列」は誰が与えるのかがとても大きな問題です。
URLにリンクを張るのは、大崎氏のPerlメモが使えると思います。
401:デフォルトの名無しさん
08/02/11 11:57:26
>399
もちろん知ってます。
置換条件と置換パターンを配列などに保持しておく(または外部から読み込む)という考え方自体が
セキュアではないということでしょうか?
>400
( )で括って無かったのは書き込み時のミスです、すみません。
手元のソースでは書かれてたんですが、適当な条件に直すときに忘れてしまったようです。
402:デフォルトの名無しさん
08/02/11 12:22:23
置換パターンにperlの$1を流用しようとしてるところがセキュアでない。
'<a href="URLリンク(www.google.co.jp)(utf8)}">Googleで${1:htmlsafe}を検索</a>'
とかして、これを解釈するようにすればよい。
403:デフォルトの名無しさん
08/02/11 17:27:17
ありがとうございます。
自分用のツールをさくっと作るつもりだったけど、そこまでやろうとすると手間かなあ。
誰かモジュール作ってるかもしれないけど。
404:デフォルトの名無しさん
08/02/11 18:12:59
質問です。
'おまんこ'も'おちんこ'もマッチしないのですが、どこか間違いあるのでしょうか?
use strict;
use warnings;
use utf8;
binmode STDOUT, ':utf8';
while (my $str = <STDIN>) {
chomp($str);
last if ($str eq 'end');
if ($str =~ /お.んこ/) {
print "$& --- マッチしたお\n";
} else {
print "マッチしないお\n";
}
}
405:デフォルトの名無しさん
08/02/11 18:16:55
binmode STDIN, ':utf8';
追加したらマッチしますた。
406:デフォルトの名無しさん
08/02/12 05:34:25
質問です。
use Encode;
binmode STDOUT, ':iso-8859-1';
open READ , '<:encoding(utf8)', "$ARGV[0]" ;
while (my $data = <READ>){
print "$data";
}
close READ;
exit;
でutf8でencodeされたファイルをiso-8859-1に変換しようとしたら、
標準出力ではうまくいって、リダイレクトすると文字化けしました。
おわかりになる方、いらっしゃるでしょうか。
407:デフォルトの名無しさん
08/02/12 05:45:10
lv でみれないだけで、less したらみれました…すいません。
408:デフォルトの名無しさん
08/02/12 09:07:43
>>407
lvのほうがlessより優秀ってイメージなんだけど、lvが文字コードを誤判定しちゃったのかな。
409:デフォルトの名無しさん
08/02/12 12:12:12
use CGI;
my $delimiter = "\t";
my $q = new CGI;
my $save = $q->param('name') . $delimiter . $q->param('mail');
my ($name, $mail) = split /$delimiter/, $save;
入力はHTMLフォームからを想定しています。
こういった場合に適切なデリミタは何でしょうか。
たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし
\tは入力が可能、\0は良い方法だと思いますがCGI.pmと衝突します。
\a等が良いのでしょうか。
410:デフォルトの名無しさん
08/02/12 12:14:45
× たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし
○ たまに<>を見かけますが<>を<>に変換してる場合じゃないと有効で無いですし
ミスりました汗
411:デフォルトの名無しさん
08/02/12 12:52:41
板違いっぽいがスペースじゃだめ?
412:デフォルトの名無しさん
08/02/12 13:13:53
$save の前に入力チェックしてタブ文字を消せばいいだろ
413:デフォルトの名無しさん
08/02/12 14:12:21
my $save = join("&&", map { my $i = $q->param($_); $i =~ s/&/&/g; $i } ("name","mail"));
my($name,$mail) =~ map { s/&/&/g; $_ }(split("&&",$save));
414:デフォルトの名無しさん
08/02/12 18:08:01
>>409
<SOME_UNPREDICTABLE_STRING_XXX> でおk
415:デフォルトの名無しさん
08/02/13 11:16:04
投資家板で名高いプログラマの書いたコードですが
初心者が多く、下記コードについて評価できません
プロの目から見た下記コードの評価を教えて下さいませ
スレリンク(market板:454番)
$vict++;
$vict100++;
print $_ ."$riekiプラス!持ち越し成功!\n";
}
if($end < $start2){
$loss=$start2-$end;
$loss=~s/\-//;
$totall =$loss + $totall;
$totall100 =$loss + $totall100;
$lost++;
$lost100++;
print $_ ."$loss マイナス!持ち越し失敗!\n";
}
}
416:デフォルトの名無しさん
08/02/13 11:16:34
つづきです
if(($cost < 1000)&&($cost > 300 )){
if($end > $start2){
$rieki=$end -$start2;
$rieki=~s/\-//;
$totalr =$rieki+$totalr;
$totalr1000 =$rieki+$totalr1000;
$vict++;
$vict1000++;
print $_ . "$riekiプラス!持ち越し成功!\n";
}
if($end < $start2){
$loss=$end-$start2;
$loss=~s/\-//;
$totall =$loss + $totall;
$totall1000 =$loss + $totall1000;
$lost++;
$lost1000++;
print $_ . "$lossマイナス!持ち越し失敗!\n";
}
417:デフォルトの名無しさん
08/02/13 11:22:13
>>415
前の部分が欠けてて途中からになってるけど…?
418:デフォルトの名無しさん
08/02/13 11:35:29
書きかたはまるっきり初心者
処理内容としては
1.コストで場合分け(ここで見えてるのは300から1000まで)
2.スタートとエンドの差をとって,スタートがエンドより低ければ利益,逆なら損害として出力
3.利益または損害をトータルに加算
4.利益の出た回数と損害の出た回数をカウント.コストの範囲ごとにもカウント
なんつうか小学生でも計算できる内容だ
419:デフォルトの名無しさん
08/02/13 11:43:46
計算さえ出来ればいいんでしょ?
合ってりゃいいと思うよ
420:デフォルトの名無しさん
08/02/13 11:54:35
>>415
軽くスレ読んだが名高いプログラマじゃなくて単に周りに避けられてる面倒くさい人じゃん。
コードは上で言われてるように初心者でも書ける程度のもん。
プログラム書かない人にけん制になると思ったのかもしれんが
こんなの書いて自慢する人より電卓持ってる事務員のがずっとマシ。
421:デフォルトの名無しさん
08/02/13 12:08:22
ちゃんと動いて計算が合ってるならいいんじゃないの?
それ以外に評価しようが無い。
422:デフォルトの名無しさん
08/02/13 12:11:02
「名高いプログラマ」ってとこは確かにどうかと思うコードではあるw
423:デフォルトの名無しさん
08/02/13 12:17:13
あっちのことはよく知らないけど,変な演算する能力よりもデータを見極める目のほうが大事なんじゃないの?
424:デフォルトの名無しさん
08/02/13 12:25:14
主婦が、余った材料で栄養バランスの取れた料理を作るようなイメージ。
プロの料理人と比較しちゃいけない。
425:デフォルトの名無しさん
08/02/13 12:27:12
典型的なうんコードだな
426:デフォルトの名無しさん
08/02/13 12:31:07
>>421
あ、ごめん。機能満たすだけなら充分。
でも向こうのでの使い方が目的あって出してるコードじゃなく
素人にコード見せて牽制してるだけだからこんなの自慢にならんなぁって。
427:デフォルトの名無しさん
08/02/13 12:36:31
データを集積して処理するならともかく、この程度のことなら電卓+ノートのほうがいいと思うがな
428:デフォルトの名無しさん
08/02/13 12:40:32
サイタマン は やっぱり うんこだった!
429:415のスレ住人
08/02/13 12:41:56
名高いプログラマーというより彼は社長だそうです。
年収3000万だったそうです。
ですからプログラムの内容というよりは
アイデアで儲けている方なのかもしれませんね。
真実が定かでは無いのですが彼がIT企業の社長という点はどう思われますか?
430:デフォルトの名無しさん
08/02/13 12:42:37
>>424
だが余った食材をそのまま食べたほうが味も見た目も栄養も手間も優れていたというパターン
ただの自己満足にしかなってないという…
431:デフォルトの名無しさん
08/02/13 12:43:04
こっちに来られると困るからノーコメント。
432:デフォルトの名無しさん
08/02/13 12:44:33
内容云々じゃなくて、これくらいすばらしいコードを書けるスキルがあれば年収2000万くらいは最低限ある、
という内容のことを言っていたのですが、株板では判断できる人が少なかったので参考になりました。
433:デフォルトの名無しさん
08/02/13 12:45:27
__ ♪
ヨホホ♪ \ \ ♪
\/ `' ==‐‐-- 、 ♪
ξミミミミミ ./\ .ヽ,
. |´_`| / .\ ,l
/.__) ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄|
~l└‐L、 _,==.,――=,==r′
l~~`ゝつ.l l |||/ | l´ l |
. ´|| ̄||´ |.|≠ || ||
434:デフォルトの名無しさん
08/02/13 12:46:12
>>429
とりあえず
2chに入りびたってコテハンつけてる
そんなIT社長はイヤだ
435:デフォルトの名無しさん
08/02/13 12:46:21
サイタマン社長の名言集です。
どうぞ全部読んであげてください
スレリンク(market板)l50
436:デフォルトの名無しさん
08/02/13 12:46:32
__,,γ⌒ヽ _
,,-''", ―‐―イ―ュ---、,,,,,,,,,,_ 三\
/ ∠ ム_ゝ三i二二(山山アヲ -= 二)
γ √ イ,, -" .三/
.ん、_(γ7''"  ̄
r㍉,ノ''こ!、,,┴.
.| ‘''く′ ,/ │
.r'ヘ,、 `'イ゙>'"
.厂|,`'-,, .|'ヽ、
.~へ-―‐^''ー"
437:デフォルトの名無しさん
08/02/13 12:47:22
「○○なら年収○○万くらいは最低限ある」 なんて言い方する時点で中二病
ここは2chだぞ
438:デフォルトの名無しさん
08/02/13 12:48:36
個人のスレがたってるような奴を信じるなよw
439:デフォルトの名無しさん
08/02/13 12:50:03
>>437
投資板はcisっていうイレギュラーの塊のような人が住んでるから
うそつきが住みやすいんですよ
440:デフォルトの名無しさん
08/02/13 12:51:27
コテで自慢する人は注目されたいだけ。
>>435
いりません。お引き取りください。
441:デフォルトの名無しさん
08/02/13 12:51:27
2レス目まで読んだ
Results 1 - 10 of about 1,040 Japanese pages for 金拝主義. (0.21 seconds)
Results 1 - 10 of about 5,450 Japanese pages for ボラリティ. (0.14 seconds)
Results 1 - 10 of about 3,130,000 Japanese pages for シュミレーション. (0.10 seconds)
Results 1 - 7 of 7 Japanese pages for イートレイドワラッパー. (0.35 seconds)
プロフィールをていぞう
愚かの骨頂
個性的な語彙を持ってることはわかった
442:デフォルトの名無しさん
08/02/13 12:51:45
サイタマン社長はゴールドカードもupしてるし
信じたいんですがやっぱり嘘なのでしょうか。
客観的に見てあのくらいのプログラムが書ければ年収二千万はいけるのでしょうか
443:デフォルトの名無しさん
08/02/13 12:53:43
>>442
すでに必要な情報は提示されてる。あとは自分で考えれ。
ここは2chだぞ。
444:デフォルトの名無しさん
08/02/13 12:55:09
おー。変数名に数字つかうってスゴいセンスだな。
でどこの幼稚園の子供よ?
445:デフォルトの名無しさん
08/02/13 12:55:13
これだけ持ち上げられるってことはなにか持った奴なんじゃない?
446:デフォルトの名無しさん
08/02/13 12:57:50
どうやら面白ワード生成機として有名みたいだな。
447:デフォルトの名無しさん
08/02/13 12:59:57
サイタマン先生の今までupした物は
200万円くらいのお金と60万円の証券会社の口座と
ゴールドカード4枚ですね。
プログラムのスキルでよく株のツールなどを作ろうかなどと言ったりします
448:デフォルトの名無しさん
08/02/13 13:12:34
>>447
なんだかんだで君も彼にぞっこんっぽいなw
449:デフォルトの名無しさん
08/02/13 13:14:02
>>446
2ch語を適当に組み合わせるしか脳のない「普通の厨」なら、
似たようなクオリティの人工無能も書けるかもしれないけど、
天然素材は模しようがないなw
450:デフォルトの名無しさん
08/02/13 13:19:08
>>449
実は本人はスーパーハカーで,2chに書き込んでるのはサイタマンに作られた人工知能なんじゃないか…
そしてあのコードも学習して自動生成されたんじゃないかと妄想してみたwww
451:デフォルトの名無しさん
08/02/13 13:29:30
>>447
ゴールドポイントカードならぼくも持ってるよ。
452:デフォルトの名無しさん
08/02/13 13:33:07
ま、スレ違いだから去れ
453:デフォルトの名無しさん
08/02/13 15:54:58
aaa1 aaa2 aaa3 aaa4 というファイルがあったときに
通番どおりに結合して1つの出力にする上手い方法ありませんでしょうか?
454:デフォルトの名無しさん
08/02/13 15:59:00
cat 呼び出す
455:453
08/02/13 18:25:02
>>454
ありがとうございます。
catは盲点でした。無事解決しました。
456:デフォルトの名無しさん
08/02/13 18:31:44
配列のなかに配列を複数持っている場合
それらをうまく結合する手段ってないでしょうか?
具体的には以下のような感じです
@array[1] = {aaa, bbb}
@array[2] = {ccc, ddd}
@array[3] = {eee, fff}
このとき、一つの変数にまとめて
{aaa, bbb, ccc, ddd, eee, fff}
となるようにしたいです。
申し訳ないのですが、知恵を貸してください。
457:デフォルトの名無しさん
08/02/13 18:46:13
544 :デフォルトの名無しさん:2007/05/12(土) 02:54:05
深さのある配列を左から順番に呼んでフラットな配列を作りたいんですが、
よい方法ご存知の方いませんか
@a = ([1,2,3], [4,5,6], [[7,8],[9,0]]);
@b = flatten(@a); # 1,2,3,4,5,6,7,8,9,0
546 :デフォルトの名無しさん:2007/05/12(土) 03:16:52
>>544
sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ }
こんなんどうよ。
458:デフォルトの名無しさん
08/02/13 19:26:12
>>457
456です、回答ありがとうございます。
しかしながら、私が挙げた例の場合にはどのように用いればよいか分からず困っています。
ヒントだけでもいただけないでしょうか?
459:デフォルトの名無しさん
08/02/13 19:29:20
{}はハッシュだろ
460:デフォルトの名無しさん
08/02/13 19:31:12
>>459
理解できました、ありがとうございます!
461:デフォルトの名無しさん
08/02/14 00:42:53
Pgを使って(DBIじゃなく)複数スレッドから同時にDBアクセスを使用と思います。
DBへの接続は各スレッドで行います。
Perl自体はスレッドに対応していても、関連モジュールとかの対応状況がわかりません。
バージョンは以下の通りです。
Perl 5.8.8
libpg 2.1.1
PostgreSQL 8.1
ディストリビューションは、Debian etchです。
スレッドの方が子供の面倒が見やすそうなので、できればスレッドにしたいのです。
462:デフォルトの名無しさん
08/02/14 01:19:43
で、自分では試したくないので、だれかヒマなヤツ、オレのかわりに試してくれんか。
オレは家でゴロゴロしてアニメ観るのに忙しいから。
・・・とか?
463:デフォルトの名無しさん
08/02/14 01:27:23
いえ、アニメじゃないです。 アニメの実写劇場版です。
464:デフォルトの名無しさん
08/02/14 21:24:49
>>462
せっかくぼけてくれたところをマジレスすると、試して問題なかったからと言って、スレッドに対応しているとは限らないから困ってるんです。
たまたま動いているだけってことがあるし。
465:デフォルトの名無しさん
08/02/15 09:03:33
perl5.10が普及するのっていつごろ?
466:デフォルトの名無しさん
08/02/15 22:25:02
>>464
その当たりの情報は、ソースやリリースノートを追うしかないと思う。
やたら古くてあまり参考にならないけど
URLリンク(homepage3.nifty.com)
467:デフォルトの名無しさん
08/02/16 02:06:19
ActivePerlの5.10の最新版(ほかいくつかのバージョン)で、
ppm search (モジュール名)
でモジュールをネットから探してくれないのですが、
何か指定が必要でしょうか。
468:デフォルトの名無しさん
08/02/16 02:59:34
>>467
5.8 と5.10ではバイナリ互換性がないので、単に5.10向けにビルドしたのがないと思われる。
469:デフォルトの名無しさん
08/02/17 01:17:31
winで、perlからmysqlを使っているのですが、
insert into a(a) value("あ");
コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。
470:デフォルトの名無しさん
08/02/17 03:10:36
>>469
向こうの(mysql)スレでも言われているように、mysqldのdefault-charsetは確認したか?
471:デフォルトの名無しさん
08/02/17 09:58:05
はい、sjisになっていて、win なのでPerlで書いているソースもそうじゃないかと。
472:デフォルトの名無しさん
08/02/17 11:02:29
>>471
ほんじゃ、unpack()つかって、バイナリの並びを表示して確認してみるとか?
473:デフォルトの名無しさん
08/02/17 11:04:16
>471
最近の Perl は内部 UTF-8 だべ。
474:デフォルトの名無しさん
08/02/17 12:00:13
>>471
>>470で聞いたのは、mysqldの’connect’と’client’のcharsetのこと。
mysqldのversionを明記してないけど、多分4.1か5.0だと仮定して、
perl-DBD-mysqlで接続したときの、default-charsetがちゃんと’sjis’なり’cp932’になってない。
(mysqldとDBD-mysqlを自前でコンパイルしてない限り)
つうことでそこを確認、変更しましょう。
ちなみに>>469で書いてるみたいに、コマンドラインのmysql.exeからLoginして確認した
’charset’関係は、あくまでもコマンドラインのmysqlからの接続時のみに効いてる状態なんでそれとは別。
475:デフォルトの名無しさん
08/02/17 13:47:20
>>469
insert 以前にさ、select はうまくいくの?
初心者なら、簡単な事からはじめてみよう。
use utf8;
use DBI;
my $db = DBI->connect("DBI:mysql:以下省略・・・
$db->do('SET NAMES UTF8');
$id = 1;
my $sql = "SELECT name,address FROM members WHERE id=$id;";
my $sth = $db->prepare($sql);
$sth->execute or die DBI::errstr;
$sth->bind_columns(undef, \(my($M_name,$M_address))) or die DBI::errstr;
my $rc = $sth->fetch();
utf8::decode($M_name);
utf8::decode($M_address);
insert はこの逆をすればいいだけ。
476:デフォルトの名無しさん
08/02/17 16:29:46
設問1
f-e-d-c-b-a-0-a-b-c-d-e-f
477:デフォルトの名無しさん
08/02/17 16:31:00
設問2
9-8-7-6-5-4-3-2-1-X-1-2-3-4-5-6-7-8-9
478:デフォルトの名無しさん
08/02/17 17:13:02
以下の問題を定義しなさい。
1{"f" = "-f == f" && "+f == f"}
2{"9" = "-9 == 9" && "+9 == 9"}
3{構成文省略}
"9" は "f" に等しく、また "-9" は "-f" に等しい
"0" は "X" に等しいので "0" == "X" = "n" とする
先ず此の構成を "x,y,z && n" を成型にしなさい
また "n" は "y" で在り "9…0…9" まで存在する
しかし "n = y" の配列は"次の"配列 "9…0…9" を使用する事!
残された "9…0…9" は "1/3" の後の "1/4" で使うが?
"n" == "0 = X" && "x,y,z" = "x,y,z" == "n/4" に為りますが構成は入り組んで居りますね?
479:デフォルトの名無しさん
08/02/17 17:17:15
日本語が苦手なら英語でおk
480:デフォルトの名無しさん
08/02/17 17:19:52
どちらのお国のガイジンさんですか
481:デフォルトの名無しさん
08/02/17 17:26:21
宿題は自分でやるか先生に聞きなさい。ためにならん。
482:デフォルトの名無しさん
08/02/17 17:26:35
いくらなんでも丸投げすぎワロタw
483:デフォルトの名無しさん
08/02/17 17:28:26
解読できません><
誰か和訳たのむ
484:デフォルトの名無しさん
08/02/17 18:52:46
>>476-478
くだらねぇ問題はここへ書け ver.3.14(57桁略)4592
スレリンク(math板)
485:デフォルトの名無しさん
08/02/17 20:29:46
>>476
ん?
>>477
え?
>>478
パルプンテ
486:デフォルトの名無しさん
08/02/17 21:40:18
>>478
居りますよ
487:デフォルトの名無しさん
08/02/17 22:24:11
おちんちんの傘のまわりに小さいギザギザがあるんですが
医者に見せたほうがいいですか?
488:デフォルトの名無しさん
08/02/17 22:28:07
>>487
このスレ的には大きなツブツブのほうが好まれますね
死ね
489:デフォルトの名無しさん
08/02/18 21:53:13
active perl をダウンロードしようと思い
URLリンク(www.activestate.com)
にいったのですが
久々に訪れてみたら、
ずいぶん様子が違いダウンロードする場所がわかりません
どこにあるのでしょうか
490:デフォルトの名無しさん
08/02/18 21:55:36
URLリンク(www.activestate.com)
491:デフォルトの名無しさん
08/02/18 21:58:52
>>490
即答ありがとうございます 助かりました
492:デフォルトの名無しさん
08/02/18 23:48:34
XML処理用のマッピングファイルを以下を参考にして作成しました。
URLリンク(homepage3.nifty.com)
作成したマッピングファイルは、規定のディレクトリに置けば良いのですが、
ローカルディレクトリに置いたまま使用したいと考えています。
任意のディレクトリをマッピングファイル検索パスに追加する方法はあるのでしょうか?