[表示 : 全て 最新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/

437 名前:nobodyさん mailto:sage [2007/10/27(土) 16:43:19 ID:???]
>>434
Jcode::H2Z (Jcode.pm のサブモジュール) そのままだから。

438 名前:nobodyさん mailto:sage [2007/10/27(土) 18:53:28 ID:???]
utf8もページからフォームを入力して送信させると、
「〜」の文字だけがなぜか正常に送信されないのですが、なぜでしょうか?


439 名前:nobodyさん [2007/10/27(土) 22:19:08 ID:jIrqvOa/]
return +{};
という記述の意味を教えて下さい
空ハッシュを返すという事でしょうか?

440 名前:nobodyさん mailto:sage [2007/10/27(土) 22:50:14 ID:???]
>>438
何を以て「正常に送信されない」と判断したのか。
ja.wikipedia.org/wiki/%E6%B3%A2%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5
euc.jp/i18n/ucsnote.ja.html
www.asahi-net.or.jp/~hc3j-tkg/unicode/

>>439
perldoc.jp/docs/perl/5.8.8/perlop.pod
> 単項演算子の "+" は、たとえ文字列に対して用いられた場合にも、
> 何もしません。関数名に続けて括弧付きの式を書く場合に、関数の
> 引数リストと解釈されないようにするために用いることができます。

441 名前:nobodyさん [2007/10/27(土) 23:21:31 ID:jIrqvOa/]
>>440
ありがとうございます、単項演算子についてはわかったのですが
とあるCPANモジュールのコードで
return +{} unless $data;
というコードがあったのですがこれを
return {} unless $data;
と書かずに単項演算子の+をつけるのは
何か意図があるのでしょうか
戻り値自体はどちらでも同じような気がするのですが、、


442 名前:nobodyさん mailto:sage [2007/10/28(日) 00:49:00 ID:???]
ブロックとして解釈される場合があるんじゃね

443 名前:nobodyさん mailto:sage [2007/10/28(日) 04:52:46 ID:???]
+{ } :無名ハッシュでコンパイル
{; } :コードブロックでコンパイル

444 名前:nobodyさん mailto:sage [2007/10/28(日) 08:38:20 ID:???]
www.nicovideo.jp/watch/sm1024453
Perlで予約語プログラミング

445 名前:nobodyさん mailto:sage [2007/10/28(日) 08:48:47 ID:???]
www.nicovideo.jp/watch/sm1237738
Perl Programming: Web::Scraperモジュールの利用

↑これ何やってるの?



446 名前:nobodyさん mailto:sage [2007/10/28(日) 08:54:29 ID:???]
www.nicovideo.jp/watch/sm1233406
Perl Catalyst Programming (入門編)

↑これも何をやっているのか、
さっぱりわからんよ

447 名前:nobodyさん mailto:sage [2007/10/28(日) 09:22:22 ID:???]
まぁプログラミングを動画で見てもわからんよなw

448 名前:nobodyさん mailto:sage [2007/10/28(日) 09:30:40 ID:???]
そうか?

この動画だけは「何をやろうとしてるか」だけは伝わるぞ
ttp://www.youtube.com/watch?v=KyLqUf4cdwc

449 名前:nobodyさん mailto:sage [2007/10/28(日) 11:24:36 ID:???]
>>448
Aho da...orz


450 名前:nobodyさん mailto:sage [2007/10/29(月) 02:42:49 ID:???]
>>446 にある動画はなんかおかしいと思う。

451 名前:nobodyさん mailto:sage [2007/10/29(月) 11:17:19 ID:???]
質問させてください。
指定した文字が何回続いたかを取得したいのですがどうしたらいいですか?

例)この場合指定した文字は1です。
$a = '1111222';
$b = '1111136';

$aは4
$bは5

よろしくお願いします。

452 名前:nobodyさん mailto:sage [2007/10/29(月) 11:56:14 ID:???]
$a='1111222';$i='1';($r)=($a=~m/($i{2,})/);print length $r
全角はシラネ

453 名前:nobodyさん mailto:sage [2007/10/29(月) 11:59:30 ID:???]
$a = '1111222';
$c= 1;
$n= length(($a=~/((?:\Q$c\E)+)/)[0])/length($c);

454 名前:nobodyさん mailto:sage [2007/10/29(月) 12:31:05 ID:???]
perlは色んなやり方があって面白いね

$a = '111111222';
$n = '1';

$count = length(($a =~ /($n+)/)[0]);

455 名前:nobodyさん mailto:sage [2007/10/29(月) 13:04:18 ID:???]
>>451
$test_str = '111234111111';
$char = '1';

こういう場合は後半気にせず、まず見つけた連続の 3 でいいの?それとも、より長い連続の 6?
「はい、6 が得られるようにしたいんです」だと上に回答を書いた皆さんが優しくキレるかも。

あと、例なんだろうけど $a や $b は地雷踏むことがあるから気をつけてね。



456 名前:nobodyさん mailto:sage [2007/10/29(月) 13:25:31 ID:???]
use strict;
use warnings;
test('1111222' => 1 );
test('1111222' => 2 );
test('111122211' => 1 );
test('111122211' => 1 , 1);
test('1111136' => 1 );
sub test {printf "%s:%s:%s\n",$_[0],$_[1],_test(@_)}
sub _test {
local($a,$b);
(sort {$b<=>$a} map {length($_)} ($_[0] =~ m{($_[1]+)}g) )[ $_[2] ? -1 : 0 ];
}


457 名前:nobodyさん mailto:sage [2007/10/29(月) 17:04:12 ID:???]
my $i = '1' ;
print +( length ) . qq{\n} for split /[^$i]+/ ,$a ;


458 名前:456 mailto:sage [2007/10/29(月) 19:24:03 ID:???]
見直したらgdgdだったので修正しとく
sub _test { ( sort map length,$_[0] =~ /(${_[1]}{2,})/g )[$_[2] ? 0 : -1] }



459 名前:nobodyさん mailto:sage [2007/10/30(火) 23:38:44 ID:???]
一つのファイルで処理がたくさん書いてあって分岐させる時に、
例えば
$mode = $cgi->param('mode');
というデータを受け取って、処理の場合わけをする場合どういう書き方がエレガントなんでしょうか?

現状は
if ($mode eq 'post') { &post}
elsif ($mode eq 'edit') { &edit;}
elsif ($mode eq 'delete') { &delete}
else { &error}

こんな感じなのですが、それは初心者の書き方だって馬鹿にされました。
悔しいのでもっと効率的な方法があったら教えてください。

460 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/10/30(火) 23:52:20 ID:???]
>>459

エレガントかは分からないけど、分岐がある程度多い場合はこんな書き方だとすっきり書けるかと。

%actions = (post => \&post,
edit => \&edit,
delete => \&delete);

if(exists $actions{$mode}) {
$actions{$mode}->();
} else {
error();
}

数個程度なら if で分岐されちゃってもいいと思いますし、実際そうしています。


461 名前:nobodyさん mailto:sage [2007/10/30(火) 23:58:03 ID:???]
>>459
それでいいんじゃね?
各サブルーチンに戻り値があるなら「三項演算子」って手もあるし、
以下の様なやり方もあるけど、普通に書いてメンテ出来るものならば
バカにされても放置しとけば?

my %hash = (
  post => sub { 1 } , # &post の内容を書く
  edit => sub { 2 }, # &edit の内容
  delete => sub { 3 }, # &delete の内容
) ;
print $hash{'edit'}->() || q{error} ; #q{error} には&error あたりを、、、

ソース全体を見たら綺麗な書き方があるかもしれんが、
それに関しては情報不足。

462 名前:nobodyさん mailto:sage [2007/10/30(火) 23:59:04 ID:???]
ああ、丸かぶりだorz...

463 名前:nobodyさん mailto:sage [2007/10/31(水) 00:10:35 ID:???]
せめて、CGI::Applicationくらい使っとけって話なんじゃ。
if文分岐も分かりやすいと思うが、へたに小細工するとますますへたっぴに見える。

464 名前:nobodyさん mailto:sage [2007/10/31(水) 12:11:23 ID:???]
三項演算子ってタマに見かけるけど読みづらいんだよな。
使いたくない書き方No1かも。

465 名前:nobodyさん mailto:sage [2007/10/31(水) 13:29:29 ID:???]
 $expr1 ? $expr2
: $expr3 ? $expr4
: $expr5 ? $expr6
:      $expr7
;

書き方か頭が悪いんだろ



466 名前:至急 mailto:cgisupport@xxne.jp [2007/10/31(水) 15:17:23 ID:???]
CGIを自宅出張でサポートしてくれる方募集します。
CGIに詳しく都内に来れる方であれば可能
一日日払い即金で払います。
詳細はメール下さい。


467 名前:nobodyさん mailto:sage [2007/10/31(水) 15:47:41 ID:???]
>>459
エレガントかしらないけどこんなパッケージ作ってる。
(不要箇所削ったのでそのまま動くか不明)
package Local::Base;
use strict;
use warnings;
our $DEBUG = 0;
sub class {ref$_[0]||$_[0]||__PACKAGE__}
sub new {(bless {} => class( shift() ))->init(@_)}
sub mode :method {shift->param('mode',@_)}
sub method_name :method {shift->{method_name}->{ shift() }}
sub default_method :method {die('不正なmodeを受け取りました')}
sub init :method {
my $self = shift;
my %param = @_;
$self->{method_name} = $param{method_name} || {};
return $self->run_method( $self->mode , @_ );
}
sub run_method :method {
my $self = shift;
my $method = $self->method_name( shift );
$method = 'default_method' unless $method && $self->can( $method );
return $self->$method(@_);
}
1;


468 名前:nobodyさん mailto:sage [2007/10/31(水) 17:36:51 ID:???]
>>467
外部からinitとか呼ばれちゃわない?

469 名前:nobodyさん mailto:sage [2007/10/31(水) 19:51:49 ID:???]
>>467 method_nameチェックしてるから大丈夫

使い方も書いたつもりだったんだけど書けてなかった。
#!/usr/bin/perl
use strict;
use warnings;
use base qw(Local::Base);
my $r = eval{
__PACKAGE__->new(
method_name => {
edit => 'edit',
post => 'post'
}
)
} || $@;
print CGI->header,$r,"\n" unless ref $r;
######################################################################
# editの動作を定義
sub edit :method {
my $self = shift;
print $self->header;
print "EDITモード";
return $self;
}
1;


470 名前:nobodyさん mailto:sage [2007/10/31(水) 20:11:48 ID:???]
sub edit :method {
この :method って何の意味だっけ
perlsub見ても載ってないや
変数にも付けれた気がしたが

471 名前:nobodyさん mailto:sage [2007/10/31(水) 21:09:19 ID:???]
perlsub に載ってるし、perldoc attributesすれば詳細分る(perl5.8.1)。
perl attributes でググれば日本語のサイトも沢山出る。
変数に付けられるのは 5.8系

472 名前:nobodyさん mailto:sage [2007/11/01(木) 01:06:18 ID:???]
実際、CGI::Applicationとか使うと効率的になるの?
自分でゴチャゴチャ作るよりも。使ってる人いる?

473 名前:nobodyさん mailto:sage [2007/11/01(木) 02:26:10 ID:???]
CGI.pmで書くには複雑だけど、Catalystとかのフレームワーク持ち出すまでもないときには使える

474 名前:nobodyさん mailto:sage [2007/11/01(木) 10:48:57 ID:???]
> CGI.pmで書くには複雑だけど、Catalystとかのフレームワーク持ち出すまでもないときには使える

CGI::Application もフレームワークじゃないの?


475 名前:nobodyさん mailto:sage [2007/11/01(木) 17:27:41 ID:???]
>>470
:methodは組み込みのattribute
Attribute::Handlers使うと自作のattributeも作れる。
…がいつ仕様が定まってなくて変更があるかもってどっかで読んだ気がする。

>>474
・自分しかいじらない
・少人数で知識の共有が容易
・マニュアルが整っている
のどれかなら自作のフレームワークの方が慣れてるだろうし開発効率いいんじゃないかな?
フレームワーク自体のメンテナンスが(出来る|しなきゃいけない)のはデメリットか?

既製のフレームワーク使うのは
・他の人と知識の共有しやすい
・ドキュメントがある/(第3者も使ってるので)ノウハウが検索しやすい
・フレームワーク自身のメンテナンスを(あまり)しなくていい
ってとこかな?




476 名前:nobodyさん mailto:sage [2007/11/01(木) 18:07:59 ID:???]
>>475
???

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が含まれてればバイナリでいいんでないの
それ以外だと各文字コードの仕様を調べて
全データがそれに矛盾してないか判断するしかないと思






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

前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