camel

�ϤƤַ�ͳ��Charsbar���󤫤���Ŧ���ꡣ

[��] not defined �ȥҥ��ɥ������
�ΤϤ�����äƤ����ΤǤ�������use warnings�פ�Ȥ��Ϥ᤿�顢 �ٹ� ("Use of uninitialized value ...") ���Ф�褦�ˤʤä��Τǡ� ���Ĥ�����Ƥ���ΤǤ��ġ�

����ޤ�Perl�������Ǥ�TMTOWTDI���к�������Τ����ɡ���������ʤΤǤ����Ǥ����к���ޤȤ�Ƥ����ޤ���

no warnings 'uninitialized';

���줬���ִ���Ū���к��ˤʤ�ޤ���Scopeñ�̤�ͭ����pragma�ʤΤǡ�

use warnings; 
sub foo{
  no warnings 'uninitialized';
  # �����Ͻ��������
}
# �����Ͻ������ɬ�פ���

�Ȥʤ�ޤ��������Ȥ��Ƥϡ���������Ƥ��ޤ����ȡ�warnings��trap�����ߤ����ѿ��ޤ��оݤ��鳰���Ƥ��ޤ����Ȥ��������ޤ���

my $arg = shift || default_value

���ϤǻȤ���硢���줬�Ǥ�ݥԥ�顼�����Τ�ޤ���

use warnings; 
sub foo{
  my $required = shift;       # ɬ�����ꤷ���ߤ����Τǥǥե�����ͤϻ��ꤷ�ʤ�
  my $optional = shift || 42; # ���꤬�ʤ��줿��ǥե�����ͤ�Ȥ�
  # ...
}

�伫�ȡ����ֻȤ��Τ�����Ǥ���

sub foo{
  my ($required, $optional) = @_:
  $optional ||= 42;
  # ...
}

�Ǥ�Ʊ�ͤθ��̤���������Ǥ��ޤ��������������μ�ˡ�ˤϰ�����꤬���äơ�����Ū��''��0��ͭ�����ͤȤ��������ޤǥǥե�����ͤǽ������Ƥ��ޤ��ΤǤ���������ɤ��ˤ�

sub foo{
  my ($required, $optional) = @_:
  $optional = 42 unless defined $optional;
}

�Ȥ��ʤ���Фʤ�ʤ����ơ�||=��Ȥ���ˡ������ݤǤ���

���������ɤ�����Τ��Ȥ��������Ϸ빽�Τ��餢�äơ���??�黻�Ҥˤ��褦�ס֤������ספʤɤ��ޤ��ޤʵ���������Perl 5.9��Ƴ�����줿�Τ�//�黻�ҡ������Ȥ���

sub foo{
  my ($required, $optional) = @_:
  $optional //= 42;
  # ...
}

�Ƚ񤱤�褦�ˤʤ�ޤ���

������Hash��Ȥ�

���ȡ��Ƕ������Ƥ����Τ���������Hash��Ȥ��Ȥ�����ˡ��Cookbook��pp.384�Ǥ�Ҳ𤵤�Ƥޤ���

sub foo{
  my %arg = (
    optional => 42,
    @_, # �������ݥ����
  );
}

�Ǹ��@_�����뤳�Ȥǡ�Ʊ��key�����ä����ˤϤ��줬�����Ǿ�񤭤����櫓�Ǥ���Hash�ˤ��뤳�Ȥˤ�ꡢ���������Ʊ�ˤʤ�ʤɡ�������¿�����ˤ�����ͭ������ˡ�ʤΤǤ�����Performance�ˤϤ������ٶ����ޤ������դ˰��������ʤ���Τ��Ф��ƤϸƤӽФ�����

foo('bar', 1);

�ǺѤ�Ǥ�����Τ���

foo(required => 'bar', optional => 1);

�ȤʤäƤ��ޤ��Τ�����Ǥ���

Perl6�ǤϤɤ��ʤ뤫?

Perl6�Ǥϡ��������θ������Ƥ����Ȥ����ɤꤷ�������ˤʤ�ޤ���

sub foo($required, $?optional = 42){
  # ....
}

�Ƚ񤯤����ǡ��嵭�Τ����Ȥ��������ƤȤä��Τ�Ʊ���ˤʤ�ޤ�����������ǡ�

foo()                                   # compile-time error
foo('bar')                              # ok
foo('bar', 1);                          # ok
foo(required => 'bar', optional => 1);  # ok

�Ȥʤ뤫�餦�줷���ǤϤ���ޤ��󤫡�

Dan the Uninitialized Man