ノートのつもりで書いていきます。 ( ̄¬ ̄*)。о

2007年4月30日月曜日

サブルーチン [my]

$x = "abc";
&my_test;
print $x;

sub my_test{
my $x = "xyz";
}

変数の前にmyを付けると
同じ名前の変数があっても影響を受けないから、

これだと
xyz
ってプリントされる。

myないと、
abc
って表示されてしまう。



引数…サブルーチンに渡す値

2007年4月20日金曜日

配列・・

@配列
  • push
  • pop
  • shift
  • unshift
について学習
#!/usr/bin/perl

@member = ("イチロー","ジロー","サブロー","シロー");
push(@member,"ゴロー");
print @member;

shift(@member);
$no_member = shift(@member);

print "\n$no_member\n";
print @member;
ってやったら
イチロージローサブローシローゴロー
と表示されるはずで、ちゃんと表示された。

②ではカットした先頭が入るはずだから
イチロー
と表示されるかと思ったら
ジロー

③ではshiftで先頭カットだから
ジローサブローシローゴロー
と表示されると思ったら
サブローシローゴロー

なぜー(´・ω・`)w

****************************************
わかった!
#!/usr/bin/perl

@member = ("イチロー","ジロー","サブロー","シロー");
push(@member,"ゴロー");
print @member;

shift(@member);
$no_member = shift(@member);

print "\n$no_member\n";
print @member;
って2回打ってたからか!!
本の見方を間違ってただけでした笑
★のところがいらなかったですね!

あーお騒がせ

elseとelsif( ´∀` )

【if関数】
ある条件の時だけ別の処理がしたいとき。
if(条件式){
処理1;
処理2;
処理3;

}

条件式が(0)の時
条件が「偽」であるため実行されない。



[elsif]
条件がいくつかあってそれぞれの場合によって処理を分けたいとき
なんの条件にも当てはまらなかった時がelse。

ダカラ、elsifは条件式が必要だけど、
elseはいらない。

入力した文字を表示

1.名前の入力を促すメッセージ
2.入力内容を代入
3.文表示

print "あなたのお名前は?\n";

$name = <STDIN>;
chomp($name); ※改行文字の切り落とし

print "こんにちは、$nameさん。";
コマンドプロンプトで実行!
D:\htdocs\perl>perl name.pl↓
あなたのお名前は?
Taro Suzuki
こんにちは、Taro Suzukiさん。


chomp関数
キーボードからの入力は文末に改行がついて入力されてしまうから
切り落とす必要あり!

キーボードから入力を受け取る時の決まりごと。


STDIN
標準入力。CGIではフォームでの入力データを送信する時に使う。

改行

CGIでは「\n」が改行だけれども、
HTMLでは「br」が改行。

当たり前だけど、複雑になった時
どこでどっちを入力するか要注意!

print "\n";

変数

スカラー変数

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
$greeting = "Hello,World!";
print $greeting;
D:\htdocs\perl>perl hello.pl↓
Hello,World!

ヒアドキュメント

文章が長いと改行入れたりで
見づらくなるのでヒアドキュメントを使う!

print <<半角英数字の文字列;
文章1
文章2


文章n
上と同じ半角英数字の文字列
「<<文字列」の間には半角スペースなどを入れてはいけない。 ヒアドキュメントを利用したHTMLの出力
#!/usr/bin/perl
[example.pl]
print "Content-type: text/html";
print <<HTML
<html>
<head><title></title></head>
<body></body>
</html>
HTML↓(改行必須)

http://localhost/~/example.pl
で表示。

記述法

1命令ごとに「;」を文末に付ける。

複合文
「{}」で囲まれた短文の集まり(ブロック)


文1;
文2:
文3;
と書き、「}」のあとには「;」はいらない!


print
print "ドレミファ";
print "ソラシド";
D:\htdocs\perl>perl drm.pl↓
ドレミファソラシド
print "ドレミファ\nソラシド";
(もしくは)
print "ドレミファ\n";
print "ソラシド";
D:\htdocs\perl>perl drm.pl↓
ドレミファ
ソラシド



文法チェック!

完成したスクリプトをサーバーにアップする前に
文法チェックをする(`・ω・´)ノ


コマンドプロンプトより
D:\htdocs\perl>perl -cw hello.pl↓
hello.pl syntax OK


と表示されれば文法に問題なし!

確認してからサーバーへ

.pl

perlの実行はprint "Content-type:・・・"
みたいなイロィロが書いてなきゃ表示されないと思ってましたが、

拡張子.plで
print "Hello,World!";
のみでも
D:\htdocs\perl>perl hello.pl
で実行できました。



しかし、実際サーバーでCGIを動かす時、
これに修正を加えて[.cgi]にしてのせる必要があると・・・。
[hello.cgi]
#!/usr/bin/perl①

print "Content-type: text/html\n\n";②
print "Hello,World";③
②は「レスポンスヘッダ」
これによってブラウザは何が送信されてきたか
判断する。

忘れてはいけないのは②文末の「\n\n」
2つの改行を入れること!


保存の際
エンコード:日本語(EUC)
改行コード:LF
に設定。(改行コード不明・・UNIX.ver?)

サーバーアップで
属性変更!(パーミッション…ファイルやディレクトリに対するユーザーのアクセス権)
[705]・・・8進法だから0~7
左から所有者・グループ・全てのユーザーだから(グループ…同じマシンを利用ユーザー)
読み取り・書き取り・実行に於いて・・・
[全部チェック]・[チェック無し]・[読み取り実行]


ブラウザで見て、文字化けしてたら
表示「エンコード:日本語(EUC)」にするだけ。

cmd

コマンドプロンプトでperlのスクリプトファイルの実行。
最初、C:\Documents and Settings\usr-name>
とかってなってるものを
perlがインストールされてるトコロまで行くのに

今まで
C:\Documents and Settings\usr-name>cd D:
D:\>cd htdocs

D:\htdocs>cd perl

D:\htdocs\perl>・・・・


のように[cd]
って一個ずつ打って移動してました。
しかーし今回、
コマンドプロンプトのアイコン上で右クリック→「プロパティ」から
「ショートカット」の作業フォルダを設定することで
perl保存先まで自動的に移動することを知りました!

あーーみんなこうやってたのか・・・(´・ω・`)



ということで、
D:\htdocs\perl>perl file-name
でスクリプトの実行。

あと便利なのは[F8]で履歴表示・・(`・ω・´)ノ

perl・・

前から少ーーーーしやってたperl/CGI
WEB関連のことやり始めて、本当はperl/CGIに
力を入れるはずでした。
そしてあれから1年・・・。

基本くらいはできてる予定だったあの頃。が、しかし!
いつの間にやらcssの勉強が必要に迫られてやりだし、
気づけばperl/CGIの知識はほぼゼロ・・・
°・(ノД`)・°・
この1年、フリーCGIの設置しかやってこれなかったワタシ(;_;)

学校卒業して2年目突入・・。
やっぱり、システム作れるようになりたい・・。
作れなくてもわかりたい・・・

そんなこんなで
決意して開始!



まずは
・active perl
・Apache
・EmEditer
をインストール→
(これは去年からやってあった;)

コマンドプロンプトの扱いに慣れず
かなり苦戦



次はcmdについて・・・・

2007年4月18日水曜日

dialogにも挑戦(`・ω・´)ノ

またまた「web creators」から(o´∪`o)ノ
今回はdialog2を試してみました。

角丸の枠を作るもの



これまたかなり感動・感激!
cssでの枠のズレも軽減間違いなし( ´∀` )

http://www.schillmania.com/projects/dialog2/
より
Downroad exampleを落とし・・・

css背景画像(pngとgif)をコピーするだけ(´・ω・`)


附属のbasic.htmlの<div>とかをそのままに・・





キレイ( >∪<)/

thicboxに兆戦!

画像を別ウィンドウで拡大表示!
ってゆうときに今まで「.js」を使ってました。

<a href="javascript:w=window.open('sb.html','','scrollbars=no,Width=430,Height=350');w.focus();">
<img src="images/・・・.jpg" width="90" height="60" border="0"></a>


でも、最近使われない傾向にあるということで

「web creators 4月号」で紹介されてた[thickbox]を試してみました~
私的にはかなり感動!

http://jquery.com/demo/thickbox/


thickbox.css
thickbox.js
jquery.js
loadingAnimetion.gif

をダウンロード→

head要素内で各種ファイルを読み込み

<link rel="stylesheet" href="./thickbox.css">

<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript" src="./thickbox.js"></script>

あとは
<・・・・・・・・・・・ class="thicbox">ってやるだけ(o´∪`o)ノ


これが完成品thickbox!
(無料infoseekなので上下に広告がありますが・・・笑)

なかなか簡単でした

…web creatorsの細かい説明のオカゲですw

最初の難関

本にあるいろんな設定を完了して一番最初の動作確認・・
よくある
「#!/usr/(local/)bin/perl
 print "content-type: text/html\n\n";
 print "Hello,World";」
とか打ってみたりして
いざ実行!!

・・・・・
・・・・
・・
・・・・・・・・


されない!( ̄□ ̄*)。о



何日も調べて出た結果は「セキュリティのNortonが原因」・・・

がーーーーーーん!
何度もperlインストールし直したりしたのに・・・
原因は別のところに(*- ェ-)


ファイアウォールの設定からprogram制御を「許可」
にしなくてはならないとか・・・

どっと疲れが出たけど、なんともいえない開放感( ´∀` )・・・



.plが実行できない!そんな時
私は真っ先にNortonを疑います。

perl/CGI

去年の春に始めたperl&CGI

本当は数年前に少し教わってたけど
「サーバー」も分かってない私は「local」?って感じで話にならない(´∪`:)


最近CGIの修正やフリーCGIの設置をやってまたCGIを再開したくなった今日この頃・・。
復習(するほどの知識はないけど)もかねてがんばります(o´∪`o)ノ

はじめまして、

ブログ始めました
文章書くのが苦手だから続くか不安(・Θ・;) なので、自分のメモ帳だと思って がんばります(笑;
通りすがりでも 気軽にコメント下さい!w