Perl配列

Perlの配列変数は、@で始まります。添字は0から始まります。

$ cat array.pl
#!/usr/bin/perl
@a = ( ‘Perl’, ‘Java’ ); 
$a[2] = ‘Ruby’;
@a[3..4] = ( ‘Python’, ‘C’ );
print "\@a:";
print @a;
print "\n\$a[0]:";
print $a[0];
print "\n\@a[0..2]:";
print @a[0..2];
print "\n";

実行結果は次の通り

$ ./array.pl 
@a:PerlJavaRubyPythonC
$a[0]:Perl
@a[0..2]:PerlJavaRuby

perlの$_

下記のread_stdio_x.plとread_stdio_d.plは同じ動作をします。最初のプログラムでは変数xを使っていますが、これを省略することができます。省略した場合は、「x」の代わりに「$_」という変数が使われます。

$ cat read_stdio_x.pl 
#!/usr/bin/perl
while ($x = <STDIN>) {
  print $x;
}
$ cat read_stdio_d.pl 
#!/usr/bin/perl
while (<STDIN>) {
  print;
}

$ chmod 755 read_stdio_*.pl 
$ ./read_stdio_x.pl
abc
abc
^C
$ ./read_stdio_d.pl 
def
def
^C

プログラムを停止するには、キーボードで[Ctrl]と[C]を同時に押します(画面上の^Cは、その意味です)。

標準入力からの読み込み

標準入力からの読み込みには、「<STDIN>」を使います。下記の例では、標準入力から1行読み、変数 $x に代入してから、その値をprintするプログラムを作成しています。実際に実行しているところでは、read_stdio.pl をコマンドとして実行してから、「123」をキーボードから入力すると、その入力した文字列「123」が画面に出力されます。

$ cat read_stdio.pl 
#!/usr/bin/perl
$x = <STDIN>;         # 標準入力から1行読み、変数 $x に代入
print $x;        # $x をプリント

$ chmod 755 read_stdio.pl 
$ ./read_stdio.pl 
123
123

こんにちは perl

日本語を使うプログラムでは、使用している文字コードについて意識が必要です。iconvなどで変換しましょう。下記の例では、Shift_JISのhello_ja_SJIS.plからUTF-8のhello_ja_UTF8.plへ変換しています。最初は表示のために実行しているコマンドで、次に、表示された結果を hello_ja_UTF8.plへリダイレクトしています。最後に、hello_ja_UTF8.pl を実行しています。

$ iconv -f Shift_JIS -t UTF-8 hello_ja_SJIS.pl
#!/usr/bin/perl
print "こんにちは Perl\n"

$ iconv -f Shift_JIS -t UTF-8 hello_ja_SJIS.pl > hello_ja_UTF8.pl
$ chmod 755 hello_ja_UTF8.pl
$ ./hello_ja_UTF8.pl
こんにちは Perl

perl hello.pl

which コマンドで、どこにファイルがあるか確認をしておきます。次に、hello.plを作成します。perlコマンドの場所により、先頭行の内容は変えます。実行するには、perlコマンドでファイルを指定します。hello.plをchmodで実行可能とすれば、そのままファイルを実行することができます。

$ which perl
/usr/bin/perl

$ cat hello.pl 
#!/usr/bin/perl
print "Hello, Perl\n"

$ perl hello.pl 
Hello, Perl

$ chmod 755 hello.pl 
$ ./hello.pl 
Hello, Perl