ダブルクォート

Perlで文字列を表現する方法は、ダブルクォート("")とシングルクォート('')の2種類がある。

文字列

ダブルクォート("")の特徴としては、中に変数を入れても、その変数の中身を展開してくれるという点である。

とすると、

$ vi double_quote.pl
$ perl double_quote.pl
XXX ABC YYY$

$strの中の"ABC"が展開されて出力されている。

Sample/perl/double_quote/double_quote/src/double_quote at master · bg1bgst333/Sample · GitHub

chomp

前回やったように、

#!/usr/bin/perl

$str = <STDIN>; # 標準入力から読み込んだ文字列を$strに格納.

print "[$str]"; # "[$str]"をprintで出力.

STDINで入力した文字列を出力してみると、

$ perl chomp.pl
ABCDE
[ABCDE
]$

改行が入ってしまっている。
末尾の改行を取り除くにはchompを使う。

Perlの組み込み関数 chomp の翻訳 - perldoc.jp
chomp関数 - 文字列 - Perl関数のリファレンス

これを実行すると、

$ vi chomp.pl
$ perl chomp.pl
ABCDE
[ABCDE]$

改行が取り除かれている。

Sample/perl/chomp/chomp/src/chomp at master · bg1bgst333/Sample · GitHub

STDIN

Perlにおいて"STDIN"は、標準入力ハンドルを表す。

標準入力からの値の取得 - 標準入力とコマンドライン引数 - Perl入門

これを、

<STDIN>

とすることで入力を受け取れる。

入力した文字列を出力する。

$ vi STDIN.pl
$ perl STDIN.pl
ABCDE

"ABCDE"を入力してリターンキーを押すと、

$ vi STDIN.pl
$ perl STDIN.pl
ABCDE
ABCDE
$

入力文字列"ABCDE"が出力される。
ただし、"ABCDE"のあとの改行も入ってしまっているので、printでも改行されているのである。

Sample/perl/STDIN/STDIN/src/STDIN at master · bg1bgst333/Sample · GitHub

コメント

Perlのコメントは、頭に'#'を付ける。

perlintro - Perl の概要 - perldoc.jp

# comment
print "ABC\n"; #Print "ABC" string and LineFeed.
#comment out
#print "DEF\n"; #Do not execute.

と書いたなら、

$ vi comment.pl
$ perl comment.pl
ABC
$

ABCは出力されるが、DEFは出力されない。
さて、

#!/usr/bin/perl

これまでも出てきた最初のこの部分。
これはコメントでなく、UNIXにおいてファイルを実行するプログラムのパスを示すもの。

Perl 「 コメントアウト 」と #! (0x0a)|Perl Perl_0|blog20100901

$ ls
comment.pl
$ ./comment.pl
bash: ./comment.pl: Permission denied
$ ls -al
合計 12
drwxrwxr-x. 2 bg1 bg1 4096  7月  8 08:18 .
drwxrwxr-x. 3 bg1 bg1 4096  7月  8 08:09 ..
-rw-rw-r--. 1 bg1 bg1  105  7月  8 08:18 comment.pl
$

perlコマンドなしに、そのまま実行すると、パーミッションにより実行できない。
バーミッション変更する。

$ ls -al
合計 12
drwxrwxr-x. 2 bg1 bg1 4096  7月  8 08:18 .
drwxrwxr-x. 3 bg1 bg1 4096  7月  8 08:09 ..
-rw-rw-r--. 1 bg1 bg1  105  7月  8 08:18 comment.pl
$ chmod 755 comment.pl
$ ls -al
合計 12
drwxrwxr-x. 2 bg1 bg1 4096  7月  8 08:18 .
drwxrwxr-x. 3 bg1 bg1 4096  7月  8 08:09 ..
-rwxr-xr-x. 1 bg1 bg1  105  7月  8 08:18 comment.pl
$

これでも、

$ ./comment.pl
./comment.pl: 行 2: print: コマンドが見つかりません
$

こうなる。
そこで、

perlコマンドのパスを"#!"の後ろに書き、先頭に置く。

$ vi comment.pl
$ ./comment.pl
ABC
$

ここまでするとperlコマンドなしでも実行できる。
CGIもこの仕組みだったかと。

Sample/perl/comment/comment/src/comment at master · bg1bgst333/Sample · GitHub

Control.Foreground

Control.Foregroundプロパティで、コントロールの前景ブラシを設定・取得できる。

Control.Foreground Property (System.Windows.Controls) | Microsoft Docs

BackgroundがRedの状態
BackgroundがRedの状態

Backgroundが"Red"の状態はこうだが、Foregroundに"White"をセットすると、

前景色
前景色

前景色が白になる。
Buttonの前景色はテキストの部分なので、テキストが白くなる。

背景が赤にテキストが白のボタン
背景が赤にテキストが白のボタン

背景が赤にテキストが白のボタン。

Sample/wpf/Control/Foreground/src/Control_ at master · bg1bgst333/Sample · GitHub

Control.Background

Control.Backgroundプロパティで、コントロールの背景ブラシを設定・取得できる。

Control.Background Property (System.Windows.Controls) | Microsoft Docs

ボタンのデフォルト状態
ボタンのデフォルト状態

ボタンの背景色は、デフォルトではこのような状態になっているが、

BackgroundをRedにする
BackgroundをRedにする

Backgroundを"Red"にするとこうなる。

背景色は赤
背景色は赤

背景色は赤になっている。

Sample/wpf/Control/Background/src/Control_ at master · bg1bgst333/Sample · GitHub

Border

Borderは、子要素の周囲を罫線で囲む。

Border Class (System.Windows.Controls) | Microsoft Docs
WPF4.5入門 その13 「簡単なレイアウトを行うコントロール」 - かずきのBlog@hatena

Buttonの周囲に罫線
Buttonの周囲に罫線

太さ5、ブラシの色は黒で、囲む。

囲めたが余白が出来てしまっている
囲めたが余白が出来てしまっている

囲めたが余白が出来てしまっている。
MarginかPaddingかなあ・・・。

Sample/wpf/Border/Border/src/Border_ at master · bg1bgst333/Sample · GitHub