[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/25 20:07 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlコーディング初心者質問スレ Part 56



1 名前:nobodyさん mailto:sage [2007/09/16(日) 19:49:43 ID:???]
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >2 以降

前スレ ttp://pc11.2ch.net/test/read.cgi/php/1180492441/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/

477 名前:nobodyさん mailto:sage [2007/11/02(金) 11:22:36 ID:???]
/public_html/test/log.txt を、UTF8→SJISに変換して、
別名で保存するにはどうすればいいでしょうか

Perl 5.8.8なのでuse Encode;を利用する、読み取り専用で1行ずつ変換処理する
あたりまでは勉強しました。スマートな方法よろしく御教示おねがいします

478 名前:nobodyさん mailto:sage [2007/11/02(金) 13:22:56 ID:???]
ログをShift_JISに変換ではなく、表示する時にsjisに返還して表示するようにして、
データはutf-8のままのほうがよくないかな。

479 名前:nobodyさん mailto:sage [2007/11/02(金) 13:29:46 ID:???]
>>477
まずは自分で書いた糞コード晒すのが先じゃね?

480 名前:nobodyさん mailto:sage [2007/11/02(金) 14:01:12 ID:???]
>>477
おまえさんの「スマート」の基準が判らんのだが、
Encodeで何か不足でもあったのか?

481 名前:nobodyさん mailto:sage [2007/11/02(金) 16:43:20 ID:???]
nkf -s log.txt > log.sjis.txt

482 名前:nobodyさん mailto:sage [2007/11/02(金) 17:17:33 ID:???]
>>481
すげー!、シェルスクリプトですよね?

sshができない場合はこんな感じで利用すればいいのかな
system("nkf -s log.txt > log.sjis.txt");

1つ気になるのがjcode.plなど元の文字コードを指定するのがあると思うのですが、
&jcode::convert(\$_, 'sjis' ,'utf8');
nkfでは気にしなくても自動判別完璧なのでしょうか?

483 名前:nobodyさん mailto:sage [2007/11/02(金) 17:34:58 ID:???]
もはやPerlに何の関係もない

484 名前:nobodyさん mailto:sage [2007/11/02(金) 17:51:47 ID:???]
>>477
use Perl6::Slurp;
use Jcode;
$c = slurp "log.txt";
Jcode::convert(\$c, "sjis", "utf8");
open($fh, ">", "log.sjis.txt");
print $fh $c;

>>482
jcode, Jcode, nkfは、判別できる場合は判別してくれる。

485 名前:nobodyさん mailto:sage [2007/11/02(金) 22:18:35 ID:???]
>>484
頭足りてないのは理解した。



486 名前:nobodyさん mailto:sage [2007/11/05(月) 07:24:22 ID:???]
gethostbynameについての質問です。
コマンドプロンプトだとnslookup -> set type=***
UNIXならhost -t ***
でクエリタイプを設定できるんですけど、PERLの場合はどうやるのでしょうか。


487 名前:nobodyさん mailto:sage [2007/11/05(月) 10:55:44 ID:???]
>>486
search.cpan.org/~olaf/Net-DNS-0.61/lib/Net/DNS.pm#Find_the_nameservers_for_a_domain.

488 名前:nobodyさん [2007/11/05(月) 11:20:15 ID:6nXAnQ+n]
ファイルのオープンでエラーになります。
open(FILE,">".$workFname) or die "Cannot Output File: ";

あらかじめファイルを持たせておいて、書き込み権限を与えておけば
成功しますが、新規にファイルを作成できません。
どうすればいいのでしょうか。


489 名前:nobodyさん mailto:sage [2007/11/05(月) 12:21:09 ID:???]
ディレクトリのパーミッションかな

490 名前:nobodyさん mailto:sage [2007/11/05(月) 13:05:21 ID:???]
>>489
解決しました、ありがとうございます。

491 名前:nobodyさん mailto:sage [2007/11/05(月) 13:19:35 ID:???]
die するときに $! も含めるべき。

492 名前:nobodyさん mailto:sage [2007/11/05(月) 13:22:45 ID:???]
 自分の環境では、相対パスではエラーになるので、絶対パスに書き換えてます。
できれば相対パスのままで動くようにしたいです。どうすれば解決できるか分かる
方はおられませんか。まあ、あまり解決策が複雑なら、とりあえずあきらめてこの
ままにしておくつもりですが。

493 名前:nobodyさん mailto:sage [2007/11/05(月) 14:36:06 ID:???]
>>492
まず「何を」相対パスにしようとしているのかくらい書こうぜ。
あと「自分の環境」は書かなきゃ誰にも伝わらない。

494 名前:nobodyさん [2007/11/07(水) 09:25:24 ID:R3XG8Srf]
Perlで関数の引数に二次元配列を渡すのは無理ですか。

495 名前:nobodyさん mailto:sage [2007/11/07(水) 09:32:37 ID:???]
>>494
ヒント:リファレンス



496 名前:nobodyさん [2007/11/07(水) 11:46:06 ID:R3XG8Srf]
次のソースのsub kansuのforeachの行は何と書けば正しく動きますか
#!perl/bin/perl
use strict;

sub kansu{
my $ref1 = shift;
my $value1;

foreach $value1($$ref1) {
print $value1 . "\n";
}
}

sub main{
my @databox1 = (13,1,6,3,9,8);
my $ref1 = \@databox1;
usort_kansu(@databox1);
}

main();


497 名前:nobodyさん mailto:sage [2007/11/07(水) 11:47:42 ID:???]
誤: usort_kansu(@databox1);
正: kansu(@databox1);

498 名前:nobodyさん mailto:sage [2007/11/07(水) 12:36:16 ID:???]
>>496
「言語的意味で」正しく挙動させるには
foreach $value1($ref1) {

(多分)あなたの望んだ挙動にするには
ソースの殆どに手を入れる必要がある。

∴ 本読んでからどうしても分らんかったら
 質問し直せ

499 名前:nobodyさん mailto:sage [2007/11/07(水) 14:24:36 ID:???]
>>496-498
#!perl/bin/perl -w
use strict;

sub kansu {
  my $ref1 = shift;
  # my $value1;

  foreach my $value1 (@$ref1) {
    print $value1 . "\n";
  }
}

sub main {
  my @databox1 = (13,1,6,3,9,8);
  my $ref1 = \@databox1;
  kansu($ref1);
}

main();

500 名前:nobodyさん [2007/11/07(水) 15:22:14 ID:vLJSXT0R]
コーディングじゃないのですが該当スレが見当たらず、新規スレにするような質問でもないと思いこちらに質問します。

.qmailからperlスクリプトを呼び出しているのですが、その場合エラーログを取るにはどうしたらよいのでしょうか?
不正終了しているようなのですが、原因がつかめません。



501 名前:nobodyさん mailto:sage [2007/11/07(水) 15:43:21 ID:???]
eval { require スクリプト; };
if ($@) {
open(LOG, ">>/path/to/ログファイル名") or die;
print LOG "WARNING: $@";
close(LOG);
}

こういうスクリプトをqmailから呼び出せばどーよ

>499
forearch行を書き換える条件だからforearch my $value (@_){ って書いて欲しかったのかと・・

502 名前:501 mailto:sage [2007/11/07(水) 15:59:10 ID:???]
foreach $value1($ref1,@_) {

こうか

503 名前:500 mailto:sage [2007/11/07(水) 16:13:30 ID:???]
>>501
ありがとうございます。
試してみます

504 名前:nobodyさん mailto:sage [2007/11/07(水) 18:20:14 ID:???]
STDERRに吐いた文字はqmailのログにのこるでしょ?
ログが見えないならプログラムを置くべきではないと思う。

505 名前:nobodyさん mailto:sage [2007/11/07(水) 18:46:18 ID:???]
>>504に同意だけど、
とりあえず、STDERRをファイルにでもリダイレクトすればどうなん?



506 名前:500 mailto:sage [2007/11/07(水) 19:59:45 ID:???]
>>504
qmailのログとはmaillogでしょうか?
スクリプトからは何もログを吐いていないんです。

sudoでapache権限で実行してるからログ吐かないのかな。

507 名前:nobodyさん mailto:sage [2007/11/07(水) 20:05:11 ID:???]
|/path/to/script.pl >> /path/to/error.log 2>&1

508 名前:500 mailto:sage [2007/11/07(水) 20:13:46 ID:???]
>>507
ありがとうございます。
.qmailでもログ指定しないといけないんですね。



509 名前:nobodyさん mailto:sage [2007/11/07(水) 21:32:38 ID:???]
>>500
何かとんでもない設定でqmail動かして無いか?

510 名前:500 mailto:sage [2007/11/07(水) 22:29:30 ID:???]
>>509
いえ。
.qmail内でperlのみsudoしてapache権限で動かしてます。
qmailはvpopmail権限で動かしてますよ。

>>507さんでログ取れました。m(__)m

511 名前:nobodyさん mailto:sage [2007/11/09(金) 15:33:58 ID:???]
UTF-8でperlを書きたいのですが、文字コードをperlにどのように知らせればよいのでしょうか?

512 名前:nobodyさん mailto:sage [2007/11/09(金) 15:47:46 ID:???]
>>511
plagger のソース読むといいよ!

513 名前:nobodyさん mailto:sage [2007/11/09(金) 17:28:52 ID:???]
>>512
それ無理に流行らそうとしなくていいよ

514 名前:nobodyさん mailto:sage [2007/11/09(金) 17:49:37 ID:???]
tokuhirom自重

515 名前:nobodyさん mailto:sage [2007/11/09(金) 18:08:33 ID:???]
Perl死んじゃうん?



516 名前:nobodyさん mailto:sage [2007/11/09(金) 18:57:53 ID:???]
(・∀・)ニヤニヤ

517 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/11/09(金) 18:59:46 ID:???]
>>511

use utf8;


518 名前:nobodyさん [2007/11/09(金) 19:09:09 ID:8S2oyKnm]
>511
use dan;
で解決するよ。

519 名前:nobodyさん mailto:sage [2007/11/09(金) 19:26:50 ID:???]
tokuhirom の直近の発言をコピペすることによりスレを荒らす tokuhacks.

520 名前:nobodyさん mailto:sage [2007/11/09(金) 21:31:54 ID:???]
plaggerのソース読めって言ってるやつのほとんどはplaggerのソースが読めない

521 名前:nobodyさん mailto:sage [2007/11/09(金) 22:28:46 ID:???]
コード解説読めってならともかくコード読ませたってしょうがないだろ。Perlなんだから

522 名前:nobodyさん [2007/11/09(金) 23:35:40 ID:8S2oyKnm]
tokuhiromのソース読めって言ってるやつのほとんどはtokuhiromのソースが読めない


523 名前:nobodyさん mailto:sage [2007/11/09(金) 23:39:07 ID:???]
プラガー(笑)

524 名前:nobodyさん [2007/11/10(土) 10:49:28 ID:Z9OcedPC]
web上の圧縮ファイル(.lzh)をダウンロードして保存、
さらにその圧縮ファイルを解凍するスクリプトを作りたいです。

例えば、LWP::Simpleを使った場合
my $dat = get('hoge.com/071110.lzh');
の後はどう処理していけばいいでしょうか?


525 名前:nobodyさん mailto:sage [2007/11/10(土) 11:02:39 ID:???]
> の後はどう処理していけばいいでしょうか?

lha 書庫を解凍する処理を行えばよい。



526 名前:nobodyさん mailto:sage [2007/11/10(土) 11:03:28 ID:???]
>>524
はい。
www.google.co.jp/search?q=lzh+%E8%A7%A3%E5%87%8D+perl&ie=utf-8&oe=utf-8

527 名前:nobodyさん mailto:sage [2007/11/11(日) 02:16:45 ID:???]
2chみたいに携帯から固有のIDを作りたいんですが
どうすればいいんでしょうか。

528 名前:nobodyさん mailto:sage [2007/11/11(日) 07:14:50 ID:???]
>>527
i-mode:UTN
EZweb:HTTP_X_UP_SUBNO
Y!:UA

529 名前:nobodyさん [2007/11/11(日) 14:32:10 ID:4iiY3aOI]
正規表現について質問です。
urlからファイル名だけを取り出したいです。
例えば、$urlという変数に下の3つのurlがあった場合は
hoge1.html, hoge2.html, hoge3.htmlを取り出したいです。

localhost/hoge1/hoge1.html
localhost/hoge1/hoge11/hoge111/hoge2.html
localhost/hoge2/hoge21/hoge3.html

下のように自分でやってみたのですが、localhostの前の/から取得してしまいます。
if( $url =~ /\/(.*\.html)$/ ){
print $1 . "\n";
}

どうすればやりたい事ができますか?
教えてください、お願いします。

530 名前:nobodyさん mailto:sage [2007/11/11(日) 14:35:11 ID:???]
ワイルドカードにすべき部分は「全ての文字」じゃない、「/を除いた全ての文字」だ。

あ、とりあえず ?xxx=hoge とかの引数は考えなくていいよね?


531 名前:529 mailto:sage [2007/11/11(日) 14:47:19 ID:???]
>>530
レス有難うございます。

>ワイルドカードにすべき部分は「全ての文字」じゃない、「/を除いた全ての文字」だ。
なるほど。でも頭では理解できてもそれをコーディングするとなると・・・
.*の部分を弄ればいいのかなぁ。

>あ、とりあえず ?xxx=hoge とかの引数は考えなくていいよね?
はい、このパターンは今回ありえないっす。

532 名前:529 mailto:sage [2007/11/11(日) 14:58:10 ID:???]
条件文を下のコーディングに変更したらできました。
if( $url =~ /\/([^\/]*\.lzh)$/ ){

正規表現すげー
>>530さんアドバイスありがとうございました。

533 名前:nobodyさん mailto:sage [2007/11/12(月) 08:03:25 ID:???]
.*?も覚えたらいいとおも

534 名前:nobodyさん [2007/11/12(月) 16:33:29 ID:XNEEDQVz]
そのファイルがバイナリなのかテキスト(shift-jis,euc,utf8)なのかを判断するにはどのようにしたら良いのでしょうか?

最初、linuxの fileコマンドを使用していたのですが誤認識がよくあり使えません。
バイナリなのかテキストなのかだけ分かればいいのですがperlでそれを行うにはどのようにしたら良いのでしょうか?

535 名前:nobodyさん mailto:sage [2007/11/12(月) 16:42:39 ID:???]
ファイルテスト演算子



536 名前:nobodyさん [2007/11/12(月) 18:17:28 ID:XNEEDQVz]
>>535
有難う御座います。
試してみましたが、EUCだったり10文字程度のcp932などの場合に誤認識するようです。

537 名前:nobodyさん mailto:sage [2007/11/12(月) 18:33:52 ID:???]
\0が含まれてればバイナリでいいんでないの
それ以外だと各文字コードの仕様を調べて
全データがそれに矛盾してないか判断するしかないと思

538 名前:nobodyさん mailto:sage [2007/11/12(月) 18:39:12 ID:???]
正規表現使えばいいじゃない

539 名前:nobody [2007/11/13(火) 03:52:36 ID:fKqfq45H]
ttp://www.jpopfan.co.jp/uranai/uranai000.htm
上のサイトのようなゲームをperlで作りたいと思っています。
htmlのみでも十分なゲームだとは思いますが、あえてCGIゲームとして作りたいです。
(学校の授業の自由課題であるので・・・)

一応以下のようにhtmlは作ってみました。

<html>
 省略
<body>
<h1>オーケストラ楽器別診断</h1>
<p>次の質問にお答えください♪</p>
<form action="/nussknac/cgi-bin/kadai.cgi" method="post">
<dl><dt>お名前</dt>
<dd><input type="text" name="name" value=""></dd><br>
<dt>Q1. あなたはプライドが高いほうですか?</dt>
<dd><ul>
<li><input type="radio" name="answer1" value="Yes" checked>Yes</li>
<li><input type="radio" name="answer1" value="No">No</li>
</ul></dd></dl>
<p><input type="submit" name="send1" value="送信"><br></p>
</form></body></html>

540 名前:nobody [2007/11/13(火) 03:57:04 ID:fKqfq45H]
539の続きです。
HTMLのフォームから情報をCGIに送り、最初の質問に対してYesならAの質問、NoならBの質問・・・というように
答えによって質問を分岐させるように作りたいです。
if文でひたすら分岐するというイメージはありますが、どうすれば、送信ボタンを押した時に次の質問ページにリンクさせる事ができるかが分かりません。
質問ページは一つ一つ作りたいです。
よろしくお願いします。

541 名前:nobodyさん mailto:sage [2007/11/13(火) 04:18:50 ID:???]
そういうアルゴリズムも含めて課題になってるんじゃねーのか・・・まぁいいけどさ。
で、htmlはともかくどこまでperl書いたのよ。まさか1行も書かずに相談しにきてるわけじゃあるまい?

542 名前:nobodyさん mailto:sage [2007/11/13(火) 06:54:14 ID:???]
何日か前に別のスレでも見たけど、ここで聞いてて課題間に合うの?

543 名前:nobodyさん mailto:sage [2007/11/13(火) 08:58:39 ID:???]
あみだくじでいいのか、選択によってポイントがたまってその結果で振り分けられるのか。
色々ロジックはあると思うけど、そこら辺はどうするのかな

544 名前:nobodyさん mailto:sage [2007/11/13(火) 09:17:32 ID:???]
>542
提出日まで1〜2週間とかなら大丈夫じゃない?

その昔、C言語の授業があって、その授業終了直後に提出したら怒られたことがあったなあ(笑)
ごめん、確かに授業聞いてませんでした。

545 名前:nobodyさん mailto:sage [2007/11/13(火) 09:19:51 ID:???]
あみだくじでいいなら、
<li><input type="radio" name="answer" value="Aの質問のURL" checked>Yes</li>
<li><input type="radio" name="answer" value="Bの質問のURL">No</li>
ってして、
print "Location: answerの値\n\n";
でリダイレクトさせていけばいいだけでは?



546 名前:nobodyさん mailto:sage [2007/11/13(火) 10:36:02 ID:???]
HTMLでおk

547 名前:nobodyさん mailto:sage [2007/11/13(火) 11:10:10 ID:???]
リンク元のURLに%??%??〜が含まれてる場合に、その文字をデコードしてUTF-8として表示しようとしています。
元の文字コードがUTF-8のときは問題なく表示できるのですが、
文字コードの判別を含めてやる場合どうやったらいいのでしょうか?
Perlのバージョンは5ですが、プロバイダ(@nifty)のサーバーのため標準モジュールを使用できません。
いきなり変換が難しいならUTF-8か否かを判別できれば、
UTF-8の場合→直デコード
UTF-8でない場合→直デコード→jcode.plで変換
でいいのかもと考えているのですが、UTF-8か否かの判別法がわかりません。
よろしくお願いします。


548 名前:nobodyさん [2007/11/13(火) 15:19:48 ID:lcS1D/Cp]
539です。
一応perlでは以下のように作りました。
#!/usr/local/bin/perl

use CGI;
$query = new CGI;

$q1 = $query->param('answer1');
if ($q1 eq Yes) {
open(F, ">>q2.html");
} else {
open(F, ">>q3.html");
}

でもこれだとエラーが出てしまいます。
どのように直せばいいでしょうか。
リンクのさせ方など教えて下さい。
課題提出は12月までです。
違うスレには書いていないので私ではないです。

549 名前:nobodyさん mailto:sage [2007/11/13(火) 15:34:47 ID:???]
use constant Yes => 'Yes';


550 名前:nobodyさん mailto:sage [2007/11/13(火) 15:56:31 ID:???]
課題は自分でやれwww

551 名前:nobodyさん mailto:sage [2007/11/13(火) 16:29:42 ID:???]
>>54
こんな感じはどうよ。適当に書いたからちゃんと動くかどうか知らんけど。
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use FileHandle;
use File::Spec;

my $cgi = CGI->new;
my $fh = FileHandle->new;
my $html_dir = '/path/to/html/dir';
my $output = $cgi->header( -type => 'text/html' );
my $fn = q{};

if ( $cgi->param('answer1') eq 'Yes' ) {
    $fn = 'q2.html';
}
else {
    $fn = 'q3.html';
}

$fh->open( File::Spec->catfile( $html_dir, 'q2.html' ) '<');
my $data = do { local $/; <$fh> };
$fh->close;
$output .= $data;

print $output;


552 名前:nobodyさん mailto:sage [2007/11/13(火) 16:30:23 ID:???]
レス番ミスった。
>>54
>>548

553 名前:nobodyさん mailto:sage [2007/11/13(火) 16:31:27 ID:???]
さらに訂正。
誤 $fh->open( File::Spec->catfile( $html_dir, 'q2.html' ) '<');
正 $fh->open( File::Spec->catfile( $html_dir, $fn ) '<');

554 名前:nobodyさん [2007/11/17(土) 14:33:33 ID:GlJQ98hk]
oshiete.new-akiba.com/archives/2007/01/webarchivedlwarrick.html
ここを見ながらコマンドプロンプトを操作しているのですが
ダウンロードされる段階まで行っても
Can't locate strict.pm in @INC (@INC contents: .) at C:\Program Files \warrick\warrick.pl line8.
BEGIN failed--compilairion aborted at C:\Program Files \warrick\warrick.pl line8.
と出ます。

意味もそもそも分からないのですが、解決方法教えてください

555 名前:nobodyさん mailto:sage [2007/11/17(土) 15:24:40 ID:???]
>>554
エラーの原因は@INCが空になってるから。なんでそうなってるのかは知らん。
ActivePerlを入れ直してみたら?

あとここはコーディングスレだからスレ違いだと思わなくもない。



556 名前:nobodyさん mailto:sage [2007/11/17(土) 20:14:46 ID:???]
>>555
最新版入れてみたけど同じでした
質問スレいってきます

557 名前:nobodyさん mailto:sage [2007/11/17(土) 20:58:37 ID:???]
>>にアンカを3つだけつけたいんだけど、これだと同じとこにリンクをかけてしまいます。
どうすればいいんでしょうか。
for($i=0;$i<3;$i++)
{
$str=~s/>>[0-9]{0,10}[-]{0,1}[0-9]{0,10}/<a href="$_[1]p=$&">$&<\/a>/;
$str=~s/p=>>/p=/;
}

558 名前:nobodyさん mailto:sage [2007/11/17(土) 22:00:49 ID:???]
$i = 0; $buf =~ s/(>>\d+)/$i++ < 3 ? "LINK:$+" : $+/egs;

559 名前:556 mailto:sage [2007/11/17(土) 22:23:56 ID:???]
>>558
ありがとうございます。
そんな書き方知りませんでした。

560 名前:557 mailto:sage [2007/11/17(土) 22:26:54 ID:???]
>>559
556じゃなくて557でした

561 名前:nobodyさん mailto:sage [2007/11/18(日) 19:50:49 ID:???]
自作モジュールをロードするときに、BEGINブロックで@INCに追加してからBEGINの外でuseするのは外道


562 名前:561 mailto:sage [2007/11/18(日) 19:51:25 ID:???]

「ですか?」が抜けた。
すまぬ

563 名前:nobodyさん mailto:sage [2007/11/18(日) 20:25:36 ID:???]
>>561-562
外道かどうか知らんが、普通は use lib でしょ。

564 名前:nobodyさん [2007/11/19(月) 06:13:08 ID:s0DcKkZM]
これからプログラムをやりたいと思ってます。
いまからやるならperlは覚えたほうがいいですか?

565 名前:nobodyさん mailto:sage [2007/11/19(月) 06:19:02 ID:???]
PHPでいいよ



566 名前:561 mailto:sage [2007/11/19(月) 08:54:57 ID:???]
>>563
ありがt

567 名前:nobodyさん [2007/11/20(火) 11:38:30 ID:PLctc9ni]
多重起動の禁止はできたが、解放がうまくいかない。
どこが悪いか教えてください。

#登録&多重起動禁止
use Win32::API;
use Win32::Mutex;
my $mutex = Win32::API->new("kernel32","CreateMutex",["N", "N", "P"], "N");
die "二重起動" if(Win32::Mutex->open('TestProgram123'));
$mutex=Win32::Mutex->new(1, 'TestProgram123');


#解放
my $releacemutex = Win32::API->new("kernel32","ReleaseMutex",["N"], "N");
$releacemutex->call($mutex);


568 名前:576 [2007/11/20(火) 14:43:38 ID:PLctc9ni]
自己解決

Win32-API使わなくてもできるのねぇ

569 名前:nobodyさん mailto:sage [2007/11/21(水) 03:27:48 ID:???]
むしろ何の為のラッパーだよ

570 名前:nobodyさん [2007/11/23(金) 21:52:32 ID:BH2PwYj+]
質問失礼します。

AとBの文字があるとき、文字列の中のBAを全てABにしたいときはどのような置換をすればいいのでしょうか?

例えば、
$s = "AABABABBBA";
と文字列があったら、
$s = "AAAAABBBBB";
にしたいのです。

$s =~ s/BA/AB/g;とすると、置換後を判定してくれないので、困ってます……

571 名前:nobodyさん mailto:sage [2007/11/23(金) 21:58:25 ID:???]
>>570
たとえば。
$ perl -e '$s = "AABABABBBA";while($s=~s/BA/AB/g){}print $s;'

572 名前:nobodyさん mailto:sage [2007/11/23(金) 22:00:18 ID:???]
>>570
その場合、これ以上置換できなくなるまで「$s =~ s/BA/AB/g;」の処理を行わなければならない。すなわち、ループである。
s/BA/AB/g;は、置換を行った回数を返す。つまり、0を返すまで処理を継続したいのだから、while文が使える。
したがって、次のようになる。
while($s =~ s/BA/AB/g;){}

whileのあとの{}の中に何も入っていないが、これでお望みどおり動くようである。

573 名前: ◆TWARamEjuA mailto:sage [2007/11/23(金) 22:31:04 ID:??? BE:6970188-2BP(6825)]
sortって云う手もあるよなぁ♪
print join "", sort split "", "AABBABABBBABAABBAABABABABA";

574 名前:570 mailto:sage [2007/11/23(金) 22:36:47 ID:???]
>>571-573
返信ありがとうございます。
無事whileを使う方法で出来ました。

575 名前:nobodyさん mailto:sage [2007/11/24(土) 07:56:01 ID:???]
>>574
遅レス。
他の文字が存在しないと云う条件下なら、素直に文字数カウントするって手もある
perl -le 'my $s = "atataaattttatatat" ; print "a" x ( $s =~ s/a/a/g ) . "t" x ( $s =~ s/t/t/g ) ;'
ま、他の文字が存在してても外側ループ一個つけるだけだけどね。

蛇足だと思ったんだが、、、、



576 名前:nobodyさん mailto:sage [2007/11/25(日) 15:53:28 ID:???]
ちょっと分からないので質問させてもらいます。
手作りで掲示板みたいなのを作ってるんですけど
Location:で二重投稿を禁止したくて書いたんですが投稿したあとにLocation:って文字が表示されて飛ばないんですけど
なんでしょうか?
普通なら飛ぶのに飛びません・・・。

誰か分かる方が居れば教えてください。

577 名前:nobodyさん mailto:sage [2007/11/25(日) 16:07:12 ID:???]
>>576
content-typeの前に書いてみ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef