# 변수

`use strict;`를 선언하면 엄격한 문법을 적용합니다. 이 경우, 모든 변수는 사용하기 전에 선언되어야 합니다.

```perl
#!/usr/bin/perl

$var;
```

```perl
#!/usr/bin/perl
use strict;

my $var;
```

## 변수의 범위

```perl
#!/usr/bin/perl
use warnings;
use strict;

our $var = 'Charlie';
print "$var\n"; # Charlie
{
    my $var = 'Steve';
    print "$var\n"; # Steve
}
print "$var\n"; # Charlie
```

`my` 는 지역 변수를 선언할 때 사용되는 키워드입니다. 선언된 블록 범위 내에서만 유효합니다.

`our`는 전역 변수의 선언에 사용되는 키워드입니다.

## @ARGV

프로그램 실행시 명령행으로부터 전달 받은 매개변수는 **@ARGV** 배열에 저장됩니다. **$#ARGV + 1**은 전달받은 매개 변수의 갯수입니다.

```perl
#!/usr/bin/perl
use strict;

my $size = $#ARGV+1;
print "count = $size\n";

for (@ARGV){
    print "$_\n";
}
```

## 특수 변수

|     |     |     |
| --- | --- | --- |
| \$_ |     |     |
| \$. |     |     |
| \$/ | 입력 레코드 구분자 |     |
| \$, | 출력 필드 구분자 |     |
| \$\ | 출력 레코드 구분자 |     |
| \$" |     |     |
| \$; |     |     |
| \$^L |     |     |
| \$: |     |     |
| \$^A |     |     |
| \$# |     |     |
| \$? | 시스템 콜로부터 돌려받은 상태 코드 |     |
| \$! | 오류 넘버 또는 오류 메시지 |     |
| \$@ | 구문 오류 메시지 |     |
| \$\$ | Perl 프로세스의 PID |     |
| \$< | UID |     |
| \$> |     |     |
| \$( | GID |     |
| \$) |     |     |
| \$0 |     |     |
|     |     |     |
|     |     |     |