Perlについての質問箱 ..
[2ch|▼Menu]
237:デフォルトの名無しさん
08/08/23 00:02:15
>>236
言いだしっぺの法則は、「お前がやれ」って返って来る法則のことじゃないのか?

238:デフォルトの名無しさん
08/08/23 00:10:39
>>237
いなかっぺ大将は、「キクしゃん、ハナしゃんと西一の三角関係」を描いた物語ですよ確か。

239:デフォルトの名無しさん
08/08/23 00:49:44
>>238
違うダス!
わしとキクしゃんの恋愛物語なんダス!

240:デフォルトの名無しさん
08/08/23 08:37:58
かなりのおっさんがいる?

241:デフォルトの名無しさん
08/08/23 17:41:35
にぎりっぺ

242:デフォルトの名無しさん
08/08/23 18:58:42
ActivePerl v5.10.0 を使用しています。

LWP::UserAgent を使用して、たとえば URLリンク(mixi.jp) に接続すると、
Client-SSL-Warning: Peer certificate not verified がレスポンスヘッダに出てくるのですが、
これを解消するためにはどうすればよいのでしょうか。

243:デフォルトの名無しさん
08/08/23 19:16:50
Crypt::SSLeayを入れる

244:デフォルトの名無しさん
08/08/23 19:19:37
Crypt::SSLeay は 0.57 が入っていました。

245:デフォルトの名無しさん
08/08/23 21:01:55
OSはWindows2000でActivePerlについての質問です。

よくCPANから○○をとってきてインストールしろとか
みますが、Activeperlを使っている人は、PPMで
インストールできるモジュールしか使えないのでしょうか?
PPMのインストールのメニューに出てくるという意味です。

246:デフォルトの名無しさん
08/08/23 21:07:55
PPMを起動すると、
URLリンク(kazato.run.buttobi.net)
こんな画面がでてきて、ほしいファイルを右クリして
インストールする仕組みになっています。
これって誰が管理しているか知りませんが、
たぶんactivestate社がやってるんですよね。
で、PPMのメニューに出てこないものは
インストールできないのかなと。

247:デフォルトの名無しさん
08/08/23 21:09:17
最近perlも飽きてきた。
どの入門書読んでも、だいたい同じこと書いてあるから。

で、今日はレファレンスについて勉強してみようと思いますが、
グーグルで検索するときに、レファレンスなのでしょうか?
それとも、リファレンスなのでしょうか?

248:デフォルトの名無しさん
08/08/23 21:17:47
ぐぐれカスとも言えない新技だな

249:デフォルトの名無しさん
08/08/23 21:51:20
>>247
両方ぐぐれよ。
あるいはreferenceで。

250:デフォルトの名無しさん
08/08/23 22:12:34
>>245
やってやれないことはないけど、気合と根性が必要。
俺はPPMに無いものはCPANからアーカイブを取ってきてMinGW+nmakeでインストールしてる。
が、Windowsには類似のAPIがない、UNIXべったりのモジュールには苦戦してる。
(同じ機能はあってもAPIの仕様が全然違う)

251:デフォルトの名無しさん
08/08/23 23:53:26
セーブファイルをネット上に保存する、ってのは
かんたんにできるのかな。

アップローダーみたいな、、、っていうのかな?

print (FILE www.abc.com/abc.txt);

みたいな。

252:デフォルトの名無しさん
08/08/23 23:56:31
以下のように@とかそういうのを全部変換したくて延々書いているのですが、
速く処理出来るようにするにはどのようにしたらよいのでしょうか?

$str=~s/T/1/g;
$str=~s/U/2/g;
$str=~s/V/3/g;
$str=~s/W/4/g;
$str=~s/X/5/g;
$str=~s/Y/6/g;
・・・
$str=~s/@/(1)/g;
$str=~s/A/(2)/g;
$str=~s/B/(3)/g;
・・・


253:デフォルトの名無しさん
08/08/23 23:58:38
アロー演算子っていうのは、
ハッシュのレファレンスを表すときにしか
使わないんですか?

254:デフォルトの名無しさん
08/08/24 00:01:07
>>252
コーディングの行数を減らしたいってこと?
コンピューターの処理速度を速くしたいってこと?

255:デフォルトの名無しさん
08/08/24 00:03:32
$str=~tr/T-]/1-10/g;
$str=~tr/@-I/(1)-(10)/g;

これだと動かないかな。

256:デフォルトの名無しさん
08/08/24 00:15:10
use strict 'refs';

↑これって書かないと動かないの?
それとも、use strictを書けば、その中に含まれるの?

257:デフォルトの名無しさん
08/08/24 00:37:44
ha??

258:デフォルトの名無しさん
08/08/24 00:44:24
>251
自分のパソコンと相手のパソコンが繋がれてあったとして、
こちらのパソコンを操作するだけで相手のパソコンのHDDに書き込むことができるか?という問いに近い。

>252
ローマ数字に対応してるかどうか分からんけど、Unicode::Normalizeとかは?



ギャル文字の正規化めんどくせぇなあ……(ぼやき)


259:デフォルトの名無しさん
08/08/24 00:44:35
>>254
処理速度のほうです。

>>255
有り難う御座います。
$str=~tr/@-I/(1)-(10)/;
$str=~tr/@-H/1-9/;

上の方法では出来ず、下の方法では出来ました。
括弧を付ける方法とかあるんでしょうか?

260:側近中の側近 ◆0351148456
08/08/24 00:54:15
>>259
(っ´▽`)っ
$str=~tr/@-I/\(1\)-\(10\)/;
ではどうだ?

261:デフォルトの名無しさん
08/08/24 01:26:01
>260
そーゆーことじゃなくね?

262:デフォルトの名無しさん
08/08/24 01:53:33
# tr/// が、正規表現とは関係がなく、また文字列を置き換えるものでもないという点は FAQ にも程があるんでこれ以上は自分で調べてもらうとして。

sub to_arabic_number {
my $str = $_[0];
my @circles = qw/@ A B C D E F G H I
J K L M N O P Q R S/;
my @romanU = qw/T U V W X Y Z [ \ ]/;
my @romanL = qw/@ A B C D E F G H I/;

my $i = 1;
foreach (@romanL) {
$str =~ s/$_/$i/g;
$i++;
}
$i = 1;
foreach (@romanU) {
$str =~ s/$_/ $i/g;
$i++;
}
$i = 1;
foreach (@circles) {
$str =~ s/$_/ ($i)/g;
$i++;
}
return $str;
}

263:262
08/08/24 01:58:58
P.S. >>260 は釣りなのかネタなのか知らんが、武士の情けで見逃してやるから人生やり直して来い。

264:デフォルトの名無しさん
08/08/24 02:08:50
>>262
さすがにそのコードは人に見せられるレベルじゃないだろ…

265:デフォルトの名無しさん
08/08/24 02:10:41
>>262
有り難う御座います。
処理速度は遅いような気がするのですがどうでしょうか。

266:デフォルトの名無しさん
08/08/24 02:14:28
>>262よりは>>252のほうがいいと思うよ

267:デフォルトの名無しさん
08/08/24 02:20:31
>>262は嫌がらせ。


268:デフォルトの名無しさん
08/08/24 03:10:52
use feature qw( :5.10 );
use Time::HiRes 'sleep';
system q|cls|;
#----------------------------------
my @a;
@a=localtime;
sleep(.5);
say "\@a=@a[0..8]";
sleep(.5);
say "scalar(localtime)=",scalar(localtime);
sleep(.5);
say "localtime=",localtime;
sleep(.5);


localtimeという関数はホンマおもしろいなー
3通りもの出力があるんだから。

269:デフォルトの名無しさん
08/08/24 03:49:57
oracleにselect文を実行したときの取得レコード件数が知りたいんですが何か方法ありますか?
phpだとmysql_num_rows()とか便利なのあるんですけど、perlだとわかんないorz

270:デフォルトの名無しさん
08/08/24 04:00:20
エスパー期待してるんですか?

271:デフォルトの名無しさん
08/08/24 04:06:30
しゃぶりついてくるやつ期待してるんだろう。



272:デフォルトの名無しさん
08/08/24 04:17:54
いや、だから、
oracleにselect文を実行したときの取得レコード件数を
知るための関数でしょ?

273:デフォルトの名無しさん
08/08/24 04:18:41
ところで、ファイルに引数を食わせるときに、
スペース混じりの引数を食わせるには、
どうしたらいいですか?

274:デフォルトの名無しさん
08/08/24 04:42:39
URLリンク(www.aritia.org)

ここ読んでたら、なんか
日本語のファイル名も扱える
みたいじゃないですか。
どうやるの?

275:デフォルトの名無しさん
08/08/24 04:48:27
use feature qw( :5.10 );
system q|cls|;
#----------------------------------
"abcde" =~ m/b(.)d/ ;
say "$1";


↑これを実行すると、c、と出てきますが、
ここの$1は、ソースコードの、どこまで有効なの?

ずーっと後ろまで?

276:262
08/08/24 05:01:37
>>265
遅いよー。
括弧を考えず、一桁でいいなら tr/// のが高速。
でも文字列単位の置換、文字数の異なる置換に対応できない。
速度的には、サブルーチンにせず >>266 の言うように全部インラインで書いたほうがマシ。

@circle_patterns = ();
foreach (@circles) {
push @circle_patterns, qr/$_/;
}
# (以下必要なセットで繰り返す)
# とあらかじめ準備しておいて、
# 置換ループに入ったら、

$i = 1;
foreach (@circle_patterns) {
$str =~ s/$_/($i)/;
$i++;
}
# (以下必要な...略)
# などとやればちょっとは速くなる気がする。

置換対象が行数の多いファイルなら、一気読みで $str にひとつにまとめて突っ込んでしまうのも手。
データの傾向やらで効果的な最適化は変わるだろうから、いろいろ試して比較してみてね。

277:デフォルトの名無しさん
08/08/24 05:01:39
>>262
w

278:デフォルトの名無しさん
08/08/24 05:04:26
Win32::Soundとかっていう書き方、あるじゃないですか。
これってPerlの世界でのみ、通用するものなの?

それとも、一度おぼえたら、他の言語にいっても通用するの?

279:デフォルトの名無しさん
08/08/24 05:13:04
$str=~ s/[@-I]/($&)/g;
$str=~ tr/@-H/1-9/;
$str=~ tr/T-\/1-9/;
$str=~ s/[I]]/10/g;


280:デフォルトの名無しさん
08/08/24 05:15:05
$str=~ s/[@-I]/($&)/g;
$str=~ tr/@-HT-\/1-91-9/;
$str=~ s/[I]]/10/g;


281:デフォルトの名無しさん
08/08/24 05:16:29
>>276は嫌がらせの激遅コード


282:262
08/08/24 05:18:44
>>279
GJ
せっかくだからさらにちょっとだけ性能改善。
# 最近の perl では $& のオーバーヘッドってどうなってんだろね?

$str=~ s/([@-I])/($1)/g;

283:デフォルトの名無しさん
08/08/24 05:33:01
sでも文字クラスって使えるんだ?

284:デフォルトの名無しさん
08/08/24 05:54:56
>>269
$sth -> rows;
のことか?

285:デフォルトの名無しさん
08/08/24 08:47:06
うちのバイト募集に>>262みたいのが来たら、即座に却下だな。

つーか、ゴミでスレを埋め尽くすのはいいかげんやめておくれ。

286:デフォルトの名無しさん
08/08/24 11:02:53
初心者です。

配列かなんかに保持しておいて、ループさせるという考え自体は悪くない……ですよね?
よほど速度がクリティカルになる状況じゃなきゃ、そこまで酷いとも思えないし。

287:デフォルトの名無しさん
08/08/24 12:10:50
私初心者だけどクリティカルな状況でなければさほど酷くもなかろう
と言われましても。

288:デフォルトの名無しさん
08/08/24 12:13:55
こんなのはいかが

my @circles = qw/@ A B C D E F G H I J K L M N O P Q R S/;
my @romanU = qw/T U V W X Y Z [ \ ]/;
my @romanL = qw/@ A B C D E F G H I/;
my %hash = ();
%hash = (%hash, map { $circles[$_-1] => "($_)" } 1..20);
%hash = (%hash, map { $romanU[$_-1] => $_, $romanL[$_-1] => $_ } 1..10);

sub to_arabic_number {
    my $str = shift;
    $str =~ s/([@-ST-]@-I])/$hash{$1}/ge;
    $str;
}

289:デフォルトの名無しさん
08/08/24 12:22:13
>>288
[参考になる+11]

290:デフォルトの名無しさん
08/08/24 12:54:50
>>288
やるならとことん逝こうぜ。個人的には%hashを全書き換えしてるのが気になる。

my @nums = (
[qw(@ A B C D E F G H I J K L M N O P Q R S)],
[qw(T U V W X Y Z [ \ ])],
[qw(@ A B C D E F G H I)]
);
my %hash = map {
my $num = $_;
map {$num->[$_ - 1] => "($_)"} 1..(scalar(@$num))
} @nums;
my $re = join("", map {$_->[0].'-'.$_->[$#$_]} @nums);

sub to_arbic_number {
local $_ = shift;
s/([$re])/$hash{$1}/geo;
return $_;
}


291:デフォルトの名無しさん
08/08/24 13:01:27
-------------
>>276
>>288
ありがとうございます。参考になります。
eって遅くなるのかと思って試してませんでした。
文字数によってはeを利用したほうが速くなりそうですね。
単純に-で繋げて表現出来ない文字列も多いので、eが有用というのは私的には!!でした。
色々試してみます。ありがとうございます。

-------------
>>280
>>282
ありがとうございます。そういう方法もあるのですね。一つ一つ書いていくより
かなり速くなりました。
I-Sの場合が無いのでまだ速度を比べられないのですが、この場合はどのよう
にしたらよいのでしょうか?

trではやはり2文字になるのでダメで、一つ一つ書いていく方法しか思い浮かば
ないのですが、方法はないのでしょうか?


292:デフォルトの名無しさん
08/08/24 13:04:26
■■学校を作ろう!■■
VIP発でサイトを作ろうと思うんだ。(詳しくはWikiを見てくれ)
パートスレになるんでパー速(GEP)に移動している。
今スタッフを募集しているから、来てくれないか?

■Wiki
URLリンク(www36.atwiki.jp)
■募集スタッフ
プログラム担当(特にErlang、Perl)
デザイナー(サイト上のアイコン、ロゴなど)
WEBデザイナー(サイトデザイン案に沿って、htmlやCSSを書ける)
他にも宣伝担当なども募集している。
■スレ
URLリンク(ex14.vip2ch.com)

293:デフォルトの名無しさん
08/08/24 13:07:34
見てもらったらわかるが、IRC・スレともに過疎って今にも潰れそうだから行かないほうがいいぞ

294:デフォルトの名無しさん
08/08/24 14:16:48
>287
具体的に何が悪いかを指摘せずに、ソースだけ書かれても
後から見た人は困るって意味さ

295:デフォルトの名無しさん
08/08/24 15:46:25
$str=~ s/([@-H])/($1)/g;
$str=~ s/([I-R])/(1$1)/g;
$str=~ tr/T-\@-HI-R/1-91-90-9/;
$str=~ s/]/10/g;
$str=~ s/S/20/g;


296:デフォルトの名無しさん
08/08/24 15:54:45
>>286
君はプログラミングは諦めて他の道へ進んだ方がいい

297:デフォルトの名無しさん
08/08/24 16:06:28
>296
質問スレで質問しちゃだめなん?

298:デフォルトの名無しさん
08/08/24 16:13:24
>>296
っていうか、来ないでくださいって感じ。

299:デフォルトの名無しさん
08/08/24 16:19:48
>>295
そういう方法がありましたか。まったく思いつかなかったです。
試してみます。有り難う御座います。

>>286
考え自体は全然悪くないと思います。
スピードよりも見やすさのほうが通常は大事だと私は思います。
どうやって見やすくかつ速く出来るかで悩みます。

でもどっちを優先するかは時と場合によります。

300:デフォルトの名無しさん
08/08/24 18:55:13
モジュールWWW::Mechanizeを使って、クッキーの送信と受信をしたいんだけどどうすればいいの?

301:デフォルトの名無しさん
08/08/24 20:24:11
質問です。Perlでファイルのアップロードをしようとして
フォームから値を送るサンプルを弄くってるのですが
my $local = $q->param('upfile');
my $fname = basename($local,"");
my $path = '.file';
my $newfile = "$path/$fname";

こういう感じでbasenameを使って、ウィンドウズ環境から上げると
パスが
.file/C:\Documents and Settings\Admin\デスクトップ\hoge.txt
となってしまい、ちゃんとアップできません。
他のサンプルとかでもこうやってるようなのですが

みなさんはどうやってるのですか。

302:デフォルトの名無しさん
08/08/24 20:30:13
すみません
my $path = '.file';

my $path = './file';
です

303:デフォルトの名無しさん
08/08/24 23:33:29
>>301
$local =~ tr|\\|/|g;
# or
$fname =~ s/(?:\\|\/)([^\\\/:*?"<>|]+?$)/$1/;
# 思いつきで書いた。どっちもその場しのぎ。当然テストなんかしてない。

304:デフォルトの名無しさん
08/08/25 00:40:39
>>303
まあ tr に g オプションはないよな

305:303
08/08/25 01:06:49


306:デフォルトの名無しさん
08/08/25 01:40:11
まぁ、trを正規表現と勘違いしてるやつ多いよな……。

307:デフォルトの名無しさん
08/08/25 01:52:09
yでおk

308:デフォルトの名無しさん
08/08/25 06:35:23
perlちょっと飽きたかも。
入門書読んでも、どの本も
同じことしか書いてないし。

だいたい,スカラー変数の説明から始まって、
配列、ハッシュ、ループ、プリント文、あとなんだ、
サブルーチン、正規表現、こんな感じ。

あとはコンテキストがどうたらこうたら。
演算子の優先順位がどうとか。

309:デフォルトの名無しさん
08/08/25 06:39:17
あとは、if文、それと、正規表現で取得した文字列の再利用の方法とか。
あと入出力。それと、変数のスコープとか。
ファイルからの入力、ファイルへの出力。
再帰、引数利用の引数渡し。

それ以上難しいのは、グロブ、レファレンス、パッケージ、
モジュール、二次元配列、二次元ハッシュとかかな。


基本は1ヶ月もやれば覚えてしまうね。目新しさがないというか、
飽きる。「ああまたこれか」みたいな。

310:デフォルトの名無しさん
08/08/25 06:40:40
あと、->があったとき、
レファレンスとして使われている可能性と、
オブジェクト指向での記述として使われている可能性と、
2つあるの?

311:デフォルトの名無しさん
08/08/25 06:47:10
今なんか、おもしろそうな機能を発見したぜ

$\

use English: $OUTPUT_RECORD_SEPARATOR / $ORS

[入出力関連] 出力時の行末文字

デフォルト値は NULL です。
$\ の使い方

$\ = "\n";
print "Hello Perl World !";

↑これを使うと、行末文字を変更できるのだ
ということは「にょ」とかもできるはず。さっそくやってみよう。

312:デフォルトの名無しさん
08/08/25 06:49:15
$\ = "にょ";
print "おはよう";

さっそくやってみたぞ
実験結果

おはようにょ

成功!みごと成功したようだ!

313:デフォルトの名無しさん
08/08/25 07:32:03
>>308,309
飽きる原因
・理解してるのに同じ事を繰り返してる
・理解出来ないのに同じ事を繰り返してる
どっちも馬鹿には違いないがw

つか、入門書を何冊も読んでる時点で相当の馬鹿

>>311,312
チラウラカスうぜぇ

314:デフォルトの名無しさん
08/08/25 07:34:56
>・理解出来ないのに同じ事を繰り返してる
 ↓
何度も同じことを繰り返してるのに理解出来ない

の方が良かったな
失敬

315:デフォルトの名無しさん
08/08/25 08:19:00
スペースキーを押したら、次のメッセージが出る、
っていうのは,Perlでは実装できない?

Cのときはできたんだけど。scanfだっけ?

316:デフォルトの名無しさん
08/08/25 09:57:01
なんか、
スレリンク(prog板:297番)
このレベルの話があって、漏れは一回読んで意味がすぐ理解
できたんだけど、
スレリンク(prog板:298番)
みたいに、理解できない人もいるみたいなんだけど、
これってコミュニケーション障害?

317:デフォルトの名無しさん
08/08/25 10:45:32
>>316
俺もわからん。あんたがエスパーなんだろう。
というか板違い甚しい。他所でやってくれ。

318:デフォルトの名無しさん
08/08/25 11:02:52
1〜4 を 0、5〜9 を 10、11〜14 を 10、15〜19 を 20 といった具合に、
四捨五入したいのですが、どのように記述すればいいのでしょうか。

If 文でこつこつ書いて、あまりの多さにめげてしまいました。

319:デフォルトの名無しさん
08/08/25 11:45:56
>>318
sub round10 {
int(($_[0] + 5) / 10) * 10;
}

320:デフォルトの名無しさん
08/08/25 13:11:34
これ5を代入すると0になるな

321:デフォルトの名無しさん
08/08/25 13:31:10
効率いいかしらないけど・・・
print round(10);
sub round {sprintf('%.1f',($_[0] / 100 ))*100}


322:321
08/08/25 13:34:06
結構古いバージョンから問題なく動いてるコードなんだけど
そもそもsprintfって四捨五入するの保証してるのか不明デス



323:318
08/08/25 16:21:26
ありがとうございます。50行ぐらいあったコードがなくなってすっきりしました。

324:デフォルトの名無しさん
08/08/25 17:16:13
うちの環境だと、>>319は正当が出て、
>>321は、print round 15 すると答えが10が返る。
# ま、原因は浮動小数点の処理にあるのは明白なんだけど。
>>321氏は「その環境では上手く行ってたとしても別環境では上手く
行かない事がある」程度には認識した方が良いかと。

>>323
何故に50行?ベタ実装してもそんなに行は食わないだろ?
sub round {
 my $t = chop ( my $i = shift ) ;
 my %h = map{ $_, $_ < 5 ? 0 : 10 } 0..9 ;
 ( $i || 0 ) * 10 + $h{$t} ;
}
printf "%d->%d\n", $_ ,round $_ for 0 .. 30 ;

325:デフォルトの名無しさん
08/08/25 19:10:41
読めねーw

326:デフォルトの名無しさん
08/08/25 20:47:39
>>299

$str=~ s/([@-S])/($1)/g;
$str=~ s/([@-S])/ord($1)-ord('@') + 1/eg;
$str=~ s/T-]/ord($1)-ord('T') + 1/eg;

>>318
$data=~ s/(\d*)(\d)/$1 * 10 + (($2 < 5) ? 0 : 10)/e;

327:デフォルトの名無しさん
08/08/25 21:02:28
>>326
$str=~ s/([@-S])/'(' . (ord($1)-ord('@') + 1) . ')'/eg;

でいい気がするんだが

328:デフォルトの名無しさん
08/08/25 21:12:57
>>318
sub round($) {
return $_[0] % 10 >= 5 ? int($_[0]/10+1)*10 : int($_[0]/10)*10;
}


329:326
08/08/25 21:17:50
>>327
そだね

あと、ミス
× $str=~ s/T-]/ord($1)-ord('T') + 1/eg;
○$ str=~ s/[T-]]/ord($1)-ord('T') + 1/eg;

330:326
08/08/25 21:28:07
さらに、ミス、スマソ
× $str=~ s/T-]/ord($1)-ord('T') + 1/eg;
○ $str=~ s/[T-]]/ord($1)-ord('T') + 1/eg;

331:デフォルトの名無しさん
08/08/25 21:41:15
全部クラス化した方が効率いいだろ。

@num{ord('@')..ord('S')} = 1..20;
@num{ord('T')..ord(']')} = 1..10;
$str =~ s/([@-ST-]])/$num{ord($1)}/eg;


332:デフォルトの名無しさん
08/08/25 21:44:09
あ、上のやつは()つけといてくれ。。。見逃した。
・・・=map{"($_)"}1..20

333:デフォルトの名無しさん
08/08/25 21:48:50
>>324
一応、自己(嫌悪)レス。
sub round{ my $t = chop ( my $i = shift ) ; ( $i || 0 ) * 10 + ( $t < 5 ? 0 : 10 ) ; }

334:デフォルトの名無しさん
08/08/25 22:20:40
質問です。

perlを勉強し始めて間も無い物です。
MacOSX 10.5でLWPを使った簡単なマクロツールを使っているのですが、

Terminalにログをだらだらと表示する画面では無く、
viや、CPANを実行した時の様な専用画面が表示されるようにしたいと考えています(exitを打ち込んだから、shellに戻る様なイメージ)。

ぐぐるにもどう言った言葉で表現すればいいのか分からないので、
困っています。ヒントだけでも良いので押しえてください。
よろしくお願いいたします。

335:デフォルトの名無しさん
08/08/25 22:34:13
>>334 Curses

336:デフォルトの名無しさん
08/08/25 22:50:49
>>335
ありがとうございます!!
当スレの過去ログ等も調べさせて頂き、
色々見てみたのですが、インストールは出来そうだけど、
perlとどう対話(?)させれば良いのかが分からないです…。

もし私のような初心者にも分かりやすいサイト等があったら
お教え頂けますでしょうか。

337:デフォルトの名無しさん
08/08/25 22:52:30
ググれよ

338:デフォルトの名無しさん
08/08/25 23:07:33
すみません、ぐぐってます…。
ググっても分からないぐらいのレベルなんです。

とりあえず、インストールは終わったんですがね。
検索ワードをCurses.pmに買えてやってみます。

339:デフォルトの名無しさん
08/08/25 23:45:31
>>326
あぁ。そういう方法もありますか。よくこんな方法思いつきますね。
見れば、なぁんだと思うけどなかなか思い浮かばないですね。

でもこれだと>>288 のやり方(をサブルーチンとか外して効率化したの)とスピード
は変わらないですね。
逆にord使う分だけ遅くならないのかなーと・・・。

でもアイデアは面白いと思いますので参考にしたいと思います。

有り難う御座います。


340:デフォルトの名無しさん
08/08/26 00:06:30
>>338です。
色々調べた結果難しそうなので、今回はチャレンジするのをやめました。
screen(?)を上手く使った方法を考えたいと思います。
お騒がせいたしました。

341:デフォルトの名無しさん
08/08/26 00:49:26
>>334
CPANを読めよ

342:デフォルトの名無しさん
08/08/26 00:50:40
スレリンク(newsplus板:1番)
これみたら2ちゃんは一日に2億アクセスあるみたいですが、2億行の
アクセスログも、Perlだったら、スイスイ取り扱いできますよね。

343:デフォルトの名無しさん
08/08/26 01:00:12
URLリンク(serif.hatelabo.jp)

344:デフォルトの名無しさん
08/08/26 01:51:42
use feature qw( :5.10 );
system q|cls|;
#----------------------------------

my $a,$b;
$a=10;
$b=3;
my $c;
say $c=$a/$b;
say $c*3;

このコードを実行したら、10になった。
一方、電卓で計算したら、9.99999999999、、、になった。
なんで?

345:デフォルトの名無しさん
08/08/26 01:57:28
電卓が安物だから。

ちゃんとしたやつなら10になる。

346:デフォルトの名無しさん
08/08/26 04:18:11
perl のコードを実行できる電卓があるんか?

347:デフォルトの名無しさん
08/08/26 04:50:07
バカは消えろ

348:デフォルトの名無しさん
08/08/26 22:08:06
rarファイル(パスワードつき)をperlから操作したいのですが
CPANでモジュールを探したところ、
Archive::Rarではオプションでパスワードを扱えなくて
Archive::Rar::Passthroughでないとダメみたいです。
ところが、このモジュールは使用OS(Windows)には入りません。
エラーが出ないことを前提に、直接rar叩いちゃった方が楽ですか?

349:デフォルトの名無しさん
08/08/26 22:14:21
>>348
楽ですか?っていうかほかにやり方ないんならそうするしかないじゃん
何が聞きたいの?

350:デフォルトの名無しさん
08/08/26 23:39:38
前に弄った時は、 Win32::API で unrar32.dll を読み込んで使ってた。

351:デフォルトの名無しさん
08/08/27 01:40:15
${変数名}

こんな書き方があることを30分前に知った。
お前ら、ちゃんと教えてくれなきゃだめだろ。

352:デフォルトの名無しさん
08/08/27 01:55:11
シンボリックリファレンスの仕様は非推奨です。

353:デフォルトの名無しさん
08/08/27 02:10:06
$a=あ;

print "$aい";

こんなとき、こっちの意図は

「あい」

という出力なのに、perlが勝手に
$aい

という変数だと誤解して、エラーになる、
こういうときに、
${a}
と書くと、エラーにならない。

今読んだ本にそう書いてあるんだけど。
これがシンボリックリファレンスなの?

354:デフォルトの名無しさん
08/08/27 02:11:45
Perlを学び終えたとき、次に学ぶ言語として
最適なのはどれ?

Ruby?
PHP?
Phtynon?
C?

355:デフォルトの名無しさん
08/08/27 03:37:37
DBMにURLとアクセス時間を100万件くらい記録したファイルがあって
これをアクセス時間でソートしたリスト(テキストファイル)を作りたいんですが、
あまりメモリに負担をかけずにやるにはどうやるのがいいですか?

DBMはこんな感じで使ってました。
use DB_File;

tie %u, 'DB_File', 'url', O_RDWR|O_CREAT, 0644, $DB_BTREE;

$u{$url} = $last_modified;

356:デフォルトの名無しさん
08/08/27 03:43:28
ActivePerl(Perl 5.10.0) でData::Aliasを動かせている人っていますか?

ppmリポジトリでも軒並みテストにFAILしているし、
自分の環境(VC++ Express 2008)でも一緒でした
配布物内のREADMEには動く節が書かれていますが……orz

Data::Alias以外の方法で同様なことを実現するには、
素直にサブルーチンを掘ってリファレンスで受け渡しするしかなさそうで、
ちょっと難儀しています

357:デフォルトの名無しさん
08/08/27 11:49:49
>>353
それはシンボリックリファレンスとは違う。
分からないことがあったら「ググる」という事を覚えようね。

あと、できるだけ、

  print $a, "い";

って書き方を習慣付けておいた方が
後々、他の言語にも移行しやすいよ。

358:デフォルトの名無しさん
08/08/27 12:42:21
前から疑問だったのですが、

print $a. "い";
print $a, "い";

では異なるんでしょうか。

359:デフォルトの名無しさん
08/08/27 12:47:09
>>358
明らさまに異なる。
print $h = $a. "い" ;
print @a = ( $a, "い" ) ;

360:デフォルトの名無しさん
08/08/27 12:49:42
% cat hoge.pl
use Benchmark;

open DEVNULL, ">", "/dev/null" or die $!;
$x = "hogehogehoge";

timethese(
undef,
{
dot => sub { print DEVNULL $x. "hoge" },
comma => sub { print DEVNULL $x, "hoge" },
}
);
% perl hoge.pl
Benchmark: running comma, dot for at least 3 CPU seconds...
comma: 3 wallclock secs ( 3.42 usr + -0.00 sys = 3.42 CPU) @ 2453425.44/s (n=8390715)
dot: 4 wallclock secs ( 3.19 usr + 0.02 sys = 3.21 CPU) @ 1753933.96/s (n=5630128)

361:デフォルトの名無しさん
08/08/27 12:51:21
結果は同じ。おそらく内部処理が違うだろうけど気にするほどでも無い。
文字列の足し算をするか、しないか。どっちが効率がいいか考えればわかるよね?

あと、print 文のときはソレでいいけど、代入文とかのとき
$b = $a. "い"; とは書けるけど
$b = $a, "い"; はダメ。

362:デフォルトの名無しさん
08/08/27 12:59:10
なんという低レベルスレ・・・・

363:デフォルトの名無しさん
08/08/27 13:02:37
英語ソフトを日本語化する作業をしています。大量の置換スクリプトを書いてます。

s/"qwertyuiop@[asdfghjkl;:]zxcvbnm"/"たていすかんなにらせちとしはきくまのりれけむつさそひこみもねるめろ"/;

こんな長い置換を、2行に折り曲げて書く方法って無いでしょうか?

s/"qwertyuiop@[asdfghjkl;:]zxcvbnm"/
"たていすかんなにらせちとしはきくまのりれけむつさそひこみもねるめろ"/;

って書くと改行が混じるんですよね。

364:363
08/08/27 13:04:22
投稿ミス

置換パターンに @ とか [ ] とか出てくるのは忘れてください。
テケトーにキーボードを叩いただけですから。
本来はふつうの英文です。

365:デフォルトの名無しさん
08/08/27 13:36:33
>>363
やり方あるはずだよ。
なんかのオプションをつけるはず。
s/●/○/rとか。
そのrとかのオプションの名前は忘れたけど。
「正規表現中の改行を無視する」
ってオプションだと思う。
こないだ読んだ本に書いてあった。

366:デフォルトの名無しさん
08/08/27 13:38:02
>>363
っ[x]

367:デフォルトの名無しさん
08/08/27 13:39:55
最近の
「マニュアルを見るのは賎民のやること」
という風潮には目を覆うものがあるな。

368:デフォルトの名無しさん
08/08/27 13:42:52
xかなあ。

> パターン中の空白文字(半角スペース、
>Tab文字、改行文字)と、「#」から行末まで
>の文字列を無視する。
> 「[]」内の文字は、無視されない。

369:デフォルトの名無しさん
08/08/27 13:49:22
>>361
それは結果がたまたま同じだっただけだ。
man perlvar の $, を100ぺん読み直せ

370:デフォルトの名無しさん
08/08/27 13:51:31
お尋ねします。
「○○もしくは△△を含む」は「○○|△△」でできますが、
「○○および△△を含む」はどうするのでしょうか?
つまりand検索です。
要素が二つとは限らず可変なのですが、どうするのが効率が良いのでしょうか?


371:デフォルトの名無しさん
08/08/27 14:20:11
>>370
っ[?=]

372:デフォルトの名無しさん
08/08/27 14:29:36
>>370
っ[ブール代数]

373:デフォルトの名無しさん
08/08/27 16:00:48
>>366
アリ!バッチリです。これで仕事がはかどります。

374:デフォルトの名無しさん
08/08/27 17:06:01
もう見てもいないだろうけど
my $hoge = q{hoge} ;
$hoge =~ s{hoge}
# これでも良くね?
{foo} ;
print $hoge . "\n" ;


375:デフォルトの名無しさん
08/08/27 20:44:49
他人が書いたソースコード読む場合なんだけど、
アロー演算子がでてきたときに、それが
オブジェクト指向のアロー演算子なのか、それとも、
デリファレンスのアロー演算子なのか、どこを見て
見分ければいいの?

376:デフォルトの名無しさん
08/08/27 20:54:27
オレ様が考えた、仕様を全部理解していなくてはならない度

レベル1 言語使用考案者(ラリー・ウオール)
レベル2 仕様書を紙に書く人
レベル3 インタプリターを書く人
レベル4 専用エディター作る人
レベル5 モジュール作る人
レベル6 教科書や参考書を書く人
レベル7 このスレで初心者に教える人
レベル8 このスレで質問する人

377:356
08/08/28 02:10:26
とりあえずLexical::Aliasでお茶を濁すことにしました
Data::Aliasとの違いに気を付けようと思います

378:デフォルトの名無しさん
08/08/28 09:59:37
「はじめての人のためのかんたんPerl/CGI入門」
読んでるけど、よくわからんな。

379:デフォルトの名無しさん
08/08/28 10:03:39
ourってなに?
よく使うの?

380:デフォルトの名無しさん
08/08/28 12:13:44
>>375
ぐぐれしね

>>376
逆だしね

>>378-379
最後まで読めしね

381:デフォルトの名無しさん
08/08/28 13:09:36
しねしね団ですね。わかります。

382:デフォルトの名無しさん
08/08/28 13:11:09
「逆だし、ね」なのか
「逆だ、死ね」なのか

383:355
08/08/28 17:35:40
回答がなかったので、結局、DBにつっこんだ。

今さらだが、もしハッシュでやるんならキーとvalue入れ替えてBTREEのハッシュ再構築して、
トラバースってことになるんだろうな。。。
DB_Fileはキー重複にも対応してたはずなので、やろうと思えばできそう。

384:デフォルトの名無しさん
08/08/28 17:45:38
>>383
とりあえず順番考えずにべたで出力したのをsortコマンドに食わせれば楽だったかもな。
ぜんぜんperlじゃないけどw

sortコマンドはメモリ足りなけりゃ中間結果をディスクに書いてマージソートとかやってくれる。

385:デフォルトの名無しさん
08/08/28 18:55:18
>>384
× マージソートとかやってくれる。
○ ソート済みファイルのマージとかやってくれる。



386:デフォルトの名無しさん
08/08/29 04:15:14
requireの相互呼び出しってできないんだな。

387:デフォルトの名無しさん
08/08/29 04:20:47
requireが実際に何をしているか知っていれば自ずと分かることだ

388:デフォルトの名無しさん
08/08/29 11:13:17
URLリンク(digit.que.ne.jp)
↑のページの通りにLWPを使ってPOSTしているのですが、
どのようなデータをPOSTしているか確認する方法はないでしょうか?
%formdataの中を見るのではなく、requestした結果から見れたらいいのですが。


389:デフォルトの名無しさん
08/08/29 11:17:50
パケットキャプチャは一番確実。
暗号化されてたらバケラッタだけど

390:388
08/08/29 11:43:42
>>389
ありがとうございます。
Etherealというソフトで確認してみたいと思います。

391:デフォルトの名無しさん
08/08/29 18:10:06
Template-tooklkitでdoにあたるincludeやprocessは見つかったのですが
evalのような関数は無いでしょうか。
[%
  tt2_str = '[% cnt = 10 + 5; cnt; %]';
  EVAL(tt2_str); # ←のような感じ
%]
期待する表示結果:15

392:デフォルトの名無しさん
08/08/29 18:53:40
ぐぐれ

393:デフォルトの名無しさん
08/08/29 19:08:14
最近はなんでもかんでも「ぐぐれ」って返すのがブームなの?

394:デフォルトの名無しさん
08/08/29 19:10:19
ぐぐれ

395:デフォルトの名無しさん
08/08/29 19:28:54
ぐぐっても解決しない質問キボウ

396:デフォルトの名無しさん
08/08/29 20:00:13
ファイル名 「a.pl」

ソースコード

print "a";
require a.pl;

↑これを実行するとどうなる?

397:デフォルトの名無しさん
08/08/29 20:23:10
試せ

398:デフォルトの名無しさん
08/08/29 20:24:29
↑が代わりに試せ

399:デフォルトの名無しさん
08/08/29 21:44:59
>これを実行するとどうなる?

自分で実行すればいいじゃないかよ。
もしかしてナイコン?

400:デフォルトの名無しさん
08/08/29 22:21:28
>>399は40代と見た。

401:デフォルトの名無しさん
08/08/29 23:14:08
いきなり考えなしに実行すると危険なことってあるよね。

コンソールレベルでも、
open FILE > C:/windows/comamnd.com とか。

コマンドコムが上書きされてしまう。

あと危険なのは、rmとか。
systemとか。

あと、レンタルサーバーで無限ループになったときって
どうすればいいの?

402:デフォルトの名無しさん
08/08/29 23:40:30
my a=1;

これでエラーが出るんで、
「おかしいなーおかしいなー」
って悩んでたら、よく考えたら、
$が抜けてた。

403:デフォルトの名無しさん
08/08/30 00:00:37
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
system q|cls|;
#----------------------------------
my $bar = 'fuga.txt';
if (-f $bar) {
print "ファイル".$bar."が存在します。\n";
}
else {
print"ファイル". $bar."が存在しません。\n";
}

↑このコードすごいよ。
ファイルが存在するかどうかを調べてくれて、
レポートまでしてくれるよ。

404:デフォルトの名無しさん
08/08/30 00:10:35
>>401
> いきなり考えなしに実行すると危険なことってあるよね。

ありますね。なので考えてやりゃいいんじゃないでしょうか。

> コマンドコムが上書きされてしまう。

とか、

> あと危険なのは、rmとか。
> systemとか。

とか、このへんがあなたにとって「危険」でありうる環境でなら、なんぼでもやってください。
ただしその程度の認識で公開のサーバを利用するのはできれば、できるかぎりやめてください。

405:デフォルトの名無しさん
08/08/30 00:11:04
グローバル変数って絶対使ったらだめなの?

myしか使っちゃだめなの?

外で変数使いたい場合もあるんだが。

406:デフォルトの名無しさん
08/08/30 00:14:16
>>405
自己レス

サブルーチンにして、
retrunつかったら解決した。

407:デフォルトの名無しさん
08/08/30 00:14:32
>>403
ファイルテストを行ってから、print するまでの間に、あったファイルが消えたり、なかったファイルが作られたりした場合はどうすんの?

408:デフォルトの名無しさん
08/08/30 00:19:47
一回だけ初期化されるstateってどういう意味?
説明四でも意味がわかんない。



state変数

* 一回だけ初期化される変数。
* Cのstatic相当

state変数
今までは...

{
my $i = 0;
sub incr { $i++ };
}

state変数
これからは...

use feature 'state';
sub incr {
state $i = 0;
$i++;
}

409:デフォルトの名無しさん
08/08/30 00:21:12
もしかして初めてアクセスされる一回目だけ初期化されて、
2回目以降はその初期化の行は実行されずにスルーされるってこと?

410:デフォルトの名無しさん
08/08/30 00:37:37
それで?

411:デフォルトの名無しさん
08/08/30 00:41:09
サブルーチンの中に
サブルーチンって書いていいの?

412:デフォルトの名無しさん
08/08/30 00:46:50
>>408
それを読んでわかんねー、というか理解に少しでも不安があるようなら正直かなりマズい。
Perl をまるで読めてねーっつーことだから。
基礎からがんばれ。

413:デフォルトの名無しさん
08/08/30 00:52:02
>>411
どこのサブルーチンの中にサブルーチンが書いてあるの?

414:デフォルトの名無しさん
08/08/30 00:56:15
>>413
いやだから、
自分でこれから、そういうコードを書いても
いいのかなあ?って。

415:デフォルトの名無しさん
08/08/30 00:59:19
fuga.txtがあるかどうかを調べ、もしあるならあると言い、なければないと言い、ない場合はわざわざ作成してあげて、
作成したと言い、ある場合は、ファイルサイズを調べてレポートするプログラム。↓
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
system q|cls|;
#----------------------------------
my $bar = 'fuga.txt';
my $a=&file;
sub file{
if (-f $bar) {
print "ファイル".$bar."が存在します。\n";
return 1;
}
else {
print"ファイル". $bar."が存在しません。\n";
return 0;
}
}
given($a){
when (1){
my $file_size;
$file_size = (stat'./fuga.txt')[7];
say $bar."のファイルサイズは、".$file_size."バイトです"; }
when (0){
open FH, ">fuga.txt";
say "ファイル". $bar."を作成しました。";
}
}

416:デフォルトの名無しさん
08/08/30 01:01:09
use utf8;
use open IO => ":encoding(cp932)";

↑先頭の2行にこれを忘れていた。入れてください。

417:デフォルトの名無しさん
08/08/30 01:08:23
>>415
-f してから open するまでの間に誰かが fuga.txt を作っていた場合、
何もかも台無しになるという点で >>403 より性質が悪化してるんだが
それはいいのか。

418:デフォルトの名無しさん
08/08/30 01:08:30
ねーねーこれ↓って、実行されちゃうよね?

&で明示的に実行を指示したときだけ
サブルーチンを実行したいんだけど、
これだと、処理の流れがそこまできたときに、
なしくずし的に実行されてしまうんだけど、
それって正常な動作なの?

sub a;
{
print "a";
}

419:デフォルトの名無しさん
08/08/30 01:10:23
ようは、&aってしたときだけ、そのサブルーチンが実行されて
ほしいのに、ソースコードの一番下にそのサブルーチンの定義部を
置いておくと、そこまできたときに、勝手に実行されてしまうのが
困るといっているんです。

420:デフォルトの名無しさん
08/08/30 01:14:20
>>418-419
は自己解決したごめん

もう一回ためしたら実行されなかった。
;(セミコロン)が余計に入っていた。

421:デフォルトの名無しさん
08/08/30 03:14:54
mapの場合はゆっくり出力するってできないのかな?

foreachの場合は、sleepかませて
1行づつゆっくり出力するってできるけど、
mapだと、一度に一気に配列に全部入ってしまうから、
一個づつゆっくり出すとか無理だよね?

422:デフォルトの名無しさん
08/08/30 03:16:31
久しぶりに来たけど激しくゆとり臭くなったな

423:デフォルトの名無しさん
08/08/30 03:17:30
map {print $_, $/; sleep 1;} 0..100;

なにが不満なの?

424:デフォルトの名無しさん
08/08/30 03:19:54
sleepかませ

425:デフォルトの名無しさん
08/08/30 03:24:09
system q|cls|;
map {
system q|cls|;
print $_, $/;
# sleep 1;
}
0..100000;

こりゃーすげー

426:デフォルトの名無しさん
08/08/30 06:55:02
>>422
明日まで我慢。
あさってには居なくなるから。

427:デフォルトの名無しさん
08/08/30 14:38:11
mod_perl2導入の途中でmod_perl.soを配置するApache2\modulesの指定をしくじりました
mod_perl.soが配置されないままmod_perl2がインストールされてしまいやり直そうにも
"Package 'mod_perl' is already installed."と表示されてやり直しも利きません
どうにか導入する方法は無いでしょうか?

428:デフォルトの名無しさん
08/08/30 17:03:51
my $a;
ってファイルの上のほうで宣言して、
5,000行下でも、その$aにアクセスできるよね。

でもこれって「グローバル変数」とは呼ばないんだよね。

429:デフォルトの名無しさん
08/08/30 17:05:45
a.plと
b.plとあって、
requireで呼び出して使う状況で、
両方とも、$aって変数をつかってても、
myでプライベート化してれば、問題ないのかな?

逆に、myを使ってないで
グローバル変数として使っていたら、
a.plとb.plで同じ$aがあったら、
それは同じ変数として扱われてしまうの?

つまり、複数人で作業するときに、どつぼにはまる
可能性が高い?

430:デフォルトの名無しさん
08/08/30 17:26:47
参考までにどうぞ。
URLリンク(www.rwds.net)
URLリンク(d.hatena.ne.jp)

431:デフォルトの名無しさん
08/08/30 19:39:18
>>427
よく知らんけど mod_perl 無しの状態にロールバックしてやり直せない状態だとしたら、初手から構築し直すのが安全じゃないかな。

432:デフォルトの名無しさん
08/08/30 22:56:41
a.plで、
require b.pl
print "$a";

にして、b.plで、
my $a=1;
にしたら、a.plを実行したときに、
1って表示されないんだけど、
別ファイルでrequireされることがわかっているときは、
変数はmy化したらだめで、グローバル変数にしておかないとだめなの?

433:デフォルトの名無しさん
08/08/30 22:58:11
b.plがrequireされるファイルで、その中でなんかの処理をして、
その処理の結果をa.plに渡す、ってときに、通常
どんな手段で渡しているのかなー?って。

とりあえず、その変数をmy化したら渡せないってのはわかった。
グローバル変数だったら渡せるというのもわかったが、
それって普通の方法なのかな?

434:デフォルトの名無しさん
08/08/31 02:51:00
length q eq ge and print chr ord q each le

このコードの意味わかる?
漏れはわからない。

435:デフォルトの名無しさん
08/08/31 03:11:47
B::Deparseに食わせろ

436:デフォルトの名無しさん
08/08/31 03:59:39
>>434
qがquote-like operatorだということに注意すればそんなに難しくはない。

437:デフォルトの名無しさん
08/08/31 07:42:52
>432-433
2000〜3000円くらいの安い入門書を買うことをすすめる。
サブルーチンの項目あたりに書いてるはず。

ぶっちゃけ、Perlというか、
プログラミングにおける基本的な考え方の1つなので、そこから勉強するべき。

あと>430は無視なのかい?

438:デフォルトの名無しさん
08/08/31 11:38:11
http.confにLoadModule perl_module modules/mod_perl.soって書くと起動出来ない…
これはバージョンの相性が良くないってことなんでしょうか。Apache自体が起動しないです


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4390日前に更新/239 KB
担当:undef