이 포스트의 목적
이 포스트는 '거침없이 배우는 펄(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;