トップページ⇒php
1001コメント343KB

【Perl】初心者コーナー Part13

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/05/30 13:06ID:R2kt1mTx
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

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

CGIの質問は【CGIだけど、なんか質問ある? part 6】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0345nobodyさん02/06/21 13:48ID:???
>343
商業化の中学校なんてあるのか。

>344
その単語で検索をかけるとかしてみた?
ttp://www.google.com/search?as_q=chdir+change+directory&num=100&hl=ja&ie=UTF-8&oe=UTF8&btnG=Google+%E6%A4%9C%E7%B4%A2&as_epq=&as_oq=&as_eq=&lr=lang_ja&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=
1520件もひっかかるんだけど。
0346nobodyさん02/06/21 13:50ID:???
>345 =~ s/商業化/商業科/;
小学校からやり直してきまつ。
0347nobodyさん02/06/21 16:22ID:???
>>345
chdir、
意味は知ってるんですけど。
音の発音が。

直でよむとチヂラ(藁<ソレハイカンダロウト
0348nobodyさん02/06/21 16:24ID:???
>>345
引っかかりはするんですが、大量に引っかかりすぎてみつけられなかったのですわ(苦藁
0349nobodyさん02/06/21 16:45ID:???
>347
発音記号は英和辞典に載ってる。
読め。

>348
一番上にひっかかるサイトにかなり載ってる。
読め。

じゃなければ検索用語に他のコマンドも入れてみろ。
頭使え。
0350nobodyさん02/06/21 17:26ID:???
chdirなんかを口に出して言う機会はほとんどないが、
脳内では「しーえっちでぃあ」って言ってる・・・(w
0351nobodyさん02/06/21 20:55ID:???
何故か脳内では"チディル"だな。
口に出すときは"チェンジディレクトリ"だけど。
0352nobodyさん02/06/21 20:59ID:YFodOum0

英語圏ではちだーですね
0353nobodyさん02/06/21 21:20ID:???
英語圏だけど「しーえいちでぃあ(←うーん、微妙に違うな)」だな。
0354nobodyさん02/06/21 21:52ID:???
自分で書いたモジュールで
Makefile.plっていうのは自分で書かなきゃきけないんですか?
自動で生成するツールはないでしょうか?
0355nobodyさん02/06/21 22:11ID:???
>>354
一応h2xsっつーユーティリティがPerlについてくるが、
Makefile.PLなんてそんな面倒なモンでもないだろ。
035635402/06/21 22:35ID:???
>>355
ありがとんヽ(´ー`)ノ 
0357nobodyさん02/06/22 00:31ID:???
ActivePerl-5.6.1.633-MSWin32-x86.msi
挿れようとしたらインストールが完走しない…鬱
0358nobodyさん02/06/22 00:38ID:???
>>357
ペッティングが足りないんだよ
0359nobodyさん02/06/22 00:42ID:???
>>358
完走しました?
0360 02/06/22 01:03ID:???
>>357
俺はできたぜ
0361nobodyさん02/06/22 01:15ID:???
わけわからんっ音符
0362nobodyさん02/06/22 01:58ID:???
>>360
激しく感謝!!

よく見たらHDD残量が150MBしかなかったので、足りない悪寒でした。
(−_−)ウツダシノウ
嗚呼、10MBもあるドキュメン入れたくねぇ…
0363nobodyさん02/06/22 09:50ID:???
ちょい質問。
ActivePerlって下の環境残したまま上書きインストール出来るっけ?
最新版にしたくてもそれがほそろしくて試せない…
0364nobodyさん02/06/22 10:40ID:KPuvG/sZ
「Web クライアント プログラム」(オライリー・ジャパン)の 例題 hcat.pl
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;

my $ua = new LWP::UserAgent;
my $request = new HTTP::Request('GET', $ARGV[0]);
my $response = $ua->request($request);

if ($response->is_success) {
print $response->content;
} else {
print $response->error_as_HTML;
}
で、
hcat.pl http://www.hyuki.com/dp/dp.jpg > dp.jpg
とすして、dp.jpgを見ると、ちゃんとした画像になりません。
どうしてでしょうか。教えてください。
環境は、ActivePerl v5.6.1 built for MSWin32-x86-multi-thread、
windows2000 professional です。
0365xx02/06/22 10:49ID:???
ちゃんとした画像にならないということは、ぐだぐだな画像になってしまうのか、
開けないけど容量はあるってことだろうから、ファイルハンドルを binmode
すれば?
0366 02/06/22 12:03ID:???
>>363
できるけどオススメしない。
0367nobodyさん02/06/22 12:11ID:???
>>363
旧Ver.に戻すのは簡単
ttp://downloads.activestate.com/
0368べっくあむ02/06/22 12:16ID:9y/Dp6Qo
PerlのDBIを使って、MySQLを操作しようとしています。
書籍やインターネットでやり方を調べていく中で、次のような
注意事項が記載しているものを見つけました。

1:$dbh = DBI->connect(****);
2:$sth = $dbh->prepare(*****);
3:$sth->execute();
4:$sth->finish();
5:$sth = $dbh->prepare(*****);
6:$sth->execute();
7:$sth->finish();
8:$dbh->disconnect();
の様に一回のDBコネクション中で2回のコマンド発行を
するときは、一回目(上記2〜4)と二回目(上記5〜7)で
ハンドル変数名を変えなければならない(例えば5〜7は
$sthではなく、$sth2にする)というものです。

自分の環境下の簡単なプログラム中では問題なく
動いているのですが、本当に注意すべき内容なのでしょうか?
0369nobodyさん02/06/22 14:04ID:fNvTUaUi
                           __
..⌒ヽ           ' ⌒ヽ          /.|:::::::::::|
乂乂||          |乂乂||        |  |:::::::::::|
乂乂||          |乂乂||        |  |:::::::::::|
乂乂||          |乂乂||   ___|_|:::::::::::|____
乂乂||          |乂乂||  /|::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
 ̄ ̄            ̄ ̄  i  |::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
      _____         .|/ ̄ ̄ ̄../|:::::::::::| ̄ ̄ ̄/
     ||L L | L L ||        ̄ ̄ ̄ ̄|  |:::::::::::| ̄ ̄ ̄
     ||L L | L L ||               |  |:::::::::::|
     ||L L | L L ||_________ .|  |:::::::::::|
===========l| L L l================= i  |:::::::::::|
二二二二二二ヽ   iヽ二二二二二二二二i  |:::::::::::|
:::::::::::::::::::::::::::::::::::i   ヽ|     _____.i  |:::::::::::|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄\  ((( )))_______|  |:::::::::::|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|......( ´Д`)._____|  |:::::::::::|__
::::::::::::::::::::::::::::::::::::::::: |  /  (S)::::::i\  ....|  |:::::::::::|  \
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| .\ ....\|:::::::::::|    \
      ____/|____  .|   .\    ̄ ̄
     /
     | Perlスクリプトから、2ちゃんに書き込める方法を教えてください。
     \_______________
0370永久会員パスが書き込みするだけで当たる02/06/22 14:12ID:E0ppwG7L
http://s1p.net/rvvvvh

 http://s1p.net/tyyopp

わりきり出会い
   
   UG-S的出会い

   PCのみ受付中  
男性、女性書き込み
キャンペ-ン中
 おかげさまで5000HT
ラッキナンバー
(111,333,555,777,999)
男性、女性書き込み するだけ
当選者には永久会員パスワード
と1万円プレゼント!!
0371nobodyさん02/06/22 14:57ID:???
>>368
別に変えなければ動かないということはないけど違う用途の
(ハンドル|オブジェクト|数|文字列|・・・)を同じ変数に代入して
変数を使いまわすのは間違いをおかしやすかったりとあまり良い
スタイルとは言えないかも。

(同様に$sth1、$sth2という名前もお勧めできない)
0372nobodyさん02/06/22 19:01ID:PwKD5Bpr

$dir = ディレクトリ 、 $file = 数字

open(DATAOUT, "+< $dir . $file . '.dat'") || die &Error;

えっとこういう処理があるんですが、読み書きモードでファイルを開けないんです。
というかファイル名を認識してくれないみたいです。

open(DATAOUT, $dir . $thismonth . '.data') || die &Error;

↑このように読み込みモードだとちゃんと認識してくれるんですが、読み書きモードでちゃんと
認識するようにするにはどうすればよいでしょうか?

いろいろ "" を '' にしたり、. を \. にしてみたりしたんですがうまくいきません・・。
お願いします。
0373nobodyさん02/06/22 19:36ID:???
>372
もうちょっとダブルクォーテーションについて考えてみた方がいいぞ。

open(DATAOUT, "+<$dir$file\.dat") || die &Error;
037437202/06/22 19:42ID:???
>>373
おぉ〜〜〜できましたっ!! ありがとうございます!

>もうちょっとダブルクォーテーションについて考えてみた方がいいぞ。
はい考えてみます (´Д`;;)

ありがとう。
0375アルバムモナ02/06/22 19:57ID:sE7wyej0
JPEGの縦横サイズを吐き出すライブラリがほしいのですが下記で見つけたものでは
Exif形式に対応してなくて困っています。
下記のものを改造してExif形式にも対応させたいのですがどのようにしたらいいでしょうか
教えてください。
http://www.aleph.co.jp/~fujiwara/perl/get_imgsize.pl
0376べっくあむ02/06/22 21:20ID:9y/Dp6Qo
>>371
ありがとうございます。
動作上は問題ないと言うことですね。

>変数を使いまわすのは間違いをおかしやすかったりとあまり良い
>スタイルとは言えないかも。
確かにこんな変数名では、ちょっとしたタイプミスで、
見つけ難いバグを自らの手で作ってしまいますよね。
気をつけてみます。
0377nobodyさん02/06/22 21:20ID:???
>>375
そんな3年も前の化石なんか使うなよ。
これじゃだめなのか。
http://search.cpan.org/search?dist=Image-Size
0378nobodyさん02/06/22 22:37ID:???
掲示板で、半角カナが文字化けしてしまうことがあるんですが、対策とかないですか?
半角カナを全角に変換とかはしたくないんですけど。。
0379xx02/06/22 23:26ID:???
>378
サーバの環境および現在のフォーム出力文字コードぐらいは書いてもらわないと、、、、
0380nobodyさん02/06/23 18:26ID:izD8oNpG
win2kのCドライブにapache1.3.26、ActivePerl-5.6.1ビルド631をインストールしました。
Dドライブにある下記のようなCGIスクリプトをapache経由で実行したら、
. のみでした。

そこで、コマンドプロント上で「perl inc.cgi」と実行したら、
ちゃっんと
C:/usr/local/lib
C:/usr/local/site/lib
.
とでます。

apache経由でも
C:/usr/local/lib
C:/usr/local/site/lib
.
になるようにできますか?

-----
#!/usr/bin/perl
print "Content-type:text/html\n\n<xmp>";
for(@INC){
print $_,"\n";
}
exit;
------
0381nobodyさん02/06/23 18:30ID:jOy7H3G4
>>380
原因はよくしらないがperl -Iでどうかね。
それか@INCに対しpushするか。
0382nobodyさん02/06/23 18:38ID:???
>>380
まったく同じ環境でちゃんと表示されますが。
038338002/06/23 19:00ID:???
原因がわかりました。
perlをc:/usr/local にインストールしたのですが、
/usr/bin/perl のスクリプトでも使えるように、
C:/usr/local/binをc:/usr にコピーしてたのが原因だったようです。


#前まではできてたのになぁ。。。
0384nobodyさん02/06/24 01:51ID:???
while(<>){
$n=pack "h*", "$_";
print $n;
}
で読み込んだテキストを元にもどす方法ってどうやるんですか?
while(<>){
$n=unpack "h*", "$_";
print $n;
}

じゃだめなんですけど
0385nobodyさん02/06/24 03:26ID:???
>>384
それpackとunpackの使い方が逆でない?
while (<>) { print unpack("h*", $_); } # テキスト→16進
while (<>) { print pack("h*", $_); } # 16進→テキスト
0386nobodyさん02/06/24 18:03ID:pso5a6KF
perlのファイル書き込み時にわたしはいつも
open(DATA, ">$cdata")|| &write_error;
flock(DATA, 2);
print DATA @newdata;
flock(DATA, 8);
close(KDATA);
などとしています。
このflockは排他処理には役に立たないような事がよく
書かれていますが全く役立たないのでしょうか?
なにも処理しないよりはマシという程度ですか?
0387nobodyさん02/06/24 18:21ID:???
>flock ってのは「このファイルは俺が使うから誰も触るなよ」
>って宣言するだけです。礼儀正しい人は「もう触ってもいいよ」って言われるまでは触りません。礼儀正しくない人は構わず触っちゃいます。ただそれだけです。つまり、単なる紳士協定。OK?
># これ以上簡単な説明は出来ないよ。

過去スレのJAPUさんのセリフより。
0388nobodyさん02/06/24 18:41ID:kznFdEhQ
>>386
flock(DATA,8);は別にいらん
0389nobodyさん02/06/24 19:35ID:???
>>386
全体を見ないと確かなことは言えないけど、
書き込みのときだけロックしてもだめ。
データの読み出しから書き込みまで、
ずっとロックし続けないと排他処理にならない。
0390nobodyさん02/06/24 21:50ID:???
ロック厨が多いな。集まれ〜♪
【Perl】ファイルロック(排他処理)について語ろう
http://pc.2ch.net/test/read.cgi/php/1024795138/
039138602/06/24 21:52ID:pso5a6KF
>>387-389 皆さんのご意見とてもためになりました。
ありがとうございます。
>>388さん そうなんですか、知りませんでした。
>>389さん これも驚きました。読み込みの時はflock使ってませんでした。
本に書いてあるものをそのまま参考にしていました。
わたしの使い方は問題あるんですね。もう少し調べてみようと思います。
0392nobodyさん02/06/24 22:32ID:???
おいおいマジでレベルが下がったな。
>>386のロックが役に立たないってのは
open HANDLE, ">file"; # まずfileの中身を空にして開く、と…
flock HANDLE, 2; # ロックするかな

このopen & truncateが問題だろ。
正しくは

open HANDLE "+<file"; # 読み書きモードで開く、と…

>>386の方法でも何もしないよりはマシかもしれんが、
確実に効果がある、とは程遠かろう。
0393nobodyさん02/06/24 22:49ID:???
flockはやっぱダミーのファイル用意して、
それをopen(&flock)してる間に処理、っていうのがいいんじゃないかな。
0394nobodyさん02/06/25 13:52ID:???
http://pc.2ch.net/test/read.cgi/php/1019561283/850 へ。

そういう場合は、やはりgrepでしょう。
@URI = grep { s/^Location_URL=(.*)/$1/ } @list;
0395あっちの85002/06/25 15:42ID:???
>>394
なるほど。どうもありがとうございます。
0396nobodyさん02/06/25 15:48ID:???
>>394
grepで元の配列を壊すのはいかがなものかと。
@URI = grep { /^Location_URL=(.*)/ } @list;
039739602/06/25 16:00ID:???
スマソ、396は忘れて。
ところで元の配列を壊さずに一部を取り出す一番効率の良い方法ってどんなんだっけ…。

@URI = map { substr $_, 13 } grep { /^Location_URL=(.*)/ } @list; # じゃないよな…
039839402/06/25 16:24ID:PBYsCZmL
う。ソウダネ>破壊マズー
元を壊さずにそれ(>>397)より効率のいい方法ってあるんかいな。
0399fusianasan02/06/25 16:51ID:???
>397
59点ってとこだな。
0400nobodyさん02/06/25 17:02ID:???
実はmapはgrepとしても使える罠
@URI = map{ /^Location_URL=(.*)/ ? $1 : () } @list;
0401nobodyさん02/06/25 17:11ID:???
>>400
それ知らなかったよー。兄ちゃんありがと。
0402perl5.6.102/06/25 21:24ID:???
このままだとtruncate()が絶対に失敗するんですが。
失敗しなくするにはどうすればいいですか?
#!/usr/bin/perl -w
use strict;

sub t($);

open(F, "+<in.txt");  # aが30個くらい並んだだけのファイル
t(*F{IO});
close(F);

sub t($)
{
  my $f = shift;
  truncate($f, 10) || warn("error");
}
0403nobodyさん02/06/25 22:16ID:???
>>402
*F{IO}は型グロブではなく、リファレンスだから、
デリファレンスする必要がある。
truncate(*$f, 10)
0404nobodyさん02/06/25 23:21ID:???
>>403
402じゃないけど質問させてください。

open F, ">file.txt" or die;
my $fh = *F{IO};
print {$fh} "test\n" or die;
truncate *$fh, 10 or die;
close $fh or die;

このコードで、printやcloseは$fhでも*$fhでもオーケーなのに
truncateだけは*$fhしか指定できないんですが、どういうこと?
0405nobodyさん02/06/25 23:25ID:???
>>404
Perlのバグっぽい気が。
尤も、生のIOオブジェクトを使うと、Tieによるオーバーロードが効かなくなるんで素人には(略
040640402/06/25 23:35ID:???
うわ。すばやいレスありがとうございます。
実は402を見てからperlrefとか読んでいろいろ実験してたので、
まだIOオブジェクトがよくわかってないのですが、
これがバグとわかれば安心して眠れます。
0407nobodyさん02/06/26 03:05ID:???
>>402 >>404
なんでそんなわかりにくいもん使うの?オブジェクト使いたかったら
素直にIO::Fileとか使えばいいのに・・・
0408perl5.6.102/06/26 07:02ID:???
>>404
printに*$fhって渡せました?
おれの環境では下のコードはsyntax errorになるんです。
#!/usr/bin/perl -w
use strict;
my $stdout = *STDOUT{IO};
print *$stdout "test\n";   # print $stdout "test\n";なら大丈夫

>>407
モジュールの使い方を調べたり覚えたりするのが面倒だっただけです。
*FOO{THING}自体はそんなに分かりにくいものでもないし。

関係ないけど、sort { $a <=> $b } @f;の方が分かりにくいです。
use strict;なのに$aと$bは宣言しなくていいのは何、みたいな。
0409nobodyさん02/06/26 09:25ID:???
>>408
use IO::File;

my $fh = IO::File->new( $filename ); ## open()と基本的に同じ
print $fh "foobar\n";

のどこが面倒くさいのだろうか。少なくともグロブがなんちゃらとか
考えるよりかはるかにシンプルだと思うんだけどな。大体perldoc perlref
を読んでる暇があるのにperldoc IO::Fileが面倒くさいのもわからんし。

まぁ使いたくなかったらそれはそれでいいんだけど。素直に使ったほうが
楽だし、そのほうがPerl コミュニティのカルチャーにそってると思う。
041040402/06/26 09:37ID:???
>>408
print関数の第1引数は、シンボルでもスカラ変数でもない場合は
ブロックに入れないと構文エラーになるよ。(昨日覚えた)
print {*$stdout} "test\n";

>>409
ほっといてくれー。こういう瑣末なことを調べるのが趣味なんだよー。
たぶん408の人も、おれと同じタイプ。
あ、もちろん実際にスクリプト書くときは素直にIO::File使います。
0411nobodyさん02/06/26 12:14ID:???
>>410
ああまぁ趣味のスクリプトとかならいいんですけどね。
プロダクションコードでそういうのを見たくないのでとりあえず
牽制した、ということで。
0412nobodyさん02/06/26 15:38ID:1ADBKX33
自分でちまちま作ったCGIを公開しようと思ってるんですが
(公開といっても使うのはネットの仲間だけ)これだけはしちゃイカン!って
処理とかあるんでしょうか?cgiのバグでunixコマンドを打てるとかっていうのが
気になるんですけど。
0413 02/06/26 15:49ID:???
>>412
>cgiのバグでunixコマンドを打てる
とんでもないのがあるじゃねーか!
0414nobodyさん02/06/26 15:50ID:???
>>412
-Tスイッチをつけないで実行しちゃいかん。

何をすべきでないのかわからないなら、これは必須。
0415nobodyさん02/06/26 16:55ID:???
#!/usr/bin/perl -UX
0416nobodyさん02/06/26 17:29ID:ZfGn23SZ
>>414
>>412じゃないんですが -T スイッチってどんなものなんでしょう?

-wスイッチはつけるようにしてるんですけど -T スイッチは見たことがありませんでした・・。
041741602/06/26 17:36ID:ZfGn23SZ
あっ調べてみたらありました。
http://tech-web.net/perlmania/perlrun2.html
汚染チェックをオンにするとか書いてますけど、なんだろう・・?
つけておいたほうがいいのかな。
0418nobodyさん02/06/26 17:39ID:???
罵倒覚悟で聞きます
Perlで2chのDAT直読みは無理なんでしょうか?
User-Agent: Monazilla/1.00 (toolname/ver) ←こうゆう風にしても
無理なんですけど、、。
0419nobodyさん02/06/26 18:17ID:???
Accept-Encoding: gzip
は?
0420nobodyさん02/06/26 18:26ID:???
別に罵倒するつもりはありませんが、普通に取得できましたが・・・
URLが間違ってるとかそこら変チェックした方がいいかと思います。

#!/usr/bin/perl
use LWP::UserAgent;

my $ua = new LWP::UserAgent;
my $request = new HTTP::Request('GET', 'http://pc.2ch.net/php/dat/1022731565.dat');

$ua->agent('Monazilla/1.00 (libwww-perl/5.65)');
$response = $ua->request($request);
print $response->as_string;
042141802/06/26 18:37ID:???
>>420
謝謝、
URLが間違ってたみたいです。
Perlでは規制がかかってると思ってあきらめてたんですが、、よかった。
042241202/06/26 18:50ID:1ADBKX33
>>414
1行目を#!/usr/bin/perl -T にするって事でしょうか?
unixコマンドを打てる、というバグを発生させないためにはどうすれば
どんな点に注意すればいいんでしょう?
バグというか、何も対策してないcgiだとアドレスのcgi-bin/xx.cgi?の後ろに
いろいろへんなのを入力するとunixコマンドを打てるとかいうバグがある話を
聞いたんですが。
0423nobodyさん02/06/26 18:58ID:???
>>422
あなたきもい
0424nobodyさん02/06/26 19:25ID:???
>>422
いっぱい情報あるから検索すれ。キーワードは「脆弱性」「CGI」等。
0425fusianasan02/06/26 19:28ID:???
>422
要は、ブラウザ側で入力された値をチェックしないでそのまま以下のような
関数に渡さなければいいだけ。

open
exec
system
qx//
eval
``
0426nobodyさん02/06/26 19:47ID:CyvQGqzW
grepもマズーじゃねーの?
0427nobodyさん02/06/26 20:55ID:???
>>422
そのほか、クロスサイトスクリプティングにも注意。
たとえば、User-agentを内容をチェックせずにそのまま出力しちゃだめ。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
0428nobodyさん02/06/26 23:02ID:???
バグじゃないだろ…
0429nobodyさん02/06/26 23:13ID:???
>Unixコマンド実行
それがバグだったら世界中のPerlUserが嘆くことになるな。
0430nobodyさん02/06/27 01:16ID:riwIozkn
質問です。

$a = '&xyzあいうえお<A href="http://www.xxx.com">リンク</A>';

$a =~ s/&[^lt;|^gt;]/&/g;

こんな感じで文字列の < と > 以外の & を & に置換したいのですが、
上のようにすると & の次の文字(ここでは x)が消えてしまいます。
どうすれば &xyz とすることができるでしょうか?
043142902/06/27 01:19ID:riwIozkn
あぁ・・失敗したのでもう一度かかせてください・・

$a = '&amp;xyzあいうえお&<A href="http://www.xxx.com"&>リンク&</A&>';

こんな感じで文字列の &< と &> 以外の & を &amp; に置換したいのですが、
上のようにすると & の次の文字(ここでは x)が消えてしまいます。
どうすれば &amp;xyz とすることができるでしょうか?
0432nobodyさん02/06/27 01:19ID:???
$a =~ s/&([^lt;|^gt;])/&amp;$1/g;
0433nobodyさん02/06/27 01:21ID:???
ちなみに、どっちにしろこれじゃあ思う通りの効果はえられないと思う。
0434430と43102/06/27 01:22ID:???
>>432
うわ〜〜〜もうお答えいただきました(´∀` )ノワーイ!
ありがとうございます。ちゃんとできました。
0435nobodyさん02/06/27 10:09ID:???
>>432
それって違うと思うけど・・・

$a =~ s/&(?!=lt;|gt;)/&/g;

じゃないの?[]で囲んだらcharacter classになっちゃうじゃん。
432の正規表現では&のあとの文字がg,l,t,;,|,^だったら&
に変換されないぞ(例:&lz; &gxcv; &;;; )
0436nobodyさん02/06/27 10:15ID:???
あ、すげー間違った。すまぬ。

s/&(?!lt;|gt;)/&/g;
0437nobodyさん02/06/27 10:16ID:???
ありゃ?あ、そうか。&amp;amp;ってかかなきゃいけないのか・・・
0438430と43102/06/27 16:35ID:???
>>436
それで完璧にできました。ありがとうございます。

正規表現勉強しないと(°_°;A)アセ
0439nobodyさん02/06/27 17:36ID:???
すみません。消費者を騙し、クレームをつけると強烈な脅しで黙らせる位の
ひどいサイトがあります。思いきってサイト(HDD)をクラッシュさせたいのですが、
何かいい方法はあるのでしょうか?
こちらのIPとか所在がわからないようにしたいのです。
こう言う質問にお答えとなると問題がある場合、こういった専門サイトとかがあれば
お教え頂けないでしょうか。
0440nobodyさん02/06/27 17:43ID:???
す
ひ
何
こ
こ
お

???
縦読みじゃないのか
0441nobodyさん02/06/27 17:58ID:???
>>439 
俺はここの一流ハッカーに頼んでHDDを爆発させてもらったよ
http://www.qudsway.com/Links/Doctor/4/Html_Doctor4/4hdo9.htm
0442nobodyさん02/06/27 19:54ID:???
特殊変数 $# はどのように利用するのでしょうか?
「出力時の数値形式」ということまでは分かったのですが...。
0443nobodyさん02/06/27 20:11ID:???
>>442
-wスイッチの元で警告されるように、$#の使用はお勧めできない。
Cレベルでの内部操作だから簡単にDLLエラー(Unixだとコア吐くのかな?)を出せるしな。
それでも使いたければ:

$# = '%.3g';
print 8/9;
0444trrh02/06/27 23:55ID:mvLF/G5v
while (<file1>){
$file1++;
}
close(file1);


while (<file2>){
$file2++;
}
close(file2);

while (<file3>){
$file3++;
}
close(file3);


while (<file4>){
$file4++;
}
close(file4);

上記のソースを短く出来ませんか?
0445nobodyさん02/06/28 00:03ID:???
>>444
ネタはこちらへ。
http://pc.2ch.net/test/read.cgi/php/1024741312/
■ このスレッドは過去ログ倉庫に格納されています