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

Perl 初心者コーナー Part24

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆fBgbHI04bQ 03/06/07 22:30ID:GbQKLcPE
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
0009 ◆fBgbHI04bQ 03/06/07 22:35ID:GbQKLcPE
>>8
スマソ。すっかりわすれてた
0010nobodyさん03/06/07 23:37ID:???
どんまい(´∀`*
0011nobodyさん03/06/07 23:39ID:???
おい!おまいらもすごろく作りに参加汁!
http://life2.2ch.net/test/read.cgi/offreg/1054655407/l50
ちなみにこれはコピペしてひろめてくれ。
0012nobodyさん03/06/07 23:51ID:???
ABCDEFGという文字列からABだけ取る方法教えてください
0013nobodyさん03/06/07 23:54ID:???
>>12
substrで先頭から二文字抜き出す。
0014nobodyさん03/06/07 23:56ID:???
$a = "ABCDEFG";
$b = substr($a,0,2);
ネタにマジレスしときます
0015nobodyさん03/06/07 23:56ID:???
>>12
正規表現で/(AB)CDEFG/
0016nobodyさん03/06/08 00:00ID:???
s/CDEFG//
00171203/06/08 00:08ID:???
みなさんありがとうございました!
cryptで暗号化した文字の最初の2文字が邪魔でした。
助かりました。
0018nobodyさん03/06/08 00:18ID:???
htmlのソースを、cgiで開いて、
tetxareaに入れてかえすスクリプトですが、
ソースもhtmlのタグと勘違いして、
変になるんです。

=====================
| #!/usr/bin/perl    |
|               |
|               |  ←テキストエリア(ソースが表示される)
|               |
| print "<html><body> |
|====================|
print "aaa"\n;         ←テキストエリア外で、タグとして読んでしまう。

こうなるんですが、対処法はないですか?
<>などを変えないでできる方法ってないですか?
0019nobodyさん03/06/08 00:29ID:???
>>18
ここはPerlのコーディングスレ。
どこが悪いのか質問したいならソースぐらい貼って。

単に方法を知りたいだけならスレ違い。
0020nobodyさん03/06/08 00:31ID:???
>>19
あ、違いました。
ソースファイルの中の</textarea>を
実際に出力している</textarea>と勘違いしているようです。
これを、見た目の変化を変えずに表示できませんか?
0021nobodyさん03/06/08 00:33ID:???
Perlと関係ねー(T_T)
<を<に、>を>に変える。嫌なら諦める。
00222103/06/08 00:33ID:???
あら・・・・
<を&lt;に、>を&gt;に変える。
0023nobodyさん03/06/08 00:39ID:???
>>18
クロスサイトスクリプティングって聞いたことあるか? 知らないなら
そんなCGIは作るな、設置するな。いいな命令だ。
0024nobodyさん03/06/08 00:39ID:???
>>22
あ、その方法がありましたね。
それでやてみます。。。
でも、すべて変えるとめんどそーなので
</textarea>のところのみにしときます。
ありがとうございました。
0025nobodyさん03/06/08 00:40ID:???
>>24
氏ねバカ
0026nobodyさん03/06/08 00:41ID:???
>>23
掲示板に
<#-- exec
↑あいまい
みたいに、タグ書くやつでしょ?
0027nobodyさん03/06/08 00:45ID:???
>>26
http://www.google.co.jp/search?q=%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0028nobodyさん03/06/08 01:07ID:???
>>26
バーカ
0029nobodyさん03/06/08 01:13ID:???
フォームから送られてきた内容をPerlのevalで実行するCGIを置いているけどまずいの?
0030nobodyさん03/06/08 01:15ID:???
>>29
>>27
0031nobodyさん03/06/08 01:31ID:???
>>29
あたりまえでしょうが!何を考えてんだか・・・
どっちにしてもスレ違いなので終了するか適切なスレに移動して
0032nobodyさん03/06/08 01:36ID:XzEWy/kW
すいません。少々質問です。

http://atashi.net/inu/ja/software/msnp_status.txt

これってどういうモノなのでしょうか?
MSNの何かのようですが,どういうモノなのか知りたいです。
それでは宜しくお願いします。
0033nobodyさん03/06/08 01:36ID:???
>>29
サーバは、レンタルサーバ?
最悪、損害賠償を請求される場合があります。
悪い事言わないから、
もうちょっと分かるまで勉強してから動かすか、
諦めるかしなさい。
0034nobodyさん03/06/08 01:42ID:???
>>32
質問は適当なスレでやってください。

URL削ればわかるだろうに

ttp://atashi.net/inu/ja/software/
msnp_status.cgi version 1.02
MSN Messangerのオンライン状況を表示するためのものです。
0035nobodyさん03/06/08 02:51ID:???
>>34
作者の宣伝に決まってるだろ。
0036nobodyさん03/06/08 03:04ID:???
>>35
うん、しかもパクリだ
0037nobodyさん03/06/08 12:52ID:???
>>32
$passwdの所でいきなり構文エラーだね。
0038nobodyさん03/06/08 14:10ID:???
>>24
志ねヴァカ。

とりあえず、そのHTMLのソースに
<script>(中略)</script>
なんてあったらどうなるか分かっているの?

とりあえず、>を&gt;に、<を&lt;に、&を&amp;に位はやっとけ。
ついでに"も&quot;に。

置換の順序も分からん馬鹿はいないと思うので、略。
0039nobodyさん03/06/08 14:23ID:???
>>38
エェー、危ないのでcryptパスワード認証つけて、ファイルの作成、編集ができるようになっているから、
<script>はないと思うけど、でもしたほうがいいかな。。。

疑問に思うんだけど、>とかしても、実際には<って表示されるんだけどなぜ?
>とかってするとただの特殊記号とみなすの?
0040nobodyさん03/06/08 14:24ID:???
ごめん、表示されてない。

疑問に思うんだけど、&gt;とかしても、実際には<って表示されるんだけどなぜ?
&gt;とかってするとただの特殊記号とみなすの?

0041nobodyさん03/06/08 14:26ID:???
>>40
&gt; は <と
&lt; は >と。
&&は & と
&quot; は " 表示される。
0042nobodyさん03/06/08 14:27ID:???
<や>がHTMLでは何を意味するのか考えれば分かると思うけど
0043nobodyさん03/06/08 14:27ID:???
>>41
ミス &ampは&
0044nobodyさん03/06/08 14:29ID:???
あぁそっか。
htmlで<などを表示するときに>などを使うから、
タグではなくなるってことか。。。
0045nobodyさん03/06/08 14:33ID:???
>>44
いままで理解してなかったのか。場亀。
0046nobodyさん03/06/08 14:34ID:???
$_ =~ s/</</g;
$_ =~ s/>/>/g;
$_ =~ s/&/&/g;
$_ =~ s/"/"/g;

なんで、これでできない・・・・・・
ダブルクォーテーションとアンドはできるのに・・・
0047nobodyさん03/06/08 14:37ID:???
&をさきにエスケープしなければだめだろ。
前の処理で&lt;にしたものが(ry
0048nobodyさん03/06/08 14:37ID:???
実体参照ネタは相変わらずめちゃくちゃになるなぁ。
ちゃんと書けないんなら全角にでもしとけ。
0049nobodyさん03/06/08 14:38ID:???
>>38の最終行にぴったりの質問が来ました。

超・初心者な質問だから他へ・・・と思ったらここが初心者スレだった罠。
でも、もう少し頭を使ってくれよ
0050nobodyさん03/06/08 14:39ID:???
>>47
そうでした。
ありがとうございます
0051nobodyさん03/06/08 14:41ID:vz1j93aY
質問です。
WinXP HOME EDITION(←スペルちがってたらすいません)でアクティブパール5.8なんですが、
unlink(<*.txt>)でうまくいかないんですが、Winだからですか?
0052nobodyさん03/06/08 14:41ID:???
foreach( <FILE> ){

# タグを特殊記号に変換
$_ =~ s/&/&amp;/g;
$_ =~ s/</&lt;/g;
$_ =~ s/>/&gt;/g;
$_ =~ s/"/&quot;/g;
print;
}

こんなんでできました。
下3つの順番はどうでもいいですよね?
0053nobodyさん03/06/08 14:43ID:???
unlink(<*.txt>)

こう書くとワイルドカードが使えるようになるの?
0054nobodyさん03/06/08 14:43ID:???
>>51
()いらない
00555303/06/08 14:44ID:???
らくだに書いてあったか。
00565103/06/08 14:45ID:???
>>54
書いたらだめなんか?()
消しても結果は同じだった。消えない・・・。
0057nobodyさん03/06/08 14:47ID:???
>>56
unlink <*>
やってみて
てか、;忘れてるなんてないよね?
00585303/06/08 14:50ID:???
Windows2000ではできたぞ。
00595103/06/08 14:51ID:???
>>57
フォルダが読み取り専用になってた。
でも、みてみたら、どのフォルダも(PC内)読み取り専用だった・・・。
しかも、解除できない。関係ある?
0060nobodyさん03/06/08 14:54ID:???
読みとり専用でも消せるけど・・・
0061nobodyさん03/06/08 15:03ID:???
>>59
うまくいかないときは「どううまくいかないのか」を書いてくれ。
00626103/06/08 15:05ID:???
ああ、消えないのか……
スクリプトは削除対象のファイルと同じディレクトリで実行させてるよね?
00635103/06/08 15:08ID:???
>>62
ありがとう。
すごくあふぉなことやってた。↓の階層にファイルあるのに消そうとがんばってた。
消す前に、chdirで移動したら消せた。
お騒がせしてすみませんでした。
0064直リン03/06/08 15:10ID:+3TQ1ee9
http://homepage.mac.com/yuuka20/
0065nobodyさん03/06/08 15:10ID:???
0066nobodyさん03/06/08 17:40ID:???
2chのトリップみたいのを付けたいです。
名前#123
↑で123だけ抜き出す方法が知りたいです。
0067nobodyさん03/06/08 17:54ID:???
あのさ。
ここはなんで調べもしないで来る人が多いのか?

初心者だから分からない、ではなくて調べてないから分からない。
って質問ばっかりだぞ。
00685103/06/08 17:55ID:???
>>66
my($name,$trip) = split(/#/, $name);
0069nobodyさん03/06/08 17:57ID:???
>>67
調べ方を教えてください
0070nobodyさん03/06/08 17:58ID:???
>>68
ありがとうございます。
それをどうやって組み込めばいいのでしょうか?

……って返されそうだな。
00715103/06/08 18:03ID:???
>>70
そだね。 69は偽者じゃないの?
さすがにそこまでプなやつはおらんだろ。
0072nobodyさん03/06/08 18:03ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0073nobodyさん03/06/08 18:03ID:???
>>70
あなたは
名前#123 をなんという変数に代入してるですかー
0074nobodyさん03/06/08 18:09ID:???
$nameです
0075nobodyさん03/06/08 18:10ID:???
>>67
自分のサイト作って次はCGIだーって思ってる奴が迷い込んで来るんだよ。
質問者は>>1読まないしね。読んだとしても1行ぐらいじゃないかな。
0076nobodyさん03/06/08 18:11ID:???
>>68
split(/#/, $name, 2);にしないと$nameが"名前#12#3"とかなっていたら$tripが"12"になってしまうけどいいの?
0077nobodyさん03/06/08 18:13ID:???
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。

これを強制させるのはどうだ?
例えば>>66にこれを書かせると

1:自分はこう言う事がしたい。
2chのトリップみたいのを付けたいです。

2:それでこんな風にやってみたが・・・
何もしてません。

3:それだとこんなエラーが出て上手く行かなかった。
何もしてないのでエラーはありません。


となって、自分で全く調べてないって少しは自覚できるんじゃないかな。
0078nobodyさん03/06/08 18:14ID:???
>>76
スマソ。
>>66は気づかないからヨロシ。
0079nobodyさん03/06/08 18:16ID:???
そもそもスレのレベルが下がり過ぎ。
ここは「Perl初心者」のためのスレだろう。
"努力・常識のかけらも無いアホ"の"質問にすらなっていない独り言"で埋まってしまうのはいかんだろ。
0080nobodyさん03/06/08 18:17ID:???
&jcode::tr(\$FORM{'FROM'}, '#', '#');
if($FORM{'FROM'} =~ /([^\#]*)\#(.+)/){
my $main_message = $1;
my $handle_pass = $2;
my $change_salt = substr($handle_pass, , 1) . "H";
$handle_pass = substr(crypt($handle_pass, $change_salt), -8);

if($main_message ne ""){
$FORM{'FROM'} = "$main_message </b>◆$handle_pass <b>";
}else{
$FORM{'FROM'} = "</b> ◆$handle_pass <b>";
}
}
0081nobodyさん03/06/08 18:18ID:???
>>80
がんがるなよ。
0082nobodyさん03/06/08 18:20ID:???
$nameに#aiusiauがあるとする
$sharp = index($name);
$sharp++:
$trip = substr($name,$sharp);

ではダメ?
無駄が多い?
00838203/06/08 18:22ID:???
ミスった。

$sharp = index("$name","#");
$trip = substr($name,$sharp++)
これでいいや;
0084nobodyさん03/06/08 18:25ID:???
なんで++するの?前置インクリメントならわかるけど。
00858203/06/08 18:27ID:???
>>84
ぇ?indexは1文字目を0から、substrは1文字目を1とするから足す必要あると思うんだけど、、、
てか、実際これでやってる
0086nobodyさん03/06/08 18:29ID:???
>>85
$i=0;
$j=$i++;
としたとき、$iは1になるけど$j=0になることは知っているよね?
もちろんそれでいいならいいんだけど。ただ、あとで$sharpを使わなければ意味ないなぁと思って。
0087nobodyさん03/06/08 18:33ID:???
>substrは1文字目を1とするから
0088nobodyさん03/06/08 18:40ID:???
#の次からを取り出すわけだから+1は必要だと思うけど、特に$[をいじっていなければsubstrは一文字目は0。
00898203/06/08 18:43ID:???
あぁ、そうだった。
次からとるから+1だったな
0090nobodyさん03/06/08 18:45ID:???
>>89
実際これでやってる ってホント?
0091nobodyさん03/06/08 18:50ID:???
if(($sharp = index($name,'#')>=0){
$trip = substr($name,$sharp+1);
#ここでトリップ生成
}
0092nobodyさん03/06/08 18:52ID:???
>>91
そりゃできるだろ。
if(($sharp = index($name,'#')>=0){
$trip = substr($name,$sharp++);
#ここでトリップ生成
}
では動かんよ。
0093nobodyさん03/06/08 18:53ID:???
>>92
括弧の対応があわないね(汗

if(($sharp = index($name,'#'))>=0){
$trip = substr($name,$sharp+1);
#ここでトリップ生成
}
00948203/06/08 19:02ID:???
>>90
カウンターとかで使ってるよ
0095nobodyさん03/06/08 19:06ID:???
へんなふうに書くなぁ・・・
0096nobodyさん03/06/08 19:40ID:???
>>93>>94
あ、いや、そういうことじゃない。
$trip = substr($name,$sharp+1);

$trip = substr($name,$sharp++);
だと動かんでしょ?って>>82に言いたかった。
00978203/06/08 20:39ID:???
>>96
それはわかってる。
=でつなぐと、後に++したら、足す前の値を代入するからだろ?
0098nobodyさん03/06/08 20:40ID:???
>>97
は?・・・>>83
00998203/06/08 20:43ID:???
>>98
ぃやぃや、こちらこそ「は?」
なにを指してるんだこいつは
0100nobodyさん03/06/08 20:51ID:???
>>99
え?・・・>>83は君が書いたんじゃないの?
0101ラヴ03/06/08 21:07ID:Sf/nGZf1
#/usr/local/perl
#学籍番号
#氏名
print(" a =?");
chomp( $a = <STDIN>);
print("演算子?");
chomp( $op = <STDIN> );
print(" b = ?");
chomp( $b=<STDIN> );

if($op eq '+') {
$c=$a + $b;
print (" $a + $b = $c\n");
} else {
if($op eq '-'){
$c=$a - $b;
print ("$a - $b = $c\n");
} else {
if($op eq '*'){
$c = $a * $b;
print ("$a * $b = $c\n");
} else {
if($op eq '/'){
$c = $a / $b;
print ("$a / $b = $c\n");
}
}
}
}
のフローチャートはどうやって書いたらいいのでしょう??
0102無料動画直リン03/06/08 21:10ID:+3TQ1ee9
http://homepage.mac.com/norika27/
0103nobodyさん03/06/08 21:19ID:???
>>101
本よめ。つか、いまどきなんでそんな原始時代のことをしてるのか。
01048203/06/08 21:19ID:???
>>100
書いたけど、、、

>は?・・・
ってのはどういうこと?
0105nobodyさん03/06/08 21:21ID:???
>>101
なんだその分岐文は・・・
0106nobodyさん03/06/08 21:50ID:???
>>105
分岐文って何だ? 三項演算子なら知ってるが。
0107nobodyさん03/06/08 22:02ID:???
>>101
ifelseをつかいなさい
0108nobodyさん03/06/08 22:05ID:???
どうせ本7だろ。放置放置。

>>80
> &jcode::tr(\$FORM{'FROM'}, '#', '#');

Jcode.pm に入れ替えたらエラーになた。(s/jcode/Jcode/g したあと)
でも、Parse したときに、Shift_JISに変えているんだから、
s/#/#/g; にしちゃった。
■ このスレッドは過去ログ倉庫に格納されています