Perlについての質問箱 ..
418:デフォルトの名無しさん
07/01/21 12:41:03
>>417
> 7じゃなくて6ですた…
植木算のミスといいます。そして Perl では「必要がなければ添え字を扱わない」ことで、このリスクを回避できます。
foreach my $wday (@week) {
print $wday;
}
あるいは、
print for @week;
419:デフォルトの名無しさん
07/01/21 13:30:56
すごい省略できるんですね…
420:デフォルトの名無しさん
07/01/21 16:25:18
Perlの省略記法は、芸術ですから。
いろいろ言われるところもあるけど、ラリー・ウォール先生もPGは傲慢であれとおっしゃっていることだし。
うん。大丈夫。半年前に書いたスクリプトがさっぱり分からなくても大丈夫。泣くことなんて無いよ。
421:デフォルトの名無しさん
07/01/21 16:39:35
> foreach my $wday (@week) {
> print $wday;
> }
"my" なんて入れる必要ないだろ
422:デフォルトの名無しさん
07/01/21 16:45:32
PBP6.9に入れた方がいいと書いてあるだろ
423:デフォルトの名無しさん
07/01/21 18:36:44
自分のフォルダのtextファイル(1000行〜1500行)を
ひとつの変数に入れる方法を教えてください
open(IN,"< foo.txt");
foreach(IN){ ・・・
}
のように一行づつ処理ではなく、全部の行をまとめて処理したいのです。
(正規表現で複数の行に渡って処理したいため)
何かいい方法はないでしょうか?
よろしくお願いします
424:デフォルトの名無しさん
07/01/21 18:40:53
read関数
425:デフォルトの名無しさん
07/01/21 18:47:46
my $txt = join('', (<IN>)[999 .. 1499]);
426:423
07/01/21 18:49:16
>>424
>>425
ありがとうございます。
無事解決できました
427:デフォルトの名無しさん
07/01/21 19:00:13
いいのかおい
428:デフォルトの名無しさん
07/01/22 23:22:29
正規表現の量指定子{}に変数は使えますか?
429:デフォルトの名無しさん
07/01/22 23:25:53
すいません、自己解決しました
てか自分で試せばよかった・・・
430:デフォルトの名無しさん
07/01/23 17:27:38
すみません。
教えてください。
my @aaa = () ;
my @bbb = () ;
for(my $i=0;$i<5;$i++) {
@aaa = ($i,$i+1) ;
@bbb = (@bbb,\@aaa) ;
}
foreach(@bbb){
print "$_\n" ;
}
foreach(@bbb){
foreach(@$_){
print "$_\n" ;
}
}
上を実行すると下の結果になります。
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
4 5
4 5
4 5
4 5
4 5
>>↓に続く
431:430
07/01/23 17:28:11
>>↑の続き
出力させたい結果は以下なのですがどうも
リファレンスの中がARRAY(0x13c93c)で全て同じになってしまっているようです。
(同じ@aaaという配列名をリファレンスしているせい?)
ループさせてリファレンスを増やしていきたいのですが
どのようにしたら下記のような出力結果に出来ますでしょうか。
0 1
1 2
2 3
3 4
4 5
432:デフォルトの名無しさん
07/01/23 17:40:06
レキシカルスコープ
433:デフォルトの名無しさん
07/01/23 17:41:40
>>430-431
ループのなかでmyするようにする。
my @aaa = ($i,$i+1) ;
若しくは無名配列のコンストラクタを使う。
@bbb = (@bbb,[@aaa]) ;
ループの外では@aaaを使っていないのだから、
スコープをループ内に縛る前者をお勧めする。
434:デフォルトの名無しさん
07/01/23 17:48:50
質問です。
テキストファイルから顔文字を除去しようと考えていますが、いい方法がみつかりません。
正規表現でうまく除去する方法というのはないでしょうか?
現在考えていますのが、括弧の中に記号あると顔文字であると判断するとしています(例=(゜Д゜) (ノ∀`*) など。
この正規表現を書く場合全ての記号を書かないといけないでしょうか?
質問が2つとなりましたが、よろしくお願いします
435:デフォルトの名無しさん
07/01/23 17:52:37
>>434
まず正規表現を勉強しろ。
顔文字のリスト作ってそれと比較するのが単純で速いと思うが。
436:デフォルトの名無しさん
07/01/23 17:55:52
(゜o゜)これはおk?
(TへT)これもおkだね
437:434
07/01/23 17:57:28
>>435
リスト作ったほうが早いですか。
その場合、リストにない顔文字は一致しませんけど、しょうがないか…
全部の顔文字をうまく除去するなんて、難しいですよね
438:デフォルトの名無しさん
07/01/23 18:01:19
上手く作ったとしても
テンプレート・ツールキット(TT)
なんて文脈じゃ誤判定は避けられないな
439:デフォルトの名無しさん
07/01/23 18:04:54
>>437
"ヽ(`Д´)ノ"
とかが、"ヽノ"になってもいいのかってこったわな。
結局は、顔文字の辞書ファイルを保守するしかないだろ。
440:434
07/01/23 18:18:05
"ヽ(`Д´)ノ"の場合は前後が記号ならそれも弾くとか考えてたんですよね
まぁ、ノのほうが記号じゃないんで、残りますが。
顔文字の辞書作ってるけど。結構メンドクセ
441:430
07/01/23 18:21:54
>>433
解決しました。
ありがとうございました。
>>432
こういうのをレキシカルスコープって言うんですね。
ありがとうございます。
442:デフォルトの名無しさん
07/01/24 01:40:36
文字の置換の際に、「マッチした文字列になんらかの処理をする」ということは可能でしょうか?
$str = "ABCDEF";
$str =~ s/(B)/&conv($1)/;
のように、マッチした文字列を、関数を使って、返り値で置換したいのですが・・・
(ちなみの、このコードだと、
A&conv(B)CDEF
という文字列になってしまいました。。。)
443:デフォルトの名無しさん
07/01/24 02:25:10
e
444:デフォルトの名無しさん
07/01/24 04:16:24
v
445:デフォルトの名無しさん
07/01/24 06:30:30
>>442
Windowsならコマンドプロンプト開いて
perldoc perlre
でperlの正規表現のドキュメント読めるよ。
ドキュメントにざっと目を通してれば人に質問するような内容じゃないぞ。
446:4442
07/01/24 07:16:24
>443
>445
ありがとうございます。 /e で、できました。
ドキュメントを確認せずに質問してしまって
済みませんでした。
プログラミングPerlにも、 /e が載ってました・・・
447:デフォルトの名無しさん
07/01/24 14:10:56
CGI作るつもりでperl始めたんだけど、テンプレにあるようなCGIとは無関係な使い方ってどんな使い方するの?
例えばどんな仕事でどう使うとか教えてほしい
448:デフォルトの名無しさん
07/01/24 14:14:36
>>447
スクリプトとして使えるじゃん。 バッチ処理とかさ。
449:デフォルトの名無しさん
07/01/24 14:26:58
>>447
CGIと関係なく、データベースとのやりとりとか。
450:デフォルトの名無しさん
07/01/24 14:27:35
>>447
えーと、えーと
451:デフォルトの名無しさん
07/01/24 14:29:52
こんな質問するやつに教えても理解できないと思うよ
452:デフォルトの名無しさん
07/01/24 14:31:22
エロ画像エロ動画収集に決まってるだろ
453:デフォルトの名無しさん
07/01/24 14:32:40
分類したエロ画像ファイルをリネームする
454:デフォルトの名無しさん
07/01/24 15:02:24
CUIだから単純で且つ面倒くさい処理やらせてる。すぐ書けるしね
>>452
漏れ以外にPerlをエロ収集に使おうと考える奴がいるとは・・・
455:デフォルトの名無しさん
07/01/24 16:01:07
>452-454
あれ、俺が何人もいる…
456:デフォルトの名無しさん
07/01/24 17:03:32
たしかにエロ収集に便利、というよりエロ収集してる時が一番はかどるな。
457:デフォルトの名無しさん
07/01/24 17:06:36
組みたくなってきた・・・
エロパワーは絶大だな
458:デフォルトの名無しさん
07/01/24 17:31:07
▀▄ ▀▄ ▄█ ▄█ ▀▀▀▀█
▀▄ ▀▄ ▄▀█ ▄▀█ ▄▀
▄▀ ▄▀ ▄▀ █ ▄▀ █ █
▄▀ ▄▀ ▀▀▀█▀ ▀▀▀█▀ █
▀ ▀ ▀ ▀ ▀
█ ▄▄▄ █ ▀▀▀▀ ▄ ▄█ █
█ █▄▄ █ █ ▄▄▄▄▄▄▄ █ ▄▄▄▄█▄▄
▀█ ▄█ █ █ █ ▄▀ █ █
█ ▀ █▀ █ █ ▄▀▀▄ █ ▄▄▄█
█ ▄▀ █ ▄▀ █ █ █ █▀▄
▀ ▀ ▀▀ ▀ ▀▀▀ ▀ ▀▀▀
こんなスレアラシに使える。
459:デフォルトの名無しさん
07/01/24 18:27:19
正規表現が使いやすいからPerlで組んだ
でもCUIなのがなぁ
460:デフォルトの名無しさん
07/01/24 18:34:47
Perlでは、ワンライナーか数行程度のスクリプトでテキストをいじったりとか
しかしてないが
Unicode対応がボミョウなので、たまに困ったことになる
use encoding('cp932')とかって、-n/-pスイッチとかと一緒に使うと
うまく動かなくね?つか、これって基本的に非推奨なんだべ?
Unicode文字列のリテラルや正規表現を直接記述できないので、
use encoding()しないとなると途端にウザい事態になるわPerlは
461:デフォルトの名無しさん
07/01/24 18:39:55
スクリプトをutf8で書けばuse encodingいらないし特に問題ないけどね。
462:460
07/01/24 18:43:07
>>461
それはスクリプトも入力もUTF-8を仮定できるときだけだべ?
少なくともWindows環境でそれは仮定できないなぁ
UTF-8なファイル名でファイル開いたりできないし
463:デフォルトの名無しさん
07/01/24 19:11:42
>>115
464:デフォルトの名無しさん
07/01/24 21:44:41
>462
URLリンク(aspn.activestate.com)
465:460
07/01/24 23:34:35
>>463
-pスイッチや-nスイッチを使わない場合はそれで上手く行くようです。
そもそも毎度毎度こんなに長いのではワンライナーは書けませんし、
簡単な仕事を簡単にやっつけられないのなら、Perlとしての魅力は
激減ですが。
やっつけ仕事によく使う-pスイッチや-nスイッチと
use utf8を共存させる方法はありますか。
#!/usr/bin/perl -pi.bak
なスクリプトで>>115の方法を試すと全くおかしなことになります。
>>464
なるほど、便利なモジュールがあるのですね。
466:デフォルトの名無しさん
07/01/25 00:31:18
間違いなく合ってない。
煽りとかではなく。
別の言語にしたほうが幸せになれるとおもうよ。
467:デフォルトの名無しさん
07/01/25 01:21:17
Perl/Tk で GUI でエロ画像を集めてるよ。
468:デフォルトの名無しさん
07/01/25 02:46:48
エロのエネルギーはおよそ12kW/hです。
469:デフォルトの名無しさん
07/01/25 09:55:07
質問
use strict; warn $c;
だとstrictが効くのに
use strict; warn $a;
だとstrictが効かないのはなぜ?
$bも効かない
470:デフォルトの名無しさん
07/01/25 10:04:09
sort() で使われるから例外扱い
perlvar嫁
471:デフォルトの名無しさん
07/01/25 10:16:32
質問します。
for(my $i=0;$i<=$#aaa;$i++){
$out = $aaa[$i] ;
if( $aaa[$i+1] ){
while($aaa[$i+1] =~ /^\+/){
$i++ ;
$out = "$out $aaa[$i]" ;
}
}
print "$out\n" ;
}
これのforをforeachで書いたらどんな記述でかけますでしょうか。
やりたいことは、ある要素のアタマに"+"があれば
その要素は一つ前の要素とつなげようとしています。
foreachで回している最中に強制的に次の要素にアクセスすることは出来るのでしょうか。
472:デフォルトの名無しさん
07/01/25 10:18:14
from>>469 to>>470
perldoc perlvar
$a
$b Special package variables when using sort(), see "sort" in perlfunc. Because of this specialness $a and $b don’t need to
be declared (using use vars, or our()) even when using the "strict ’vars’" pragma. Don’t lexicalize them with "my $a" or
"my $b" if you want to be able to use them in the sort() comparison block or function.
thx!
473:デフォルトの名無しさん
07/01/25 10:27:06
>>foreachで回している最中に強制的に次の要素にアクセスすることは出来るのでしょうか。
foreachでは今アクセスしている要素が何番目かを知ることはできない。
もちろん、中で別に変数を$i++とかすりゃ別。
俺ならこんな感じに書く。
foreach (@aaa) {
if (/^\+/) {
$out[-1] .= " $_";
} else {
push @out, $_;
}
}
474:デフォルトの名無しさん
07/01/25 10:34:48
すまん、なぜかソラ目でprintがpushに見えていた。
printだとこうかな。printが2つあるのがいまいち気に入らないが...
my $buf = undef;
foreach (@aaa) {
if (/^\+/) {
$buf .= " $_";
} else {
print $buf, "\n" if defined $buf;
$buf = $_;
}
}
print $buf, "\n" if defined $buf;
475:デフォルトの名無しさん
07/01/25 10:38:17
>>473 の後
print map { "$_\n" } @out; でもすりゃいいんだから別にいいんじゃ
476:デフォルトの名無しさん
07/01/25 15:20:56
print "$_\n" for @out;
このほうが短い。
477:デフォルトの名無しさん
07/01/25 15:30:03
print join "\n", @out;
の方がわかり安い
478:デフォルトの名無しさん
07/01/25 15:49:57
どれが速いんですかね^^
479:デフォルトの名無しさん
07/01/25 16:05:03
>>477
ダウト。それだと最後の要素の後に改行が出ない。
480:471
07/01/25 16:31:27
>>473
できました!!
すっきりしてわかりやすくなりました。
ありがとうございます。
481:デフォルトの名無しさん
07/01/25 16:40:25
>>479
そういう細かい部分ってすっごい大事だよね
後で泣き見たりする
しかし「ダウト」って使う人はあんまり見たことが無い
482:デフォルトの名無しさん
07/01/25 18:24:14
クイズのゲームを作っているのですが、問題を回答したら次ってどんどん進んでいき
正解したら各問ごとに正解数をカウントしていってりうのですちゃんとカウントされません。
perlはテキストでも作ってそれに書き込んでそのあと読み込んでしないと記憶した
変数が消えるのですか・・・?
変な質問ですみません。HSPからperlに乗り換えてみたんですが混乱してしまって
483:デフォルトの名無しさん
07/01/25 18:28:08
>>482
日本語でおk
HSPで作ったほうがいいんじゃね?
484:デフォルトの名無しさん
07/01/25 18:30:01
>>483
perlの勉強をしてみたいと思いましたので・・・
myで定義をしてるんですけど、なんかいろいろと定義の仕方があるみたいですねperlは
485:デフォルトの名無しさん
07/01/25 18:32:17
さっさとソースを見せろ
486:デフォルトの名無しさん
07/01/25 18:45:37
if($tugi eq "Q1"){
if($toi eq "t"){
$sum=$seikai+1;
}
&mon0;
}
if($tugi eq "Q2"){
if($toi eq "t"){
$sum=$seikai+1;
}
&mon1;
}
if($tugi eq "Q3"){
if($toi eq "t"){
$sum=$seikai+1;
}
&goukei;
}
sub goukei{
print "正解は"+$sum+"個";
}
487:デフォルトの名無しさん
07/01/25 18:45:40
次の問題へ進むたびに正解数を my してるんだろうな
488:デフォルトの名無しさん
07/01/25 18:47:08
sub mon0{
print "<P>";
print "<SELECT name='answer' size='3'>";
print "<OPTION value='true'>みかん</OPTION>";
print "<OPTION value='false'>アップル</OPTION>";
print "<OPTION value='false'>ばなな</OPTION>";
print "</SELECT>";
print "</P>";
print "<INPUT type=hidden name=tugi value=Q2>";
print "<P><INPUT type='submit' value='次の問いへ'></P>";
}
sub mon0{
print "<P>";
print "<SELECT name='answer' size='3'>";
print "<OPTION value='false'>インコ</OPTION>";
print "<OPTION value='true'>ふくろう</OPTION>";
print "<OPTION value='false'>鳩</OPTION>";
print "</SELECT>";
print "</P>";
print "<INPUT type=hidden name=tugi value=Q3>";
print "<P><INPUT type='submit' value='次の問いへ'></P>";
}
こんな感じです
489:デフォルトの名無しさん
07/01/25 18:48:04
webprogでやれ
490:487
07/01/25 18:49:27
はずした。
> $sum=$seikai+1;
491:デフォルトの名無しさん
07/01/25 18:49:59
$sum=$sum+1
じゃないの?
492:デフォルトの名無しさん
07/01/25 18:53:22
>>491
そこは修正しました。
上のほうで
my $sum;
と定義してるのが問題なんでしょうか?
493:デフォルトの名無しさん
07/01/25 18:57:38
上のほうで、とか言われてもわからないから全部見せろ
494:デフォルトの名無しさん
07/01/25 18:58:39
そもそもCUIなのかCGIなのか
495:デフォルトの名無しさん
07/01/25 18:59:02
↓こっちのがいいんでね?
スレリンク(php板)
496:デフォルトの名無しさん
07/01/25 19:08:30
URLリンク(www.vipper.net)
ここに書き込むと長いのでアップしてきました
497:デフォルトの名無しさん
07/01/25 19:19:26
htmlなんだろw
498:デフォルトの名無しさん
07/01/25 19:22:30
板違いっぽいですね(−−
499:デフォルトの名無しさん
07/01/26 05:44:42
>>477 は最後の改行もそうだが、メモリ内で一旦展開するから、
効率よくないんでない?
500:デフォルトの名無しさん
07/01/26 07:40:35
さらに、文字列を連結するためにメモリの再割り当てが何度も起きる悪寒
501:デフォルトの名無しさん
07/01/26 11:44:01
UTF8 で並んでいる名前の一覧があるのですが、それをあいうえお別に分類したいのですが
どういう方法が良いでしょうか。
青木 -> @AGyou へ
斉藤 -> @SaGyou へ
という感じにしたいとおもいます。
502:デフォルトの名無しさん
07/01/26 12:04:33
読み仮名付けなきゃ無理だね
503:デフォルトの名無しさん
07/01/26 12:07:36
>>502
お返事ありがとうございます。やっぱり難しいですね orz
別の手段を考えて見ます。
504:デフォルトの名無しさん
07/01/26 12:10:01
>>503
> 別の手段を考えて見ます。
なんで? 読みがなつければいいじゃん。
505:デフォルトの名無しさん
07/01/26 12:13:15
>>504
表現が悪くてすいません。別の手段 → 読み仮名をつけることです。
506:デフォルトの名無しさん
07/01/26 12:32:13
読みがなをつけるモジュールって、あっても良さそうなもんだけどね。
mecabにぶっ込めば一発か?
507:デフォルトの名無しさん
07/01/26 12:35:47
>>506
あ〜それ欲しいですね。
508:デフォルトの名無しさん
07/01/26 13:24:24
不確実すぎるだろ・・・
509:デフォルトの名無しさん
07/01/26 14:09:40
すべて登録されているとは限らないし ―特に名前の方、
読みがアンビなのもあるから、必要なのは、読みがなふり支援ツール
じゃなかんべか。
510:デフォルトの名無しさん
07/01/26 15:48:49
漢字にふり仮名を自動でつけるのは
ある程度は自動化できるが
同じ字で読みが違う場合もあるので(ex.徳沢 => とくさわ,とくざわ etc.)
完全な精度では無理。
511:デフォルトの名無しさん
07/01/26 18:19:13
URLリンク(www.alles.or.jp)
684万人を調べて、約7万8千種の名字ランキングを公開している人がいるぞ。
そのデータを使うのが手っ取り早いと思われる。
....しかし、ヒマ人だな〜。
512:デフォルトの名無しさん
07/01/26 19:17:30
読みを当てはめるのも結局確率だから
↑のデータ使ってもやっぱ無理っしょ
513:デフォルトの名無しさん
07/01/26 20:45:14
そこでAIの出番なわけだ
514:デフォルトの名無しさん
07/01/26 20:52:49
そこでエスパーの出番なわけだ
515:デフォルトの名無しさん
07/01/26 20:57:04
WindowsXP上でActivePerlを使ってるんですが、USBデバイスをコントロールする方法はありますか?
学習リモコンのクロッサム2+USBとデータをやりとりしたいんですが。
516:デフォルトの名無しさん
07/01/26 21:07:32
>>511のリンク先より引用
----
名字 ふりがな 人数 順位 累積人数 累積比率
鈴木 スズキ 139,627 1 139,627 2.04029%
鈴木 ススギ 25 13,107 6,517,718 95.2398%
鈴木 ススキ 7 27,840 6,723,557 98.2476%
鈴木 スズノキ 3 41,426 6,795,040 99.2922%
鈴木 スズ 2 47,333 6,812,494 99.5472%
鈴木 スズシ 2 47,333 6,812,506 99.5474%
鈴木 スヅキ 2 47,333 6,812,518 99.5476%
鈴木 スス 1 56,150 6,832,142 99.8343%
鈴木 ススヘキ 1 56,150 6,832,147 99.8344%
鈴木 ススリキ 1 56,150 6,832,148 99.8344%
鈴木 スズギ 1 56,150 6,832,151 99.8344%
鈴木 ズスキ 1 56,150 6,832,308 99.8367%
鈴木 ズズキ 1 56,150 6,832,309 99.8367%
鈴木 ヌズキ 1 56,150 6,836,957 99.9047%
----
姓しかわからない状況で確実に読み仮名をつける方法は
>>513のAIじゃなく >>514のエスパーだな。
AIについて無知な>>513はAIと書けばかっこいいと思ってるのか?
517:デフォルトの名無しさん
07/01/26 21:11:14
ヌズキはねーよw どう考えても書き間違いだろwww
あ、ヌズキさん見てたらごめんなさい><
518:ヌズキ
07/01/26 21:24:52
呼んだ?
519:デフォルトの名無しさん
07/01/26 21:26:36
名前の仮名振りは、人間がやってもかなり難しい。
自動化なんてとても無理。 入力補助が限界でしょうね。
520:デフォルトの名無しさん
07/01/26 21:50:28
あと「ズスギ」さんと「ズズギ」さんが入れば
濁点のあるなしの組み合わせがそろうのにな
521:デフォルトの名無しさん
07/01/26 22:00:02
読みが存在しない漢字が存在する
522:デフォルトの名無しさん
07/01/27 00:46:22
たとえば、「東」と書いて「あずま」「ひがし」「とう」と、読み方がいろいろある。
漢字だけからは読み方は判別できない。
そのため、正しい読み方は、本人にしかわからない。
523:デフォルトの名無しさん
07/01/27 00:52:27
同じクラスに五島(ごとう)と五島(ごしま)が居たことあるよ。
524:デフォルトの名無しさん
07/01/27 01:09:35
>>523
おまえ、ひょっとして1年2組の時の近藤(こんどう)か?
おれ隣のクラスの権藤(ごんどう)だよ。おぼえてるか?
525: ◆TWARamEjuA
07/01/27 01:37:47 BE:4356285-BRZ(6761)
住基ネットワークに問い合わせれば総て解決♪
526:デフォルトの名無しさん
07/01/27 15:01:28
>>515
キミの質問は、2つに切り分けないといけない。
1.クロッサム2のDLLのインターフェースが公開されているかどうか。
2.ActivePerl から DLLを呼び出せるかどうか。
両方とも「YES」だからできるのだが、質問の切り分けができず、
「1」の当否を回答者に調べさせるキミには無理だ。
527:デフォルトの名無しさん
07/01/27 15:20:23
>>525
スーパーハッカーキタ━━━(゚∀゚)━━━ !!
528:デフォルトの名無しさん
07/01/27 16:01:58
あふぉか
姓しかわからないデータと住基ネットのデータをどうリンクするんだよ。
>>525=>>527か?
くだらないネタにみんなスルーしてるわけだが、
自作自演するほど反応してほしかったのか?
529:デフォルトの名無しさん
07/01/27 16:22:13
ネタだと思っているなら何故あふぉとか言ってマジ突っ込みするんだろう。分裂気味?
まぁ大方、真相がネタでもマジでも恥かかないよう工夫したら前後で矛盾が出たってとこか。
530:デフォルトの名無しさん
07/01/27 17:17:34
まぁ未承諾さんだし。
531:デフォルトの名無しさん
07/01/27 18:02:01
>>526
もちろんDLLとかWindowsの約束とかよく分かっておりません。
そのあと、mrccom.dllを見つけてWin32::APIでimportを試すところまで来ましたが、
unknown errorでimport出来ず\(^o^)/。どなたか気が向いたら教えてください。
532:デフォルトの名無しさん
07/01/27 20:09:12
>>528
サブイ
533:デフォルトの名無しさん
07/01/27 22:26:03
>>527,>>529,>>532
ここはvipでも口論・議論ではなくperlの質問箱スレだ。
前日の終わったネタをいつまでも引きずったり、
指摘されて逆切れして粘着するぐらいならほかのスレ行けよ
534:デフォルトの名無しさん
07/01/27 22:45:22
>>528=533 別に君以外誰も文句も言ってないし、しきりも頼んでないけど。
頓珍漢レスを>>529に指摘されて逆ギレしてる張本人乙にしかみえないよ?w
535:デフォルトの名無しさん
07/01/27 22:52:37
粘着だが逆ギレだか知らんが、
PerlのスレでPerlの話をしないやつはすべて平等に価値がない
536:デフォルトの名無しさん
07/01/27 23:29:55
ここは批判されると30分以内に逆切れコメントする527を観察スレですか?
537:デフォルトの名無しさん
07/01/28 00:35:56
>>531
>どなたか気が向いたら教えてください。
まず、C++を勉強しろ。C++でDLLを扱えるようになること。
PerlでDLLを扱う話はそれからだ。
538:デフォルトの名無しさん
07/01/28 01:35:42
>>533
ここはvipでも口論・議論ではなくperlの質問箱スレだ。
前日の終わったネタをいつまでも引きずったり、
指摘されて逆切れして粘着するぐらいならほかのスレ行けよ
539:デフォルトの名無しさん
07/01/28 02:58:29
__
| |
| | ___ ___
| | . / | __ _____ / _ \
| | / /| | / / / ____/ / / > l
| |. / / .| |. / / / /.. _ /  ̄ /
| |/ / | |/ / /  ̄ ̄_/ / \
| /. | / / / ̄ ̄ __ / / ̄ ̄> |
| / |___/ ./  ̄ ̄ ̄ / /  ̄ ̄ /
 ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ _____ ___ ___ ___
______ /__ __/ [][] _| |_| |__ _| |_
| ___ \ / / | _ | |_ レ'~ ̄|
| | \ l | |_  ̄| | / / / /| |
| |____/ / \__| | |  ̄ /_ /. | |_
| ____/ ___ __ __/ヽ |_|. |__|. \/
| | /`、_/_/ / _ ヽ / _ /
| | ヽ / | l l l | l l l
| | | l ヽ  ̄ / ,ヽ  ̄ /
 ̄  ̄  ̄ ̄ / __ ヽ
| l l l
ヽ  ̄ ̄ /
~ ̄ ̄~
540:デフォルトの名無しさん
07/01/28 03:41:10
それ、もう少し小さくならんか。
541:デフォルトの名無しさん
07/01/28 04:14:20
Web
でやれ
Prog
542:デフォルトの名無しさん
07/01/28 04:16:24
vv3bpr0gマ”ゃれ
543:デフォルトの名無しさん
07/01/28 21:16:33
Image::Magickで32bit(RGBA)のpngを読み込んで、24bit(RGB)のpngに書き出したいんだけど、
どうやればいいか教えてください。
544:デフォルトの名無しさん
07/01/28 21:39:34
URLリンク(mechanics.civil.tohoku.ac.jp)
convertで24bit Raw RGBで出力して
それを再度pngで出力すればいいんでね?
545:543
07/01/29 00:12:46
もう少し調べてみたら、
$im->Set(matte => 0);
で解決できました。スレ汚しごめんなさい。
546:デフォルトの名無しさん
07/01/30 20:26:33
threads::shared なんですが、
例) $var : shared;
と言うのは、文法的にどういう意味なのでしょうか?
threadsだけに許された特殊な文法なのでしょうか?
547:デフォルトの名無しさん
07/01/30 21:18:54
attributes
548:デフォルトの名無しさん
07/01/30 22:02:55
>>547
ありがとうございます
CPANで見ても英語がさっぱりで…
分かり易く解説されているページ等はないでしょうか
はてなのは見ましたがさっぱりです
549:デフォルトの名無しさん
07/01/31 17:01:01
質問です
UNIX系OSやWindowsで
.soや.dllを利用したいのですが、
どうするのが一般的でしょうか?
出来れば日本語の解説ページをお願いします
550:デフォルトの名無しさん
07/01/31 23:53:20
質問です
コマンドラインでカウントダウンってできますか?
C:\>perl hoge.pl
次の処理まで待ち時間: 5秒...
のところ “5”の部分のみが 4 3 2 1... と更新されていくようにしたいのです
いちおー system "cls (もしくは) clear "でスクリーンごと更新とかは なしで
Activeperlですが cpanで解決するなら cpanでも結構です
よろしく〜
551:デフォルトの名無しさん
07/02/01 00:00:31
>>550
¥b
552:デフォルトの名無しさん
07/02/01 00:05:34
>551
うおっ! ありがとうございます!!
さっそくそのキーワードで調べてみます!!
553:デフォルトの名無しさん
07/02/02 13:47:58
perlでISHテキスト←→バイナリ変換するモジュールってある?
一通りCPANしたりぐぐったりしてみたが見つからなかったんだけど。
554:デフォルトの名無しさん
07/02/02 15:02:25
質問です。
項目数(列数)が多いCSVのデータを読み込んで処理するとき、皆さんはどうしてますか?
私は10項目くらいでしたら
my($id, $name, $age, ..) = split /,/;
と、それぞれ変数を用意するのですが、
100項目を超えるような場合、項目名を要素とする配列を用意しておき
@col_name = qw(id name age ..);
連想配列に格納して
my @array = split /,/;
my %hash = ();
for(0..$#col_name) {
my $key = $col_name[$_];
my $val = $array[$_];
$hash{ $key } = $val;
}
$tel = $hash{tel};
今扱ってるCSVはデータの件数(行数)が500件あって、上記の連想配列の格納をその件数分繰り返し行なっています。
555:554
07/02/02 15:03:04
「項目名 => 項目番号」の連想配列を用意しておくのがいいのかなとも思うのですが、
%col_no = (
id => 0,
name => 1,
...,
);
$tel = $array[ $col_no{tel} ];
↑ちょっと読みづらいかなとも思います。
項目数・項目名が変わる可能性は低いです。
効率よりも読みやすさ重視です。
よろしければ、ご意見お聞かせください。
556:デフォルトの名無しさん
07/02/02 15:07:30
$tel = $array->[$i]->{'col_no'}->{'tel'};
557:デフォルトの名無しさん
07/02/02 15:09:34
$tel = $array->[$i]->{'tel'};
これでいいのか
入れ方は任せる
558:デフォルトの名無しさん
07/02/02 18:22:13
@col_name = qw(id name age); # member
$_ = "1,hiroyuki,30"; # csv
@$record{@col_name} = split /,/;
#
print $$record{id},"\n";
print $$record{name},"\n";
print $$record{age},"\n";
559:デフォルトの名無しさん
07/02/02 21:32:19
利便性の為にハッシュを使わざるを得ないのが気になってるんじゃないの?
配列でやりたいなら、こんなことしちゃったり:
my $r = MyRecord->new(split /,/);
print("$r->name\n");
package MyRecord;
BEGIN {
my $i = 0;
my @col_name = qw(id name age); # カラム名を設定。
for my $n (@col_name) {
eval qq{ sub $n :lvalue { \$_[0][$i] }};
$i++; }}
sub new { bless [@_[1..$#_]], $_[0]; }
560:デフォルトの名無しさん
07/02/02 21:34:18
ミス。
print("$r->name\n")
修正 → print($r->name, "\n")
561:デフォルトの名無しさん
07/02/02 22:02:33
>>559
evalで作るのと、*{...} = sub{}で作るのどっちがスマートなんだろ。
562:デフォルトの名無しさん
07/02/02 22:22:43
evalはパーサが動く分遅くはなりそうだけど
通常の定義と見た目が一貫してるから読みやすいかも。
シンボルテーブル+クロージャだと、クロージャ作る側のレキシカルな環境?も意識しないとならないし、ちょっと嫌。
563:554
07/02/03 10:09:16
>>556-562
ご回答ありがとうございます。
いろいろ方法があるのですね。
まだご回答の内容が理解できていないので、勉強してきます。
564:デフォルトの名無しさん
07/02/04 09:24:15
他人が作った、FTPで複数のファイルを受信する為の処理に手を入れなくては
いけないのですが、元のソースにエラー時の処理が全く入っていません。
$ftpcmd = ○○○ #<-ftpコマンドが記述されたテキストファイル
system("ftp -n < $ftpcmd);
対象ファイルは複数あって mget logfile*.* で取って来ています。
ファイルが取って来れなかったり、相手に接続できなかったりといったような
エラーが起きた事を判定するにはどのようにすればいいのでしょうか?
PerlもLynuxも初めてなので、出来るだけ簡単な方法を教えていただけると
ありがたいです。
よろしくお願いします。
565:デフォルトの名無しさん
07/02/04 13:04:46
Net::FTP で書き直したらいいんじゃないかな。
566:デフォルトの名無しさん
07/02/04 15:35:04
>>564
Net::FTPでスクリプト書く例
URLリンク(search.cpan.org)
モジュールが入ってなかったら「perl CPAN」でググってCPANの使い方覚えていれろ
567:デフォルトの名無しさん
07/02/04 16:26:22
Lynuxはおらも初めてだ
568:デフォルトの名無しさん
07/02/04 17:13:07
>>565-566
そのやり方で書き直してみます。
ありがとうございました。
>>567
Linuxの打ち間違いですね。
569:デフォルトの名無しさん
07/02/05 23:30:35
>>565-566
教えていただいた方法で組んでみたのですが、複数のファイルをワイルドカードで
指定して取って来るにはどうしたらよいのでしょう?
対象のファイル名には出力された日付と時刻が含まれていて、個数も名前も不定
なのです(○○○YYYYMMDDHHMM.logのようなファイル名で、日付部分が
当日のものだけ取って来たいのです)。
何度もすみませんがよろしくお願いします。
570:デフォルトの名無しさん
07/02/06 01:45:03
sub mget {
my($ftp,$pattern) = @_;
foreach my $file ($ftp->ls($pattern)) {
$ftp->get($file) or warn $ftp->message;
}
}
571:デフォルトの名無しさん
07/02/06 23:22:19
>>570
どうもありがとうございます。
上手く持ってこれました。
572:デフォルトの名無しさん
07/02/07 11:31:08
希望結果を得たいのですが、実行結果の通りになります
以下のソースで実行結果になることは納得できるのですが、
希望結果を得るためにはどうすれば良いのでしょうか?
●ソース
@$data=(
{'name'=>'test1','pay'=>'1000','cancel_flg'=>'0','create_date'=>'20070131','cancel?date'=>''},
{'name'=>'test2','pay'=>'2000','cancel_flg'=>'1','create_date'=>'20070110','cancel_date'=>'20070120'},
{'name'=>'test3','pay'=>'100','cancel_flg'=>'0','create_date'=>'20070201','cancel_date'=>''},
);
foreach(@$data){
push(@lst,$_);
if($_->{cancel_flg}){
$_->{create_date}=$_->{cancel_date};
$_->{pay}="-".$_->{pay};
push(@lst,$_);
}
}
print "$_->{name}\t$_->{pay}\t$_->{create_date}\n" foreach(@lst);
●実結果
test1 1000 20070131
test2 -2000 20070120
test2 -2000 20070120
test3 100 20070201
●希望結果
test1 1000 20070131
test2 2000 20070110
test2 -2000 20070120
test3 100 20070201
573:デフォルトの名無しさん
07/02/07 11:44:59
foreach(@$data){
push(@lst, {%$_});
574:デフォルトの名無しさん
07/02/07 11:55:08
>>573
ありがとうございます
希望どおりの結果を得られました
ハッシュ内のデータを1つずつ別のハッシュに移し替えることで回避していましたが
これからはソースがスマートになりそうですw
私が無知なだけだと言う話かも知れませんが、勉強になりました
575:デフォルトの名無しさん
07/02/07 12:23:24
こういうことだな。
$X = ['A'];
$Y = $X; #リファレンスデータのポインタ(?)だけをコピーして、データそのものはコピーしてない。
$X->[0] = 'B';
print $Y->[0];
結果「B」
576:デフォルトの名無しさん
07/02/07 12:36:30
ちょっとCPANで調べるとStorableのdcloneとか、
Clone(::More/Fast/PP/Any...)とかなんかたくさんあるんだけど
どれを使うのがいいんだよ
577:デフォルトの名無しさん
07/02/07 12:39:19
俺は年寄りなのでcancelないときもコピーすんのもったいないと思ってしまう
578:デフォルトの名無しさん
07/02/07 13:56:18
辞書みたいなものを作っているのですが、見出し語にダブりが多数あります。
こんな感じで。
<midashi>kuki</midashi>
茎とはクキである。・・・・・
<midashi>kuki</midashi>
茎とはクキである。・・・・・
見出し部分タグ内が同じ場合のみ、一つ残してダブりのぶんは見出しも本文も消す、
という作業を行いたいのですが、perlで出来ますか?
何を勉強すればよいのか、示唆頂ければありがたいです。
579:デフォルトの名無しさん
07/02/07 14:05:52
xmlなら、専用のエディタ使う方がよっぽど早くて安全だと思うのだが。
580:デフォルトの名無しさん
07/02/07 16:05:05
ファイルのパースさえ出来れば楽勝だろうけどたぶんそこが一番の問題だと思う
機械読み取りを考慮した仕様になってればいいんだが
581:デフォルトの名無しさん
07/02/07 22:15:16
配列を初期化したいのですが、どのようにすればいいのでしょうか?
引き渡したパスにあるファイル名を配列に入れて、そのファイル1つ1つを順繰りに
処理していきたいのですが、1度処理をした後でもう1度処理を行うと、最初に配列
にセットしたファイル名が配列に残ってしまっています。
下のソースだと、「1回目」と「2回目」のところでは同じ内容のファイル名が表示
されます(2回目では何も表示されないで欲しいです)。
どこがおかしいのでしょうか?ご指導を宜しくお願いします。
sub aa{
($path) = @_;
@localfl;
@dir;
opendir(DIR,$path) || return(-1);
@dir = readdir(DIR);
foreach $f (@dir){
if($f =~ /^\.\.?/){ next;}#親&カレントフォルダ(.と..)を除外
$localfl{$f} = $f;
}
foreach $f (sort(keys(%localfl))){
print("1回目 $f\n");
}
undef @localfl;#これでクリア?
@localfl = ();#これでクリア?
foreach $f (sort(keys(%localfl))){
print("2回目 $f\n");
}
}
582:デフォルトの名無しさん
07/02/07 22:20:07
@localfl と %localfl は別物ですよ
583:デフォルトの名無しさん
07/02/07 22:55:59
なぜに Perl4 …
変数全部グローバルだし
584:デフォルトの名無しさん
07/02/07 23:05:43
>>582
@localflには最初から何も入ってなくて、%localflをクリアしてないから
前の中身が残ってるということでしょうか?
%localflの中身をクリアすればOKですか(%localfl=""; とか・・?)
>>583
すみません、まだPerl触り出して1週間のド素人なもので・・。
585:デフォルトの名無しさん
07/02/07 23:30:02
%localfl = ();
586:582
07/02/07 23:36:52
とりあえず >>585 の %localfl = (); または undef %localfh; で意図する結果が得られます
バグの温床になるのを防ぐために use strict; と use warnings; をお薦めします
変数を宣言するときは my を使ってください
適当に書き直したらこんな感じでしょうか
use strict;
use warnings;
sub aa {
my ($path) = @_;
opendir(my $dh, $path) or return -1;
my @localfl = sort grep { ! /^\.\.?/ } readdir($dh);
foreach my $f (@localfl) {
print("1回目 $f\n");
}
}
587:デフォルトの名無しさん
07/02/08 00:19:07
>>585
>>586
丁寧に教えていただきありがとうございました。
参考にさせていただきます。
588:デフォルトの名無しさん
07/02/08 20:09:30
Encodeモジュール使い方を勉強中です。
なんとか試行錯誤しながらやってるんですが、
Data::Dumper がやたら文字化けします。
Dumper無しで出力すると化けないので
エンコードの部分は間違ってないと思うのですが。
589:デフォルトの名無しさん
07/02/08 20:16:37
use strict;
use utf8;
use Data::Dumper;
binmode STDOUT,":encoding(cp932)";
my $str="あああ";
print Dumper $str;
print $str;
以上をutf8で書いて実行すると
$VAR1 = "\x{3042}\x{3042}\x{3042}";
あああ
となります
どうにかして日本語をDumperする方法はないでしょうか?
590:578
07/02/08 20:17:25
ありがとうございました。
XML エディタ で検索してみましたが、どうもよく分かりませんでした。
ちなみに見出しは全部でaからzまで数十万あります。
ダブり語は多分、数千種類が各2〜7個くらいダブっています。
差し支えなければ、使えそうな専用エディタを教えて頂けないでしょうか?
ファイルのパースさえ出来れば楽勝だろうとおっしゃるのは素晴らしいです。
ちなみに楽勝というのはperl で、ですか?
機械で読むというのがよく分からないのですが(すみません)、多分txt形式で
50MBくらいのファイルになりそうで、そこまでは出来ます。
591:588=589
07/02/08 20:19:08
ちなみに環境は WindowsXP sp2 上で、ActivePerl Build 819 使用しています。
592:デフォルトの名無しさん
07/02/09 02:39:44
なんとなくWebProgからきました。取り留めもない質問なんですがお願いします。
WEBの掲示板などでよく、特定のタグだけ書き込み許可してますよね。それを実現するのに
下記のようなコードを書きました。最近、WEBに限らず、テキスト系の処理は何するにも
こんな感じでsplitして再帰する書き方に固執してしまってます。
字ヅラ的には短くて気に入ってるんですが、処理的には効率悪い気がしてならないのです。
もっとうまい方法があるでしょうか。
sub escape_limited {
my %args = (str => '', @_);
$exception = q!</?(?:a|img|blockquote|pre|code|span)(?:\s[^>]*)?>!;
my @scraps = split(/($exception)/im, $args{'str'}, 2);
if ((scalar @scraps) == 3) {
return &escape(%args, str => $scraps[0]). $scraps[1]. &escape_limited(%args, str => $scraps[2]);
}
else {
return &escape($args{'str'});
}
}
593:デフォルトの名無しさん
07/02/09 04:00:04
sub escape_limited {
my %args = (
str => '',
allowed => qr{a|img|blockquote|pre|code|span},
@_
);
my $text = $args{str};
$text =~ s{( < (?! /? (?:$args{allowed}) \b ) [^>]* > )}{ escape($1) }iegx;
return $text;
}
とかでどう?
594:デフォルトの名無しさん
07/02/09 09:53:04
$LT = quotemeta escape("<");
$GT = quotemeta escape(">");
($str = escape($str)) =~s/$LT\/?(a|img|b|blockquote|pre|code|span)\b.*?$GT//ig;
とかねー。多分軽いよ。
タグ内に'<' '>' が無いことを前提にしてるみたいだけど、大丈夫?
属性も調べないと、スタイルシートとかスクリプトとか埋め込まれる可能性もあるし。
595:デフォルトの名無しさん
07/02/09 10:35:31
うおっ、間違えた。正規表現のリテラルのトコ…。
s/$LT(\/?(?:a|img|b|blockquote|pre|code|span))\b(.*?)$GT/<$1$2>/ig
だわな。スマソ
596:デフォルトの名無しさん
07/02/09 13:59:17
試しました。
592(私):スプリット型
593:一発置換型
594:例外事後処理型
マッチングがひとつもない場合
592:速い
593:圧倒的に遅い
594:速い
マッチングがある場合
592:圧倒的に遅い(しかも多重再帰の警告でまくり)
593:少し速い
594:速い
一旦、なりふり構わず置換してから例外を元に戻すってのは、
分かりやすいだけで処理的に気持ち悪いと思ってましたが、
意外と効率いいんですね。
597:デフォルトの名無しさん
07/02/09 14:07:03
お礼を忘れました。みなさんありがとうございます。
ひとつ、事後処理型の場合、対象文字列に最初からエスケープ文字が
含まれてるケースを考慮する必要がありますね。これが一番やっかいかなあ。
598:デフォルトの名無しさん
07/02/09 14:10:29
いや、一旦、二重エスケープになって元に戻るからいいのか。
混乱してきたので仕事に戻ります。
599:デフォルトの名無しさん
07/02/09 15:02:53
>>590
テキスト読み込んで処理はPerlの得意とする分野なので楽勝
タグは<midasi></midasi>だけなのか?その他のタグがあったとして処理する必要はないのか?
複数の同じ見出しに対し残す本文はどれでもいいのか?
本文中にタグや特殊文字があったりした場合は?一意に判別できるエスケープの仕様はある?
あたりの仕様さえ確定できればファイル読み込みのやりかた、正規表現、ハッシュあたり覚えればできるっしょ
ちゃんとしたXML形式になってるなら専用のパーサ使えば楽が出来るが、正規表現でも十分なように思える
600:デフォルトの名無しさん
07/02/09 23:36:51
ちゃんとしたXMLになってなくても、XML::Liberal使えばわりといける。
601:デフォルトの名無しさん
07/02/10 03:35:34
wxperlを使ってGUIのメモ帳を作っています。ファイルを新規に保存するとき
ファイルと同名のフォルダをつくりたいのですがなぜかうまくいきません。
my $filename = $saveasdialog->GetPath;
$this->{text_ctrl_1}->SaveFile($filename);
mkdir($filename);
このスクリプトで、一行目でwxperl filedialogオブジェクトにより
ファイル名が取得され$filenameに入ります。2行目でsavefileメソッドで
テキストが$filenameの通りに名前がつけられ保存されます。これは正常にいきます。
しかし、3行目のコードではフォルダが作成されません。
wxperl固有というよりもperlのコードの書き方に問題があるような気がするのですが、
アドバイスがあったらお願いします。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5380日前に更新/220 KB
担当:undef