์ด๊ฒ์ Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ perlform ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
perlform - Perl ํ์
๊ธฐ์
Perl์๋ ๊ฐ๋จํ ๋ณด๊ณ ์์ ์ฐจํธ๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ด ๋๋ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ์ด๋ฅผ ์ด์งํ๊ธฐ ์ํด,
Perl์ ์ถ๋ ฅ ํ์ด์ง๊ฐ ์ธ์๋ ๋์ ๋ชจ์๊ณผ ๋น์ทํ๊ฒ ์ถ๋ ฅ ํ์ด์ง๋ฅผ ์ฝ๋ฉํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ๊ทธ๊ฒ
ํ์ด์ง์ ๋ช ์ค์ด ์๋์ง, ํ์ฌ ์ด๋ค ํ์ด์ง์ ์๋์ง, ์ธ์ ์ฝ์ด์ผ ํ๋์ง ๋ฑ์ ์ถ์ ํ ์ ์์ต๋๋ค.
ํ์ด์ง ํค๋ ์ธ์ ๋ฑ ํค์๋๋ FORTRAN์์ ๋น๋ ค์์ต๋๋ค. ์ฒด์ฌ() ์ ์ธํ๊ณ
์ฐ๋ค() ์คํํ๋ค; perlfunc์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์. ๋คํํ ๋ ์ด์์์ด ํจ์ฌ ๋ ๋ง์ต๋๋ค.
์ฝ๊ธฐ ์ฝ๊ณ BASIC์ PRINT USING ๋ฌธ๊ณผ ๋น์ทํฉ๋๋ค. ๊ฐ๋ํ ์ฌ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ธ์ ๋ ธํ(1).
ํจํค์ง ๋ฐ ์๋ธ๋ฃจํด๊ณผ ๊ฐ์ ํ์์ ์คํ๋์ง ์๊ณ ์ ์ธ๋๋ฏ๋ก
ํ๋ก๊ทธ๋จ์ ์ด๋ ์ง์ ์์๋ ๋ฐ์ํฉ๋๋ค. (๋ณดํต์ ๋ชจ๋ ํจ๊ป ๋ณด๊ดํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.)
Perl์ ๋ค๋ฅธ ๋ชจ๋ "์ ํ"๊ณผ๋ ๋ณ๊ฐ๋ก ๊ณ ์ ํ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ ๋ค์์ ์๋ฏธํฉ๋๋ค.
"Foo"๋ผ๋ ์ด๋ฆ์ ํจ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฆ์ด "Foo"์ธ ํ์์ ๊ฐ๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค.
"ํธ". ๊ทธ๋ฌ๋ ํน์ ํ์ผ ํธ๋ค๊ณผ ๊ด๋ จ๋ ํ์์ ๊ธฐ๋ณธ ์ด๋ฆ์
ํ์ผ ํธ๋ค์ ์ด๋ฆ๊ณผ ๋์ผํฉ๋๋ค. ๋ฐ๋ผ์ STDOUT์ ๊ธฐ๋ณธ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"STDOUT"์ด๊ณ ํ์ผ ํธ๋ค TEMP์ ๊ธฐ๋ณธ ํ์ ์ด๋ฆ์ "TEMP"์ ๋๋ค. ๊ทธ๋ค์ ๋จ์ง
๊ฐ์. ๊ทธ๋ ์ง ์์ต๋๋ค.
์ถ๋ ฅ ๋ ์ฝ๋ ํ์์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธ๋ฉ๋๋ค.
ํ์ ์ด๋ฆ =
์์ ๋ชฉ๋ก
.
์ด๋ฆ์ด ์๋ต๋๋ฉด "STDOUT" ํ์์ด ์ ์๋ฉ๋๋ค. ์ฑ๊ธ "." ์ด 1์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํฌ๋งท์ ์ข ๋ฃํฉ๋๋ค. FORMLIST๋ ์ผ๋ จ์ ํ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ํ์ ๋ค์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
์ธ ๊ฐ์ง ์ ํ:
1. ์ฒซ ๋ฒ์งธ ์ด์ '#'์ ๋ฃ์ด ํ์ํ๋ ์ฃผ์์ ๋๋ค.
2. ํ๋์ ์ถ๋ ฅ ๋ผ์ธ์ ๋ํ ํ์์ ์ ๊ณตํ๋ "๊ทธ๋ฆผ" ๋ผ์ธ.
3. ์ด์ ๊ทธ๋ฆผ ์ค์ ์ฐ๊ฒฐํ ๊ฐ์ ์ ๊ณตํ๋ ์ธ์ ์ค.
๊ทธ๋ฆผ ์ค์๋ ๋ฆฌํฐ๋ด ํ ์คํธ์ ํผํฉ๋ ์ถ๋ ฅ ํ๋ ์ ์๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด๊ฒ๋ค
์ ์ ์ด๋ค ์ข ๋ฅ์ ๋ณ์ ๋ณด๊ฐ๋ ๊ฑฐ์น์ง ์์ต๋๋ค. ํ๋ ์ ์๊ฐ ๊ตฌ์ฑ๋ฉ๋๋ค.
ํ๋๋ฅผ ์์ํ๊ณ ์ํ๋ ๋๋น๋ก ํ์ฅํ๊ธฐ ์ํ ๋ฌธ์ ์งํฉ์์. ์ด๊ฒ์
ํ๋ ์ ์์ ๋ํ ์ ์ฒด ๋ฌธ์ ์ธํธ:
@ ์ผ๋ฐ ํ๋์ ์์
^ ํน์ ํ๋์ ์์
< ์ผ์ชฝ ๋ง์ถค์ ์ํ ํจ๋ ๋ฌธ์
| ์ผํฐ๋ง์ ์ํ ํจ๋ ๋ฌธ์
> ์ค๋ฅธ์ชฝ ๋ง์ถค์ ์ํ ํจ๋ ๋ฌธ์
# ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌ๋ ์ซ์ ํ๋์ ํจ๋ ๋ฌธ์
์ฒซ ๋ฒ์งธ # ๋์ 0: ์์ XNUMX์ด ์๋ ํจ๋ ๋ฒํธ
. ์ซ์ ํ๋ ๋ด์ ์์์
... ํ ์คํธ ํ๋๋ฅผ ์ข ๋ฃํ๊ณ "..."๋ฅผ ์๋ฆผ ์ฆ๊ฑฐ๋ก ํ์ํฉ๋๋ค.
@* ์ฌ๋ฌ ์ค ๊ฐ์ ๋ํ ๊ฐ๋ณ ๋๋น ํ๋
^* ์ฌ๋ฌ ์ค ๊ฐ์ ๋ค์ ์ค์ ๋ํ ๊ฐ๋ณ ๋๋น ํ๋
~ ๋ชจ๋ ํ๋๊ฐ ๋น์ด ์๋ ์ค์ ์ต์ ํฉ๋๋ค.
~~ ๋ชจ๋ ํ๋๊ฐ ์์ง๋ ๋๊น์ง ๋ผ์ธ์ ๋ฐ๋ณตํฉ๋๋ค.
๊ทธ๋ฆผ ์ค์ ๊ฐ ํ๋๋ "@"(at) ๋๋ "^"(์บ๋ฟ)์ผ๋ก ์์ํฉ๋๋ค.
๊ฐ๊ฐ "์ผ๋ฐ" ๋๋ "ํน์" ํ๋๋ฅผ ํธ์ถํ๊ฒ ์ต๋๋ค. ํจ๋ ๋ฌธ์ ์ ํ
ํ๋๊ฐ ํ ์คํธ์ธ์ง ์ซ์์ธ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ฌผ๊ฒฐํ ์ฐ์ฐ์๋
ํ๋. ๋ค์ํ ๊ฐ๋ฅ์ฑ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ณธ๋ฌธ Fields
ํ๋์ ๊ธธ์ด๋ ํ๋๋ฅผ ์ฌ๋ฌ ๊ฐ์ "<", ">" ๋๋
"|" ์ซ์๊ฐ ์๋ ํ๋๋ฅผ ๊ฐ๊ฐ ์ผ์ชฝ ๋ง์ถค์ผ๋ก ์ง์ ํ๋ ๋ฌธ์
์ค๋ฅธ์ชฝ ๋ง์ถค ๋๋ ์ผํฐ๋ง. ์ผ๋ฐ ํ๋์ ๊ฒฝ์ฐ ๊ฐ(์ฒซ ๋ฒ์งธ
๊ฐํ)์ ์ ํ๋ ์ ๋ ฌ์ ๋ฐ๋ผ ์ ํ๋์ด ์ธ์๋๋ฉฐ ์ด๊ณผ๋ถ์ ์๋ผ๋ ๋๋ค.
๋ฌธ์. "..."๋ก ํ ์คํธ ํ๋๋ฅผ ์ข ๋ฃํ๋ฉด ์ธ ๊ฐ์ ์ ์ด ํ์๋ฉ๋๋ค.
๊ฐ์ด ์๋ฆฝ๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ฌ๋ฌ ์ค ํ ์คํธ๋ฅผ ์์ฑํ๋ ๋ฐ ํน์ ํ ์คํธ ํ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ธ๋ก ์ฑ์ฐ๊ธฐ; ์์ธํ ๋ด์ฉ์ "์ฑ์ฐ๊ธฐ ๋ชจ๋ ์ฌ์ฉ"์ ์ฐธ์กฐํ์ธ์.
์:
ํ์ STDOUT =
@<<<<<< @|||||| @>>>>>>
"์ผ์ชฝ", "๊ฐ์ด๋ฐ", "์ค๋ฅธ์ชฝ"
.
์ถ๋ ฅ:
์ผ์ชฝ ์ค๊ฐ ์ค๋ฅธ์ชฝ
์ซ์ Fields
ํจ๋ฉ ๋ฌธ์๋ก "#"์ ์ฌ์ฉํ๋ฉด ์ค๋ฅธ์ชฝ ๋ง์ถค์ผ๋ก ์ซ์ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค. ์
์ ํ์ "." ์์์ ์์น๋ฅผ ์ ์ํฉ๋๋ค. ๋์ ์ "0"(์)์ ์ฌ์ฉํฉ๋๋ค.
์ฒซ ๋ฒ์งธ "#", ํ์ํ ๊ฒฝ์ฐ ์์์ด ์ง์ ๋ ์ซ์ ์์ XNUMX์ด ์ฑ์์ง๋๋ค. ใ
๊ฐ์ด ์ ์๋์ง ์์ ๊ฒฝ์ฐ ํน์ ์ซ์ ํ๋๋ ๊ณต๋ฐฑ์ผ๋ก ํ์๋ฉ๋๋ค. ๊ฒฐ๊ณผ๊ฐ์ด ๋์ค๋ฉด
์ง์ ๋ ๋๋น๋ฅผ ์ด๊ณผํ๋ฉด ํ๋๊ฐ ์ค๋ฒํ๋ก ์ฆ๊ฑฐ๋ก "#"์ผ๋ก ์ฑ์์ง๋๋ค.
์:
ํ์ STDOUT =
@### @.### @##.### @### @### ^####
42, 3.1415, ์ ์๋์ง ์์, 0, 10000, ์ ์๋์ง ์์
.
์ถ๋ ฅ:
42 3.142 0.000 0 ####
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ๋ถ์ผ @* for ๊ฐ๋ณ ๋๋น ๋ฉํฐ ๋ผ์ธ ๋ณธ๋ฌธ
"@*" ํ๋๋ ์๋ฆฌ์ง ์์ ๊ฐ์ ์ฌ๋ฌ ์ค๋ก ์ธ์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋์ผ ํ๋ค(๊ทธ๋ฌ๋
ํ์ํ์ง ์์)์ ํ ์ค์ ๊ทธ ์์ฒด๋ก ๋ํ๋ฉ๋๋ค. ๋ง์ง๋ง ์ค ๋ฐ๊ฟ์ด ์๋ ค์ก์ง๋ง ๋ค๋ฅธ ๋ชจ๋ ํญ๋ชฉ์
๋ฌธ์๋ ๊ทธ๋๋ก ๋ฐฉ์ถ๋ฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ๋ถ์ผ ^* for ๊ฐ๋ณ ๋๋น ํ ๋ฒ์ ํ ์ค ๋ณธ๋ฌธ
"@*"์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ๋ณ ๋๋น ํ๋์ ๋๋ค. ์ ๊ณต๋ ๊ฐ์ ์ค์นผ๋ผ ๋ณ์์ฌ์ผ ํฉ๋๋ค.
Perl์ ํ ์คํธ์ ์ฒซ ๋ฒ์งธ ์ค(์ฒซ ๋ฒ์งธ "\n"๊น์ง)์ ํ๋์ ๋ฃ์ ๋ค์ ์๋ผ๋ ๋๋ค.
๋ค์๋ฒ์ ๋ณ์๊ฐ ์ฐธ์กฐ๋ ๋ ๋ ๋ง์ ๋ด์ฉ์ด ํฌํจ๋๋๋ก ๋ฌธ์์ด ์์์ ์ญ์ ํฉ๋๋ค.
ํ ์คํธ๋ฅผ ์ธ์ํ ์ ์์ต๋๋ค. ๋ณ์๋ ์ง์ ๋ณต์๋ฉ๋๋ค.
์:
$text = "1ํ\n2ํ\n3ํ";
ํ์ STDOUT =
ํ ์คํธ: ^*
$text
~~ ^*
$text
.
์ถ๋ ฅ:
ํ ์คํธ: 1ํ
๋ผ์ธ 2
๋ผ์ธ 3
์ง์ ๋ง์ผํ ์:
๊ฐ์ ๊ทธ๋ฆผ๊ณผ ๋์ผํ ์์๋ก ๋ค์ ํ์ ์ค์ ์ง์ ๋ฉ๋๋ค.
ํ๋. ๊ฐ์ ์ ๊ณตํ๋ ํํ์์ ์ผํ๋ก ๊ตฌ๋ถํด์ผ ํฉ๋๋ค. ๊ทธ๋ค์ ๋ชจ๋
ํ์ด ์ฒ๋ฆฌ๋๊ธฐ ์ ์ ๋ชฉ๋ก ์ปจํ ์คํธ์์ ํ๊ฐ๋๋ฏ๋ก ๋จ์ผ ๋ชฉ๋ก ํํ์
์ฌ๋ฌ ๋ชฉ๋ก ์์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ํํ์ ๋ ์ด์์ผ๋ก ํผ์ง ์ ์์ต๋๋ค.
์ค๊ดํธ๋ก ๋ฌถ์ธ ๊ฒฝ์ฐ ์ค์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฌ๋ ์ค๊ดํธ๋ ์ฒซ ๋ฒ์งธ ํ ํฐ์ ์ฒซ ๋ฒ์งธ ํ ํฐ์ด์ด์ผ ํฉ๋๋ค.
์ . ํํ์์ด ์์ ๋ถ๋ถ์ด ์๋ ์ซ์๋ก ํ๊ฐ๋๋ ๊ฒฝ์ฐ
ํด๋น ๊ทธ๋ฆผ์ ์์ ๋ถ๋ถ์ด ์ถ๋ ฅ์ ๋ํ๋๋๋ก ์ง์ ํฉ๋๋ค(์ฆ,
์ฌ๋ฌ ๊ฐ์ "#" ๋ฌธ์๋ฅผ ์ ์ธํ ๋ชจ๋ ๊ทธ๋ฆผ์ ๋๋ค. ์์ด ํฌํจ๋ "."), ๋ฌธ์
"๋ก์ผ์ผ ์ฌ์ฉ"์ธ ๊ฒฝ์ฐ ์์์ ์ ์ฌ์ฉ๋๋ ๊ฐ์ ํ์ฌ LC_NUMERIC ๋ก์ผ์ผ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
์ ํจํฉ๋๋ค. ์ด๋ ์๋ฅผ ๋ค์ด ๋ฐํ์ ํ๊ฒฝ์ด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ ์ผ์ด ๋ก์ผ์ผ์ ์ง์ ํ๋ฉด ๊ธฐ๋ณธ "." ๋์ ","๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. perlllocale ๋ฐ
์์ธํ ๋ด์ฉ์ "๊ฒฝ๊ณ "๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ ์์ฑ ๋ชจ๋
ํ ์คํธ ํ๋์์ ์บ๋ฟ์ ์ผ์ข ์ ์ฑ์ฐ๊ธฐ ๋ชจ๋๋ฅผ ํ์ฑํํฉ๋๋ค. ์์์ ์ธ ํํ ๋์ ,
์ ๊ณต๋ ๊ฐ์ ํ ์คํธ ๋ฌธ์์ด์ ํฌํจํ๋ ์ค์นผ๋ผ ๋ณ์์ฌ์ผ ํฉ๋๋ค. Perl์
ํ ์คํธ์ ๋ค์ ๋ถ๋ถ์ ํ๋์ ๋ฃ์ ๋ค์ ๋ฌธ์์ด ์ ๋ถ๋ถ์ ์๋ผ์
๋ค์์ ๋ณ์๊ฐ ์ฐธ์กฐ๋ ๋ ๋ ๋ง์ ํ ์คํธ๊ฐ ์ธ์๋ ์ ์์ต๋๋ค. (์,
์ด๋ ๋ณ์ ์์ฒด๊ฐ ์คํ ์ค์ ๋ณ๊ฒฝ๋จ์ ์๋ฏธํฉ๋๋ค. ์ฐ๋ค() ์ ํํ๊ณ ,
๋ณต์๋์ง ์์ต๋๋ค.) ํ ์คํธ์ ๋ค์ ๋ถ๋ถ์ ๋๋ต์ ์ธ ์ค๋ฐ๊ฟ์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค.
์ฐ์ฐ. ์ค ๋ฐ๊ฟ์ ๊ฐ์ ๋ก ์ํํ๋ ค๋ฉด ์บ๋ฆฌ์ง ๋ฆฌํด ๋ฌธ์("\r")๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋น์ ์ ํ ์ ์์ต๋๋ค
$: ๋ณ์๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ค๋จํ ์ ์๋ ๋ฌธ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์์ด ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ $FORMAT_LINE_BREAK_CHARACTERS)๋ฅผ ์ํ๋ ๋ชฉ๋ก์ ์ถ๊ฐํ์ธ์.
์.
์ผ๋ฐ์ ์ผ๋ก ๋์ผํ ํ๋์ ์ฐ๊ด๋ ์์ง ์คํ์ ์ผ๋ จ์ ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ค์นผ๋ผ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ธ๋ก์ ์ธ์ํฉ๋๋ค. ๋ง์ง๋ง ํ๋๋ฅผ ๋ค์์ผ๋ก ๋๋ด๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
ํ ์คํธ๊ฐ ๋๋ฌด ๊ธธ์ด์ ์ถ๋ ฅ์ ํ์๋์ง ์๋ ๊ฒฝ์ฐ ์ถ๋ ฅ์ ํ์๋๋ ํ ์คํธ "..."
์ ์ฒด.
์ต์ ์ ์ด๋์ All Fields ์ธ๊ฐ ๋น
์บ๋ฟ ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ๋๊ฐ ๋น์ด ์๋ ์ค์ด ์์ฑ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๊ฒ์ ์ต์ ํ ์ ์์ด์
์ค์ ์๋ฌด ๊ณณ์๋ "~"(๋ฌผ๊ฒฐํ) ๋ฌธ์๋ฅผ ๋ฃ์ด ์ค์ ๊ทธ๋ฆฝ๋๋ค. ๋ฌผ๊ฒฐํ๋
์ถ๋ ฅ ์ ๊ณต๋ฐฑ์ผ๋ก ๋ณํ๋ฉ๋๋ค.
๋ฐ๋ณต ์ ๋ฐ๋ ํ์ฑ ์
๋ ๊ฐ์ ์ธ์ ํ ๋ฌผ๊ฒฐํ ๋ฌธ์ "~~"๋ฅผ ํ ์ค์ ์๋ฌด ๊ณณ์๋ ๋ฃ์ผ๋ฉด ๊ทธ ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ผ์ธ์ ๋ชจ๋ ํ๋๊ฐ ์์ง๋ ๋๊น์ง, ์ฆ ์ ์๋์ง ์์ ๋๊น์ง ๋ฐ๋ณต๋ฉ๋๋ค. ํน๋ณํ ๊ฒฝ์ฐ
(์บ๋ฟ) ํ ์คํธ ํ๋๋ ์กฐ๋ง๊ฐ ๋ฐ์ํ์ง๋ง at์ ํ ์คํธ ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ค์์ฑ์ ์ ๊ณตํ๋ ํํ์ ์์ํ ๋์ผํ ๊ฐ์ ์ ๊ณตํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค!
("shift(@f)"๋ ์๋ํ๋ ๊ฐ๋จํ ์์ ๋๋ค.) ์ผ๋ฐ (at) ์ซ์ ํ๋๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
๊ทธ๋ฐ ์ค์๋ ๊ฒฐ์ฝ ๊ณต๋ฐฑ์ด ์๊ธฐ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Top of ํํ ์ฒ๋ฆฌ
์์ ์๋จ ์ฒ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํ์์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
"_TOP"์ด ์ฐ๊ฒฐ๋ ํ์ผ ํธ๋ค์ ๋๋ค. ๊ฐ ํ์ด์ง ์๋จ์์ ์คํ๋ฉ๋๋ค. ๋ณด๋ค
perlfunc๋ก "์ฐ๊ธฐ".
์ :
#์ ๋ํ ๋ณด๊ณ ์ / etc / passwd ํ์ผ
STDOUT_TOP ํ์ =
๋น๋ฐ๋ฒํธ ํ์ผ
์ด๋ฆ ๋ก๊ทธ์ธ ์ฌ๋ฌด์ค Uid Gid ํ
-------------------------------------------------- ----------------
.
ํ์ STDOUT =
@<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<
$name, $login, $office,$uid,$gid, $home
.
# ๋ฒ๊ทธ ๋ณด๊ณ ์ ์์์ ๋ณด๊ณ ์
STDOUT_TOP ํ์ =
๋ฒ๊ทธ ๋ฆฌํฌํธ
@<<<<<<<<<<<<<<<<<<<<< @||| @>>>>>>>>>>>>>>>>>>>>>>>
$์์คํ , $%, $๋ ์ง
-------------------------------------------------- ----------------
.
ํ์ STDOUT =
์ ๋ชฉ: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<
$ subject
์์ธ : @<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<< <<<<<<<<<
$์ธ๋ฑ์ค, $์ค๋ช
์ฐ์ ์์: @<<<<<<<<<< ๋ ์ง: @<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<< <
$์ฐ์ ์์, $๋ ์ง, $์ค๋ช
๋ณด๋ธ ์ฌ๋: @<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<< <<<<<<<<<<
$์ถ์ฒ, $์ค๋ช
ํ ๋น ๋์: @<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<< <<<<
$ํ๋ก๊ทธ๋๋จธ, $์ค๋ช
~ ^<<<<<<<<<<<<<<<<<<<<<<<<
$์ค๋ช
~ ^<<<<<<<<<<<<<<<<<<<<<<<<
$์ค๋ช
~ ^<<<<<<<<<<<<<<<<<<<<<<<<
$์ค๋ช
~ ^<<<<<<<<<<<<<<<<<<<<<<<<
$์ค๋ช
~ ^<<<<<<<<<<<<<<<<<<<<<...
$์ค๋ช
.
ํผ์ฉ์ด ๊ฐ๋ฅํด์ ์ธ์()์๊ณผ ์ฐ๋ค()๋์ผํ ์ถ๋ ฅ ์ฑ๋์ ์์ง๋ง
"$-"($FORMAT_LINES_LEFT)๋ฅผ ์ง์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
ํ์ฑ ๋ณ์
ํ์ฌ ํ์ ์ด๋ฆ์ $~($FORMAT_NAME) ๋ณ์์ ์ ์ฅ๋๋ฉฐ, ํ์ฌ ์ต์์
์์ ํ์ ์ด๋ฆ์ $^($FORMAT_TOP_NAME)์ ์์ต๋๋ค. ํ์ฌ ์ถ๋ ฅ ํ์ด์ง ๋ฒํธ๊ฐ ์ ์ฅ๋ฉ๋๋ค.
$%($FORMAT_PAGE_NUMBER)์ด๊ณ ํ์ด์ง์ ์ค ์๋ $=์ ๋๋ค.
($FORMAT_LINES_PER_PAGE). ์ด ํธ๋ค์ ์ถ๋ ฅ์ ์๋ ํ๋ฌ์ํ ์ง ์ฌ๋ถ๋ $|
($OUTPUT_AUTOFLUSH). ํ์ด์ง์ ๊ฐ ์๋จ(์ฒซ ๋ฒ์งธ ํ์ด์ง ์ ์ธ) ์์ ๋ฌธ์์ด ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$^L($FORMAT_FORMFEED)์ ์ ์ฅ๋ฉ๋๋ค. ์ด๋ฌํ ๋ณ์๋ ํ์ผ ํธ๋ค๋ณ๋ก ์ค์ ๋๋ฏ๋ก
๋๋ ~ํด์ผ ํด. ๊ณ ๋ฅด๋ค() ์ํฅ์ ๋ฏธ์น๊ธฐ ์ํด ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค:
์ ํ((์ ํ(OUTF),
$~ = "๋ด_๊ธฐํ_ํ์",
$^ = "๋ด_์์_ํ์"
)[0]);
๊ฝค ๋ชป ์๊ฒผ์ฃ ? ํ์ง๋ง ์ด๋ ์ผ๋ฐ์ ์ธ ๊ด์ฉ์ด์ด๋ฏ๋ก ๋ณผ ๋ ๋๋ฌด ๋๋ผ์ง ๋ง์ธ์.
์ต์ํ ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ํ์ผ ํธ๋ค์ ๋ณด๊ดํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ ์ฑ์ด ํฅ์๋ ๋ฟ๋ง ์๋๋ผ ์ด์
๋๋ฒ๊ฑฐ๋ฅผ ๋จ์ผ ๋จ๊ณ๋ก ์งํํ๊ธฐ ์ํ ํํ์์ ์ค๊ฐ ๋จ๊ณ):
$ofh = ์ ํ(OUTF);
$~ = "๋ด_๊ธฐํ_ํ์";
$^ = "๋ด_์์_ํ์";
์ ํ($ofh);
์์ด ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๋ณ์ ์ด๋ฆ๋ ์ฝ์ ์ ์์ต๋๋ค.
์์ด๋ฅผ ์ฌ์ฉํ๋ค;
$ofh = ์ ํ(OUTF);
$FORMAT_NAME = "๋ด_๊ธฐํ_ํ์";
$FORMAT_TOP_NAME = "๋ด_์์_ํ์";
์ ํ($ofh);
ํ์ง๋ง ์์ง๋ ๊ทธ๋ฐ ์๊ธด ์ผ์ด ์์์ ๊ณ ๋ฅด๋ค()์์ค. ๋ฐ๋ผ์ FileHandle ๋ชจ๋์ ์ฌ์ฉํ์ญ์์ค. ์ด์ ๋น์ ์
๋์ ์๋ฌธ์ ๋ฉ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํน์ ๋ณ์์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
FileHandle์ ์ฌ์ฉํ์ญ์์ค.
format_name OUTF "๋ด_๊ธฐํ_ํ์";
format_top_name OUTF "My_Top_Format";
ํจ์ฌ ๋ซ๋ค!
๋ ธํธ
๊ฐ ํ์๋ ์์์ ํํ์์ด ํฌํจ๋ ์ ์์ผ๋ฏ๋ก(์บ๋ฟ์ด ์๋ at ํ๋์ ๊ฒฝ์ฐ)
ํ๋), ๋ณด๋ค ์ ๊ตํ ์ฒ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. sprintf ()
์๋๋ฉด ๋น์ ์์ ์ ๊ฒ ์ค ํ๋. ์๋ฅผ ๋ค์ด:
ํ์ ID =
@<<<<<<<<<<<<<
&commify($n)
.
ํ๋์ ์ค์ at ๋๋ ์บ๋ฟ์ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
ํ์ ID =
์ฌ๊ธฐ์ @๊ฐ ์์ต๋๋ค.
"@"
.
์ ์ฒด ํ ์คํธ ์ค์ ์ค์์ ๋ง์ถ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ญ์์ค:
ํ์ ID =
@|||||||||||||||||||||||||||||||||||||||||
"์ผ๋ถ ํ ์คํธ ์ค"
.
"์ด๊ฒ์ ํ์ด์ง์ ์ค๋ฅธ์ชฝ์ ๋์ฐ์ธ์. ํ์ง๋ง"์ด๋ผ๊ณ ๋งํ๋ ๋ด์ฅ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
ํญ์ด ๋์ต๋๋ค." ๊ทธ๊ฒ์ด ์ด๋๋ก ๊ฐ๋์ง ์ง์ ํด์ผ ํฉ๋๋ค. ์ ๋ง๋ก ์ ๋ฐํ ์ฌ๋์
ํ์ฌ ์ด ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฆ์์์ ์์ฒด ํ์์ ๋ง๋ ๋ค์ eval () ๊ทธ๊ฒ์ :
$format = "STDOUT ํ์ = \n"
. '^' . '<' x $cols . "\N"
. '$ ํญ๋ชฉ' . "\N"
. "\t^" . "<" x ($cols-8) . "~~\n"
. '$ ํญ๋ชฉ' . "\N"
. ".\N";
$Debugging์ธ ๊ฒฝ์ฐ $format์ ์ธ์ํฉ๋๋ค.
ํ๊ฐ $ ํ์;
$@์ธ ๊ฒฝ์ฐ $@ ์ฃฝ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์์ด ์์ฑ๋ฉ๋๋ค.
ํ์ STDOUT =
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<
$entry
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <~~
$entry
.
์ฌ๊ธฐ ์ฝ๊ฐ ๋น์ทํ ์์ ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค. fmt(1) :
ํ์ =
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
$_
.
$/ = '';
๋์(<>) {
s/\s*\n\s*/ /g;
์ฐ๋ค;
}
๋ฐ๋ฅ ๊ธ
$FORMAT_TOP_NAME์๋ ํ์ฌ ํค๋ ํ์์ ์ด๋ฆ์ด ํฌํจ๋์ด ์์ง๋ง
๋ฐ๋ฅ๊ธ์ ๋ํด ๋์ผํ ์์ ์ ์๋์ผ๋ก ์ํํ๋ ํด๋น ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ณ
ํฐ ๋ฌธ์ ์ค ํ๋๋ ํ๊ฐํ ๋๊น์ง ํฐ ํ์์ด ๋ ๊ฒ์ ๋๋ค. ์ผ์ก ์ด
ํด์ผ ํ ์ผ๋ฆฌ์คํธ.
ํ ๊ฐ์ง ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ณ ์ ํฌ๊ธฐ ๋ฐ๋ฅ๊ธ์ด ์๋ ๊ฒฝ์ฐ ๋ค์์ ์ ํํ์ฌ ๋ฐ๋ฅ๊ธ์ ์ป์ ์ ์์ต๋๋ค.
๊ฐ ์์ $FORMAT_LINES_LEFT ์ฐ๋ค() ํ์ํ ๊ฒฝ์ฐ ๋ฐ๋ฅ๊ธ์ ์ง์ ์ธ์ํ์ธ์.
์ฌ๊ธฐ์ ๋ ๋ค๋ฅธ ์ ๋ต์ด ์์ต๋๋ค: "open(MYSELF, "|-")"๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๋ํ ํ์ดํ๋ฅผ ์ฝ๋๋ค("open" ์ฐธ์กฐ).
perlfunc์์) ๊ทธ๋ฆฌ๊ณ ํญ์ ์ฐ๋ค() STDOUT ๋์ MYSELF๋ก. ์๋ ์๊ฒ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ํ์ธ์
์ํ๋ ๋๋ก ๋จธ๋ฆฌ๊ธ๊ณผ ๋ฐ๋ฅ๊ธ์ ์ฌ์ ๋ ฌํ๋ ค๋ฉด STDIN์ ๋ง์ฌ์งํ์ธ์. ๋ณ๋ก ํธ๋ฆฌํ์ง๋ ์๊ณ ,
ํ์ง๋ง ๊ฐ๋ฅํฉ๋๋ค.
์ก์ธ์ค ์์ ๋ด๋ถ
์์ ๋ฉ์ปค๋์ฆ์ ๋ํ ๋ฎ์ ์์ค์ ์ก์ธ์ค๋ฅผ ์ํด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์๋ผ์ธ() $^A์ ์ก์ธ์คํ์ธ์.
($ACCUMULATOR ๋ณ์)๋ฅผ ์ง์ ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
์ :
$str = ํ์๋ผ์ธ <<'END', 1,2,3;
@<<< @||| @>>>
END
print "์, ๋ฐฉ๊ธ ๋์ฐ๊ธฐ์ '$^A'๋ฅผ ์ ์ฅํ์ต๋๋ค!\n";
์๋๋ฉด ๋ง๋ค๋ ค๋ฉด ์ฐ๊ธฐ() ์๋ธ๋ฃจํด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฐ๋ค() ๋ญ sprintf () ํ๋ ๊ฒ์ ๋๋ค printf (), ํ
์ด:
์์ด๋ฅผ ์ฌ์ฉํ์ญ์์ค.
ํ์ ์ฐ๊ธฐ {
@_๊ฐ ์๋๋ฉด "์ฌ์ฉ๋ฒ: PICTURE ARGS ์ฐ๊ธฐ"๋ฅผ ์ง์ต๋๋ค.
๋ด $format = ๊ต๋;
$^A = "";
formline($format,@_);
$^A๋ฅผ ๋ฐํํฉ๋๋ค;
}
$string = swrite(<<'END', 1, 2, 3);
๋๋ฅผ ์ฒดํฌ ์์
@<<< @||| @>>>
END
$string ์ธ์;
๊ฒฝ๊ณ
ํ์์ ๋๋ด๋ ์ธ๋ก์ด ์ ์ ํ์์ ํต๊ณผํ๋ ๋ฉ์ผ ๋ฉ์์ง๋ฅผ ์กฐ๊ธฐ์ ์ข ๋ฃํ ์๋ ์์ต๋๋ค.
์๋ชป ๊ตฌ์ฑ๋ ์ธํฐ๋ท ๋ฉ์ผ๋ฌ(๊ทธ๋ฆฌ๊ณ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์ด๋ฌํ ์๋ชป๋ ๊ตฌ์ฑ์ด ์ผ๋ฐ์ ์ ๋๋ค.
์์ธ๋ ์๋๋๋ค). ๋ฐ๋ผ์ ๋ฉ์ผ์ ํตํด ํฌ๋งท ์ฝ๋๋ฅผ ๋ณด๋ผ ๋ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํด์ผ ํฉ๋๋ค.
ํ์ ์ข ๋ฃ ์ ์ด ์ผ์ชฝ ์ฌ๋ฐฑ์ ์์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด SMTP ์ฐจ๋จ์ด ๋ฐฉ์ง๋ฉ๋๋ค.
"my"๋ก ์ ์ธ๋ ์ดํ ๋ณ์๋ ํ์์ด ์๋ ํ ํ์ ๋ด์์ ํ์๋์ง ์์ต๋๋ค.
์ดํ ๋ณ์์ ๋ฒ์ ๋ด์์ ์ ์ธ๋ฉ๋๋ค.
ํ๋ก๊ทธ๋จ ํ๊ฒฝ์ด LC_NUMERIC ๋ก์ผ์ผ์ ์ง์ ํ๊ณ "๋ก์ผ์ผ ์ฌ์ฉ"์ด ์ ํจํ ๊ฒฝ์ฐ
ํ์์ด ์ ์ธ๋๋ฉด ๋ก์บ์ ์์์ ๋ฌธ์๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํฌ๋งท๋ ์ถ๋ ฅ. ํฌ๋งท๋ ์ถ๋ ฅ์ "๋ก์ผ์ผ ์ฌ์ฉ"์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
์ฐ๋ค() ํธ์ถ๋ฉ๋๋ค. ๋ก์ผ์ผ ์ฒ๋ฆฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ perllocale์ ์ฐธ์กฐํ์ธ์.
๊ณ ์ ๊ธธ์ด ํ ์คํธ ํ๋์ ํ์๋ ๋ฌธ์์ด ๋ด์์ ๊ฐ ์ปจํธ๋กค์
๋ฌธ์๋ ๊ณต๋ฐฑ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. (๊ทธ๋ฌ๋ ๋ค์์ ์ฌ์ฉํ ๋ "\r"์ ํน๋ณํ ์๋ฏธ๋ฅผ ๊ธฐ์ตํ์ญ์์ค.
์ฑ์ฐ๊ธฐ ๋ชจ๋.) ์ด๋ ์ผ๋ถ ํ๋ฉด์์ ์ ์ด ๋ฌธ์๊ฐ "์ฌ๋ผ์ง" ๋ ์ ๋ ฌ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ํ๋ฉ๋๋ค.
์ถ๋ ฅ ๋ฏธ๋์ด.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์ผ๋ก perlform ์ฌ์ฉ