文字を入力して100文字までテキストファイルに書き込むソース【ファイル操作とファイルハンドル】

というわけで「ファイル操作とファイルハンドル」をお勉強したので何か適当なソースを組んでみる。



・ 文字を入力して100文字までテキストファイルに書き込むソース ・

use strict;
 use warnings;


print "以後の入力を100文字を越えるまでlog.txtに記載します。";

open (LOG, "> log.txt");
my $a = 0;

while ( $a <= 100 ) {

	print "現在$a文字です\n";

	my $txt = <STDIN>;
	print LOG "$txt";

	my $b = length ( $txt );
	$a += $b - 1 ;
}

print "現在$a文字、100字を越えたので終了します。\n";
close(LOG); 

結果 ⇒ 無駄が多いと先生に指摘されまくる。or2

以下先生の添削後のソース

use strict;
use warnings;


print "以後の入力を100文字を越えるまでlog.txtに記載します。";

my $txt;
my $count = 0;
while ( $count <= 100 ) {
	print "現在$count文字です\n";
	my $stdin = <STDIN>;
	chomp $stdin;
	my $len = length ( $stdin );
	$txt .= $stdin;
	$count += $len;
}

print "現在$count文字、100字を越えたので終了します。\n";

open (my $fh, '>', 'log.txt');
print $fh $txt;
close($fh); 

・変数名をわかりやすく
・open close 文を安全な書き方に
・ただし魔法は尻から出…じゃなくてテキスト内の改行はなくなる


がんばります…

寝れないので追記

先述のソースにおけるコードについて覚書


1. print " *** ";

   ""内を出力する

2. for ( 初期化 条件式 増減式 ) { 実行 }

   初期式を元にして条件式が真である限り
     条件式確認⇒実行⇒増減式⇒条件式確認⇒実行(ry 
                        の繰り返しを行う。


3. if ( 条件A ) { 実行A }
  elsif ( 条件B ) { 実行B }
  else { 実行C }

   条件Aが真なら実行Aを実行
   条件Bが真なら実行Bを実行
   そうでなければ実行Cを実行

   elsifを増やして条件分岐を増やす事ももちろん可。


4. my 関数

   その計算列においてのみ反映される関数を定義

   プログラム内全体に反映する関数なら " our "
   また、" use constant "で変更されない値を定義できる。


5. $i++

   " $i = $i + 1 "の省略計算
   また、" $i-- "で" $i = $i - 1 "という意味にも


とりあえずこんなところかな。
間違った認識等あったらコメ下さいw

一部 Perl入門HPhttp://www.kent-web.com/perl/から抜粋

Perl言語始めました

っていってもまだ序の口の外ですが。
以下本日のまとめ

・ Strawberry Perl 5.10.0.4 をDL
・ 窓の手 DL
   コマンドプロンプトをどこでも実行可能に

・ 勉強用フォルダにテキストを入れて
  フォルダからコマンドプロンプトで「perl ****.pl」で動作確認。


本日の教科書コード

1. 出力する

  print "test";


2. 繰り返す

  print "test";
for (my $i=0; $i <9; $i++){
	print "a". $i;
}

3. 場合分け

 my $j = 3;
if ($j == 2){
	print "good!";
} elsif ($j == 3){
	print "cool!";
} else {
	print "poor.";
}

以上。
まだ不明なところが多いので調べてちゃんと理解するます。

   

というわけで初日 準備段階!

今日は基本的なネット活用の情報収集的な?勉強の準備でした。

はてなのコンテンツをともかく色々使ってみた!
まぁ期間置いてみないと感触がわからない物なのでこれからですね、ほんとに。

でも新しい領域に踏み込むのはワクワクするなぁ(゚A゚)b