Perlについての質問箱 ..
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じゃ「つぶしが利かない」からねぇ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4963日前に更新/153 KB
担当:undef