이 포스트의 목적

이 포스트는 '거침없이 배우는 펄(Learning Perl 5/e)' 을 읽고 느낀점과 연습문제를 푼 기록을 남기기 위해서 작성하였다.



연습문제 1.

원의 반지름이 12.5일 때 원주를 구하는 프로그램을 작성하세요. 원주는 2PI 에 반지름을 곱한 값입니다.

연습문제 1번을 풀면서 Global symbol "$pi" requires explicit package name at ./hello.pl line 7. 라는 에러가 났었다. 에러가 난 원인은 전역변수를 사용할 때 패키지 이름을 적어주지 않았기 때문인데, 변수 이름 앞에 my를 붙여주니 해결되었다. 아마도 Perl에서 OOP적 구현을 위해서 C++의 namespace같은 것을 이렇게 구현하지 않았나 추측해 본다.
#!/usr/bin/perl

use strict;
use warnings;

my $pi = 3.141592654;
my $val = 12.5 * $pi * 2;

print "원주율은 $val입니다.\n";

원주율은 78.53981635입니다.



연습문제 2.

이전 연습문제의 프로그램을 수정해서 프로그램을 실행한 사용자로부터 프롬프트에서 반지름 값을 입력받도록 합니다. 그래서 사용자가 12.5의 반지름을 입력하면, 이전 연습문제의 결과와 같은 값이 나와야 합니다.



분명히 키 입력을 받을 때 줄바꿈 문자도 같이 들어올텐데 chomp를 쓰는게 맞는지 안써도 되는건지 고민된다. 좀 더 견고하게 프로그램하려면 입력값이 문자열인지 숫자인지부터 검사해야겠지...
#!/usr/bin/perl

use strict;
use warnings;

my $pi = 3.141592654;
chomp(my $input = <stdin>);
my $val = $input * $pi * 2;

print "원주율은 $val입니다.\n";



연습문제 3.

이전의 연습문제 프로그램을 수정해서 사용자가 0 이하의 값을 입력하면 원주값을 음수가 아닌 0이 되도록 하세요.
#!/usr/bin/perl

use strict;
use warnings;

my $pi = 3.141592654;
my $input = <stdin>;

if($input lt 0) {
    $input = 0;
}
my $val = $input * $pi * 2;

print "원주율은 $val입니다.\n";


연습문제 4

프롬프트에서 숫자 두 개를 별도의 줄에서 입력을 읽어 들인 후 두 개의 숫자를 곱한 값을 출력하는 프로그램을 작성하세요.
#!/usr/bin/perl

use strict;
use warnings;

my $read_first = <STDIN>;
my $read_second = <STDIN>;

print $read_first * $read_second."\n";



연습문제 5

프롬프트에서 문자열과 숫자를 별도의 줄에서 입력을 읽어 들인 후 숫자의 수만큼 문자열을 다른 행에 출력하는 프로그램을 작성하세요.
#!/usr/bin/perl

use strict;
use warnings;

print "Input string: ";
chomp(my $read_string = <STDIN>);
print "Input number: ";
my $read_number = <STDIN>;

print "<result>\n";
print $read_string x $read_number;

+ Recent posts