月宮あゆのPerl教室 Part.4
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001月宮あゆ
02/02/19 14:34ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0802nobodyさん
03/03/19 15:12ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (2)
(ニE(#つo⊂#)
今回は、文字クラス [ ] について詳しく勉強するよ。
[ ] の中に文字を書くと、正規表現では [ ] の中の、
どれか1文字にマッチするんだったね。
じゃあ、特殊な書き方も含めて説明するね。
[A-Z] は、 A から Z までのどれか1文字だね。
[A-Za-z] なら、大文字か小文字だよ。
[^0-9] [ ] の先頭に ^ があると、【ここにない1文字】
って、意味が逆転するよ。
if ( $xxx =~ /[ABCDE]/ ) { print "ABCDE のどれかが含まれる"; }
if ( $xxx =~ /[abcde]/ ) { print "abcde のどれかが含まれる"; }
if ( $xxx =~ /[A-Z]/ ) { print "ABC…XYZ のどれかが含まれる"; }
if ( $xxx =~ /[0-9]/ ) { print "0123456789 のどれかが含まれる"; }
if ( $xxx =~ /[A-Z]$/ ) { print "アルファベット大文字で終わる"; }
if ( $xxx =~ /[A-Z]+/ ) { print "アルファベット大文字が1回以上繰り返し"; }
if ( $xxx =~ /^[A-Z]+$/ ) { print "アルファベット大文字しかない変数"; }
if ( $xxx =~ /[^A-Z]/ ) { print "アルファベット大文字以外の文字が含まれている"; }
次回は、 ( ) と後方参照について説明するね。
#間違いがあったら指摘してね…
0803nobodyさん
03/03/19 15:12ID:???0804nobodyさん
03/03/19 15:13ID:???0805nobodyさん
03/03/19 15:13ID:???途中で挫折した香具師多いと思われるから、マターリ進行で…
0806nobodyさん
03/03/19 15:13ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (3)
(ニE(#つo⊂#)
今回は、後方参照に使う、 ( ) について詳しく説明するね。
( ) の中に文字を書くと、【 ( ) の中でマッチした部分をあとで参照できる】んだ。
正規表現は、 [ ] を使うと、マッチするパターンがたくさん考えられるよね。
マッチした部分をあとから参照するのに使うよ。
パターンの中では、 ( ) でくくった順に、\1 、 \2 、 \3 …って参照できるよ。
パターンの外で参照するなら、 $1 、 $2 、 $3 …で参照するんだ。
パターンの外で参照する方がよく使うと思うから、
こっちはしっかり使い方を理解しておいてね。
じゃあたくさん例文を見て、使い方を覚えてね。
if ( $xxx =~ /([ABCDE])/ ) { print "マッチ:$1"; }
if ( $xxx =~ /([abcde])\1/ ) { print "abcde のどれかが2回以上続く"; }
if ( $xxx =~ /([0-9]+)-([0-9]+)/ ) { print "マッチ:$1-$2"; }
次回は、 [ ] を簡略化できる感じの、メタ文字と、
スペースがあまったら正規表現演算子をみてみようね。
今回はちょっと短いけどこれで終わりだよ。
0807nobodyさん
03/03/19 15:13ID:???結構かかりそうだよね…
そんなに難しい話になるまで続くのかな…?
うん、そうだね
まあ実用的なスクリプト作れるぐらいになったら終了、かな
0808nobodyさん
03/03/19 15:13ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (4)
(ニE(#つo⊂#)
今回は、メタ文字について説明するよ。
パターンの中では、 [ ] で囲む、よく使いそうなものを、
メタ文字っていうので使えるんだ。
\d … 数字を表すよ。 [0-9] と同じだね。
\D … 数字以外を表すよ。 [^0-9] と同じ。
\w … [A-Za-z0-9_] と同じ。単語構成文字、って言うみたいだね。
\W … [^A-Za-z0-9_] と同じ。
他にもあるけど、とりあえずこれだけ覚えてたらボクの経験上問題ないね。
じゃあ、演算子について説明するね。
正規表現(1) でも少し触れたけど、
● =~ /◆/★
この、★の部分だったね。
じゃあ、簡単に説明するね。
何種類かあるんだけど、 i だけ知っておけば十分だよ。
i をつけることによって、大文字小文字の区別をしないことができるんだ。
if ( $xxx =~ /abc/i ) { print "大文字小文字を区別せずにabcが含まれる"; }
他の関数も入ってくると、 e とか g とかもあるけど、それはそのとき説明するね。
0809nobodyさん
03/03/19 15:13ID:???「これでとりあえず、正規表現は終わりだよ、次回は配列操作をやるね。」
0810nobodyさん
03/03/19 15:14ID:???ほぼ、一日に1レクチャか、まめだね。尊敬するよ。
下手な日記書いてる奴よっかスゲーなおまい
0811nobodyさん
03/03/19 15:14ID:???∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
0812nobodyさん
03/03/19 15:14ID:???0813nobodyさん
03/03/19 15:14ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 配列操作
(ニE(#つo⊂#)
配列操作関数だよ。
よく使うからしっかり覚えてね。
unshift ★, ◆
… 配列★の先頭に要素◆を追加する
shift ★
… 配列★の先頭の要素を削除する
push ★, ◆
… 配列★の末尾に要素◆を追加する
pop ★
… 配列★の末尾の要素を削除する
このよっつだよ。じゃあ例をみてみるね。
@xxx = ("a", "b", "c");
@yyy = ("x", "y", "z");
push @xxx, "d"; # 末尾に d を追加 … a, b, c, d になる
push @xxx, @yyy; # a, b, c, d, x, y, z
pop @xxx; # a, b, c, d, x, y
shift @xxx; # b, c, d, x, y
unshift @xxx, "a" # a, b, c, d, x, y
次回は、ファイル入出力とファイルハンドルについて説明するね。
0814nobodyさん
03/03/19 15:14ID:???途中でいきなり終わり、なんてことにならないようにがんばるよ
うん、そうだね
これからどんどん寒くなっていくからね
ボクもこの前こたつ出したよ
香里さんの家ってそんなに散らかってるの…
片づけてあとで温かいこたつに入るときもちいいよ
0815nobodyさん
03/03/19 15:14ID:???0816nobodyさん
03/03/19 15:15ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (1)
(ニE(#つo⊂#)
今回はファイルの読み書きとファイルハンドルについて説明するね。
・ファイルハンドル
ファイルハンドル、っていうのは、ファイルを開くときに、ファイルハンドル、
っていうものに結びつけて開くんだ。ファイルに書くときも同じだよ。
これにファイルを結びつけてを作るには、 open っていう関数が一番一般的だね。
ファイルハンドルは、半角大文字でつけるのが原則だよ。
ファイルハンドルを使い終わったら、 close 関数で閉じるようにしようね。
open ★, ◆
close ★
★ … ファイルハンドル (半角大文字ならなんでもいいよ)
◆ … ファイル名
ファイル◆をファイルハンドル★に結びつけて開くよ。
じゃあ、 "test.txt" の内容を $test にいれて、表示するサンプルを書いてみるね。
open IN, "test.txt";
$test = <IN>; # こうやってファイルハンドルを変数に代入する
close IN;
print "$test";
Perl の勉強熱心な人は、実際試してみるてね。
今回のプログラムは、いろいろやっていると何か気付くことがあるはずだから、
必ず試しに動かしてみてね。 test.txt の中を書きかえながら。
0817nobodyさん
03/03/19 15:15ID:???0818nobodyさん
03/03/19 15:15ID:???0819nobodyさん
03/03/19 15:15ID:???ここに書き込んだ時点であなたも(以下略
ここの会話がヲタ会話とわかる時点であなたも(以下略
0820nobodyさん
03/03/19 15:15ID:???0821nobodyさん
03/03/19 15:16ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (2)
(ニE(#つo⊂#)
前回のスクリプトはみんな動かしてみてくれたかな?
いろいろやってみると、最初の1行しか表示されないことに気付いてくれたと思うんだ。
詳しくはそれはもう少しあとでやるね。
今回はファイルに書き込む方法を説明するよ。
open ★, "> test.txt";
こんなふうに、 > をつけてファイルを開くと、書き込みモードになるんだよ。
このファイルに書き込むには、
print ★ "test";
みたいな感じにするよ。
じゃあ、簡単なカウンターを書いてみるね。
行数が入らないから続くよ
0822nobodyさん
03/03/19 15:16ID:???#!/usr/local/bin/perl
print "Content-type: text/html;\n\n";
open IN, "log.txt";
$count = <IN>;
close IN;
$count ++;
open OUT "> log.txt";
print OUT "$count";
close OUT;
print "<body>$count</body>";
exit;
----------------------------------------------------------------
ちゃんと動かしてみてね。
今回はここで終わりだよ。
0823nobodyさん
03/03/19 15:16ID:???あるなら食べてみたいかも
うん、ありがとうね
0824nobodyさん
03/03/19 15:16ID:???数年前CMやってたの覚えてるし、多分うちの近所のスーパーに行けばまだ売ってると思う。
たい焼きの形をした最中の中にあずきとバニラアイスが入ってまつ。
あずきのバニラアイスのハーモーニーがたまりませんです。
余談
自分暇つぶしに2chのTripFinderスレを読んで自分なりのプログラムを組んでみたです。
CPU負荷かかりまくり、でも任意のTrip探す手間を考えれば楽なもんかな?とか思いながら使ってます。
今度taiyakiって入ったIDを探したいです!
0825nobodyさん
03/03/19 15:16ID:???恥ずかしい…
-[perl0004.cgi]-------------------------------------------------
#!/usr/local/bin/perl
print "Content-type: text/html;\n\n";
open IN, "log.txt";
$count = <IN>;
close IN;
$count ++;
open OUT, "> log.txt"; # , が抜けてたね、ごめんね
print OUT "$count";
close OUT;
print "<body>$count</body>";
exit;
----------------------------------------------------------------
そうなんだ、じゃあボクも近くのスーパーに行って探してみるよ
ありがとうね
0826nobodyさん
03/03/19 15:16ID:???楽しみに見てますです。
それとトリップ付けてみました、別に意味はないので・・・ただunyuなだけです。
コンビニでたいやきアイスは発見できませんでした・・・残念です。
0827nobodyさん
03/03/19 15:16ID:???0828nobodyさん
03/03/19 15:16ID:???0829nobodyさん
03/03/19 15:17ID:???|. ノノソハ)))
(\リリ ´ー`)リ < foreach
(ニE(#つo⊂#)
今回は foreach ループを説明するよ。
先に勉強しようと思ってたことを忘れてたから、簡単に説明するね。
次回からはまたファイル入出力の話に戻るからね。
foreach っていうのは、配列のすべての要素に一定の処理ができるんだ。
配列の中を全部表示したりしたいときに使うよ。
まず、構文を書くね。
foreach ● ( ◆ ) { ★ }
◆ に、対象の配列を書くよ。配列の要素が順番に変数 ● に入っていって、
順々に ★ が実行されていくよ。
これだけじゃなんのことかわからなくても、例を見てみてね。
実行したときどうなるか?は、自分で試してみてね。
@xxx = ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");
foreach $x (@xxx){print "$x";}
foreach (@xxx){print "$_";} # ● を省略したら、省略の原則、 $_ に入るよ。
この話を応用して次回にもっていくから、絶対に使えるようにしておいてね。
0830nobodyさん
03/03/19 15:17ID:???そう、かな…?
ありがとね
うん、頑張るよ
1日1つ頑張りたいけど、無理な日もあってごめんね
0831nobodyさん
03/03/19 15:17ID:???すっごく楽しみに見てるよ、これからも頑張ってね。
0832nobodyさん
03/03/19 15:17ID:???0833nobodyさん
03/03/19 15:17ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (3)
(ニE(#つo⊂#)
今回は複数行のファイルを読み込む方法を説明するね。
open IN, "test.txt";
# 1行だけ読み込む
$test = <IN>;
# 全行読み込む
@test = <IN>;
close IN;
こんな感じにすると、1行ずつが配列のひとつの要素になるよ。
じゃあ、このファイルの中身を表示するには、
foreach (@test){
print "$_<br>";
}
ってやると表示されるよ。
じゃあ次回は、ファイルの読み書きもわかったし、
ユーザーが何か入力したのを受け取って結果を表示する、
ってことを勉強してみようね。
0834nobodyさん
03/03/19 15:17ID:???気に入ってくれてうれしいよ、ありがとうね。
0835nobodyさん
03/03/19 15:18ID:???最初にも言ったけど、ここの教室でやっていることは、
【わかりやすくするために多少強引な説明をしている】ところがあるよ。
基本なんだけど、【わかりにくいし使われもしないから省いている】ところも
たくさんあるよ。他のサイトとか見てると、戸惑うことも多いとおもうけど、
混同させないように注意してね。
0836nobodyさん
03/03/19 15:18ID:???0837nobodyさん
03/03/19 15:18ID:???メルマガとか出してみたら?
0838nobodyさん
03/03/19 15:18ID:???0839nobodyさん
03/03/19 15:18ID:???0840nobodyさん
03/03/19 15:18ID:???0841nobodyさん
03/03/19 15:19ID:???0842nobodyさん
03/03/19 15:19ID:???0843nobodyさん
03/03/19 15:19ID:???(´・ω・)っ旦 <マターリ
0844nobodyさん
03/03/19 15:19ID:???( ´∀`)< このスレきもい♪
( つ \______
(_○___)
0845nobodyさん
03/03/19 15:19ID:???0846nobodyさん
03/03/19 15:19ID:???|. ノノソハ)))
(\リリ ´ー`)リ < フォームデーターの受けとり
(ニE(#つo⊂#)
今回はフォームデータを受けとってみるよ。
最初のうちは、 cgi-lib.pl を使ってやってみることにするね。
下のサイトから入手できるよ。
http://cgi-lib.berkeley.edu/
確認しておくけど、フォームデータ、っていうのは、
HTMLの <form> とか <input> とかで送るデータのことだよ。
require "cgi-lib.pl";
&ReadParse;
まず、 cgi-lib.pl っていう名前で、ダウンロードしたソースを、
C:\www\home\perl\ に保存してみてね。
CGIに送られたフォームデータはこれだけで取得できるんだ。
( cgi-lib.pl が同じディレクトリにある時だけだよ)
例えばこんなデーターが送られたとすると、
aaa=xxx&bbb=yyy&ccc=zzz
%in っていうハッシュにまとめて値がいれられるよ。
例えば、 aaa を参照したいなら、 $in{'aaa'} っていう感じで取得できるよ。
フォーム入力ができたら、CGIの世界はとっても広がるよ。
次回は、簡易掲示板を書いてみるね。
#投稿が遅れてごめんね
0847nobodyさん
03/03/19 15:20ID:???それもいいかもね
わかりやすく書き直して、カリキュラムもしっかり組めたら出してみるかも
うん、乗っ取らせてもらったよ
WebProg板のスレはなかなか落ちないからね…
うんうん、マターリしようね
0848nobodyさん
03/03/19 15:20ID:???内容についての質問とか要望があったらメールしてくれてもいいよ
なるべく返信はしたいけど、忙しくて手が回らなかったりしたらごめんね。
0849nobodyさん
03/03/19 15:20ID:???もう来ないのかと思ったけど、待ってて良かったよ。
メルマガいいね!
0850nobodyさん
03/03/19 15:20ID:???気に入らなければ放置してくれれば良いだけなのに…。
0851nobodyさん
03/03/19 15:20ID:???こんな輩がいるからいつまでたってもcgi-lib.plを使う香具師が絶えないんだな
0852nobodyさん
03/03/19 15:20ID:???マジで使ったこと無いけど、何するもんなの?
てか必要なの?
0853nobodyさん
03/03/19 15:20ID:???わざわざ鯖に入れている鬱、、、
0854nobodyさん
03/03/19 15:21ID:???今まで知らなかったよ。(うぐぅ
0855nobodyさん
03/03/19 15:21ID:???#!/usr/bin/perl/
# 簡易掲示板
print "Content-type: text/html;\n\n";
require "cgi-lib.pl"; &ReadParse;
print "<html>\n";
print "<head><title>掲示板</title></head>\n";
print "<body>\n";
print "<hr>\n";
if($in{message}){
open W, ">> perl0005.log";
print W "$in{message}\n";
close W;
}
open R, "perl0005.log";
@log = <R>;
close R;
foreach (@log){print "$_<hr>\n";}
print "<form action='perl0005.cgi'>\n";
print "<input type='text' name='message'> <input type='submit' value='書き込む'>\n";
print "</form>\n";
print "</body></html>\n";
exit;
----------------------------------------------------------------
0856nobodyさん
03/03/19 15:21ID:???簡易掲示板のソースだよ。
同じフォルダに、 cgi-lib.pl をいれてね。
ボクは途中で放棄はあまりしたくないんだよね
来なくなることはないと思うよ
まあ最初の方はこうやって簡単にやってもいいんじゃないかな?
もうちょっと勉強してきたら、自分のスクリプトの中に書いていこうと思うよ。
フォームからデーターを送られてきたのを、CGI側で取得する機能があるよ。
他にもいくつか機能があるけど、代表的なのはこれだね。
0857nobodyさん
03/03/19 15:21ID:???cgi-lib.plって便利そうだね。
もうちっと詳しく知りたいのでぐぐってきます。
0858nobodyさん
03/03/19 15:21ID:???うん。
ボクの名前でドメインとっちゃった。。
わぁ、ありがとう!
まあ、 cgi-lib.pl は便利なことは便利なんだけど、
ちょっと実行したときの効率があまりよくないんだよね。
また今度、 cgi-lib.pl なしで取得する方法を勉強するね。
0859nobodyさん
03/03/19 15:21ID:???今日タイヤキアイス食った、うまかった。
0860nobodyさん
03/03/19 15:21ID:???この非常用備蓄食は保存性に優れたアルファ米を使っており、自衛隊も戦闘糧食として使用していることから軍事用に転用される恐れもある。
石原都知事はこの件に関して政府と国会に徹底的な調査を要求すると述べた。
「ニュース速報+」【国際】東京都の非常食が北朝鮮に、石原知事激怒2
http://news2.2ch.net/test/read.cgi/newsplus/1038560374/
ソース:石原都知事・11/29日記者会見─2:00あたりから
http://www.metro.tokyo.jp/GOVERNOR/KAIKEN/kako.htm
MXTVで22:30から再放送
社団法人日本外交協会
〒106-0041東京都港区麻布台3-1-2飯倉セントラルビル4F
0861nobodyさん
03/03/19 15:22ID:???自分はcgi-lib使わないで取得、エンコードずっとしてきたから・・・必要性は感じないんだけど知識としてね。
またページには遊びに行くよ!
なんか雰囲気とかもよかったし、勉強できそうなこととかもありそうな予感。
次回の授業を楽しみにしてます!
0862nobodyさん
03/03/19 15:22ID:???0863nobodyさん
03/03/19 15:22ID:???0864nobodyさん
03/03/19 15:22ID:???0865nobodyさん
03/03/19 15:22ID:???そんなもん、コンパイルしてメモリにロードされるかとおもうと
とうてい、使う気にはなれんな。
0866nobodyさん
03/03/19 15:22ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 掲示板 (2)
(ニE(#つo⊂#)
すっごく簡単に掲示板を書いてみたけど、どうだったかな?
やっぱり、機能が少なすぎるよね。
これからはしばらくの間、毎回少しずつ機能を足していく予定だよ。
今回の追加してみる機能は…
・名前欄を作るよ
・メール欄も作るよ
・名無しさんの名前が出るようにするよ
名前、メールは、入力欄を増やして、ログファイルに書き込むように
すれば、簡単にできちゃうよ。
名無しさんも簡単だね。
if(!$in{name}){
$in{name} = "名無しさん";
}
名前欄がなかったら「名無しさん」を代入してるね。
長くて入りきらなくなっちゃったね…
ここには重要な部分だけ書いて、全文はリンクからたどれるようにするね。
ソースはここだよ。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0006.txt
読めない、っていうときは、対象をファイルに保存、かソースを表示してみてね。
次回は、新しく置換演算子を勉強して、いろいろなことをやってみるね。
0867nobodyさん
03/03/19 15:23ID:???cgi-lib.pl は最初だから簡単に取得するために説明してるから、
慣れてきたら自分でやったほうがいいと思うよ
うん、ボクのホームページにも遊びに来てね。
ありがとう
317もあるけど、余計な処理をしすぎっていうか、
もっと簡単に短く単純に書けるよね
まあ自力でやる方法は今度説明するね。
cgi-lib.pl を使うのも CGI.pm もメリットがあればデメリットもあるよね
Perlを考えたアメリカの人は(名前忘れちゃったけど)
「Perlは好きなように書けばよい」っていう言葉を残してるんだから、
人それぞれやり方が違ってもいいと思うな
0868nobodyさん
03/03/19 15:23ID:???違ってたら恥ずかしいから、とりあえず発言撤回させて…
0869nobodyさん
03/03/19 15:23ID:???鮎タンのページの掲示板でおみくじやったら「大凶」と「最大凶」ひいちゃったよ・・・。
これも運・・・。
0870nobodyさん
03/03/19 15:23ID:???だが今人に勧めるのなら既に保守更新されていないcgi-lib.plよりも
標準モジュールとして使えるCGI.pmの方が導入は容易だと思うのだが?
まあそれでもcgi-lib.pmが良いというのなら、ポリシーは人それぞれだからかまわないが。
滑稽だな。そう思うのならそもそもCGI/Perlを選択するのが間違い。
0871nobodyさん
03/03/19 15:23ID:???0872nobodyさん
03/03/19 15:23ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 置換演算子
(ニE(#つo⊂#)
前回のソースを一般公開してしまうと、JavaScriptを使ったブラクラとかも
簡単に書き込めるから、タグの < を、 < に、 > を > に
置き換える方法を勉強するね。
● =~ s/◆/★/g;
変数●に含まれる、◆を★に置き換えるよ。
◆は、変数などが使えて、正規表現で指定するよ。
★は、◆で ( ) があったら、通常の変数に加えて後方参照の $1 $2 .. が使えるよ。
じゃあ実際に例を書いてみるね。
わかると思うけど、ファイルに書き込むよりも前に処理を実行しないと意味がないよ。
$in{message} =~ s/</</g;
$in{message} =~ s/>/>/g;
じゃあ、ついでにURLの自動リンクの方法も書いておくね。
$in{message} =~ s/(http:\/\/[\w\/\.\?~&=@;#%-]+)/<a href="$1">$1<\/a>/g;
最後の、 g っていうのは、「あるだけ置き換えする」っていう意味だよ。
なんで自動リンク
正規表現のパターンの中で、 / が使いたいときは、
その前の文字に \ を使うといいよ。
print "<a href=\"http://xxx.yyy.zzz/\">ホームページ</a>";
こんな感じで print のなかに " を使いたいときも \" とするといいよ。
このへんのことは、これから先ずっと使うことになるから、必ず覚えるようにしようね。
0873nobodyさん
03/03/19 15:24ID:???そういうこともあるよ
遅れちゃってごめんね
0874nobodyさん
03/03/19 15:24ID:???個人的にtrがすごく知りたいよ、まだいまいち理解してないんだよね。(恥
でも正規表現そのものが便利で難しいみたいだし、まだまだ勉強だね。
次回楽しみにしてます。返答ありがと。
0875nobodyさん
03/03/19 15:24ID:???ということで、じつは・・・
● =~ s#◆#★#g;
なんてのも使えるんだよ。
これなら「/」が多い日も安心ですね。
・・・っていうのは次回でつか?
「1文字ずつ対応させて置換する」って表現ではどうでしょう?>tr|y
$test = '01234-02468-13579-56789';
$test =~ tr/[0-9]/[A-J]/;
print $test; # ABCDE-ACEGI-BDFHJ-FGHIJ と表示
0876nobodyさん
03/03/19 15:24ID:???[]に意味はあるのかい?
0877nobodyさん
03/03/19 15:24ID:???0878nobodyさん
03/03/19 15:24ID:???と書き変えておこうとして忘れてました。
スマ
0879nobodyさん
03/03/19 15:25ID:???q, qq, qw を覚えよーょ。
クォートのエスケープは他の言語でもよく使われるから、
覚えておいて損はないけど。
0880nobodyさん
03/03/19 15:25ID:???こんど♪のスクリプトも改良してほしいですぅ
0881nobodyさん
03/03/19 15:25ID:???さっさと糞してねれ!!
削除依頼出しとけよ!
0882nobodyさん
03/03/19 15:25ID:???0883nobodyさん
03/03/19 15:25ID:???まああんな穴だらけのクリプト晒されりゃいい恥さらしだから無理もないか(藁
0884nobodyさん
03/03/19 15:25ID:???0885nobodyさん
03/03/19 15:26ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 展開とクオート風演算子
(ニE(#つo⊂#)
リクエストがあったから勉強するね。
$text = "うぐぅ";
print "うぐぅ<br>\n";
print "$text<br>\n";
print 'うぐぅ<br>\n';
print '$text<br>\n';
例えば、後々の説明を楽にするために、これを実行させてみてね。
'…' で囲むと、変数名がそのまま出ちゃったり、
ちゃんと改行されなかったりすることがわかると思うんだ。
'…' では、変数やメタ文字は【展開】されないよ。
つまり、囲った文字がそのまま出る、っていうことなんだ。
"…" では、【展開】されるよ。
さっきの例のソースを、全部、
"…" で囲んであるものは、 qq{…} に書き替えができるよ。(展開されるよ)
" が、ダブルクオーテーションっていう記号だから q がふたつあるのかな。
'…' で囲んであったら、 q{…} に書き換えができるよ。(展開されないよ)
こういうのを、クオート風演算子、っていうよ。
ボクは個人的な話だけど、 print は全部 qq{…} で書いてるよ。
続くよ。
0886nobodyさん
03/03/19 15:26ID:???|. ノノソハ)))
(\リリ ´ー`)リ < クオート風演算子
(ニE(#つo⊂#)
qw についても説明するね。
● = qw{★};
★で、半角スペースで区切った文字列を順番に配列●に代入するよ。
これは知らなくてもそんなに影響はないと思うんだけどね…
qr は、取り扱うとしたらもう少し先になるかな…?
あといくつか、クオート風演算子はあるんだけど、代表的なものとしてこのへんで終わりにするね。
{ } って書いたけれど、一定の制約を守っていれば、 { } じゃなくてもできるよ。
一定の制約
・英数字以外の半角文字だったら何でもいいよ。
・ # を使うときは、直前にスペースがあると、コメントと間違うから注意だね
・カッコを使うときは、左右でペアにして使うよ。 { } ( ) [ ] < >
これは、正規表現の時にも使えるんだ。
たとえば、置換演算子の時では…
$test =~ s/xxx/yyy/g;
$test =~ s#xxx#xxx#g;
$test =~ s{xxx}{yyy}g;
これらは全部同じことを表しているよ。
それにしても、ボクはこの授業の内容は全部テキストファイルにしてるんだけど、
→ この行でちょうど1000行に達してしまうんだよね…。
ボク、よくこんなに書いたなあ…
0887nobodyさん
03/03/19 15:26ID:???ボクにはこれ以上うまく説明はできないかな
おんぷちゃんねるのスクリプト…?
改造すべきところなんてあるかな?
どう改造してほしいか言ってくれたら、
もしかしたら1%ぐらいの確立で改造してみるかも
あと、ここでは「あゆ」って呼んでくれた方がうれしいな
0888nobodyさん
03/03/19 15:26ID:???ごめんなさいです。。。
用なし逝って話しますですぅ
0889nobodyさん
03/03/19 15:26ID:???ありがと、そっか〜つまり抜けてる部分とか余ったりするとよくないっぽいんだね。
一つずつってのがポイントみたい。
これでtrは解ったよ、ホントありがと。
うぐぅタン
だんだん難しくなってきたよ・・・。
まだ何とか付いていけてるから、次もよろしく〜
0890nobodyさん
03/03/19 15:26ID:???0891nobodyさん
03/03/19 15:26ID:???0892nobodyさん
03/03/19 15:27ID:???0893nobodyさん
03/03/19 15:27ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (1)
(ニE(#つo⊂#)
Perlで一番重要な、サブルーチンについての説明だよ。
自分で処理を決める関数のようなものがつくれるから、ユーザー関数とかも呼ばれるよ。
サブルーチンは、「宣言」しておくと「実行」できるようになるよ。
じゃあ、宣言の方法を説明するね。
個人的な話だけど、ボクは、 { } の中に改行がくるときは、
インデントすることにしてるよ。インデントっていうのは、
行の始めにタブやスペースをいれて、始まりを右にずらすことだよ。
アンインデント、はこの逆だね。
これを使うと、スクリプトが複雑になってくると見やすくていいよ。
sub abc{
$x ++;
}
これは、変数 $x に 1 を足す、サブルーチンだね。
呼び出すには、 &abc; って書いて呼び出すよ。
サンプル。「2」って表示されるよ。
$x = 1;
&abc;
print "$x";
sub abc{ $x ++; }
サブルーチンはとっても重要で便利だから、必ずマスターしてね。
0894nobodyさん
03/03/19 15:27ID:???わかってくれてうれしいよ
だんだん難しくなっていくね
わからないことがあったら気軽に聞いてね。
0895nobodyさん
03/03/19 15:27ID:???とりあえず今のところ大丈夫だよ。
次は何が出てくるのか楽しみです。
0896nobodyさん
03/03/19 15:27ID:???0897nobodyさん
03/03/19 15:27ID:???常識的なサンプルを提示できないなら、頼むから何もしないでくれ。はっきりいって迷惑。
0898nobodyさん
03/03/19 15:27ID:???おとなしく待てよ行数規制があるんだから
0899nobodyさん
03/03/19 15:28ID:???0900nobodyさん
03/03/19 15:28ID:???my %param = @_;
#何か
return ...;
}
0901nobodyさん
03/03/19 15:28ID:???( ´,_ゝ`) プッ $x= 'A'でも1足すのかよ
$x= 'A';
$x++;
print $x; # これはB
$x= '?';
$x++;
print $x; # これは1
よく頭に叩き込んでおけ
レス数が900を超えています。1000を超えると表示できなくなるよ。