Perl ๐ช ์ฃผ๊ฐ #776 - Perl ๋ฐฐ์ฐ๊ธฐ
์ถ์ฒ: Dev.to
์๋๋ Perl Weekly 776์ ์ค๋ ธ์ต๋๋ค.
์๋
ํ์ธ์,
์ต๊ทผ์ Randal L. Schwartz์ The Day I Decided Never to Learn Python์ด๋ผ๋ ๊ธ์ ์ฝ์์ต๋๋ค. Randal์ ์๊ฐ๊ฐ ํ์ ์๋ ์ธ๋ฌผ์ ๋๋ค. ๊ทธ๋ 2001๋ ์ผ๋ก ์ ๋ฅผ ๋ฐ๋ ค๋ค ์ฃผ์๊ณ , ๊ทธ๋ ์ ๋ 1999๋ ์ Perl์ ์ฒ์ ๋ฐฐ์ฐ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ๋ ์ ๊ฐ ํ๋ก๊ทธ๋๋ฐ์ ์์ํ ๋ ํฐ ๊ธธ์ก์ด๊ฐ ๋์ด ์ฃผ์์ต๋๋ค.
์ง๋ ์ฃผ์๋ Gabor๊ฐ ์งํํ FalkorDB ์ค์๊ฐ ์ธ์ ์ ์ฐธ์ฌํ์ต๋๋ค. ๊ทธ๊ฐ ์ฝ๋ฉํ๊ณ ์ด์ผ๊ธฐํ๋ ๋ชจ์ต์ ์กฐ์ฉํ ์ง์ผ๋ณด๋ ๊ฒ๋ง์ผ๋ก๋ ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ์ด๋ ๋ช ๋ ์ ๊ทธ์ ํจ๊ป ํ์ด ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉฐ Dancer2 ํ๋ก์ ํธ์ ํ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋๋ ๊ธฐ์ต์ ๋ ์ฌ๋ฆฌ๊ฒ ํ์ต๋๋ค. ๊ทธ๋๋ ์๋์ง์ ์๊ฐ์ด ๋์ณค๋ ํฉ๊ธ๊ธฐ์์ฃ .
๊ทธ๋ผ์๋ ์ ๋ ์ฌ์ ํ Perl์ ๋ฐฐ์ฐ๊ณ ์์ผ๋ฉฐ, ์๋ก์ด ๊ฒ๋ค์ ์๋ํ๊ณ ์์ต๋๋ค. ์ด ๊ฐ๋ ๋ค์ด ๋ชจ๋์๊ฒ ์๋กญ์ง๋ ์๊ฒ ์ง๋ง, ์ ์๊ฒ๋ ์๋กญ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ ์ต๊ทผ์ ์ฒ์์ผ๋ก GraphQL์ ๋ง์ ธ๋ณด์๊ณ , RAG์ JSONโRPC๋ ์คํํด ๋ณด์์ต๋๋ค. ์๋์ ์ต๊ทผ ์คํ๋ค์ ๊ณต์ ํฉ๋๋ค.
ํ์ต์ ๋์ด ์์ต๋๋ค. ๋ฉฐ์น ์ HTTP::Message v7.02 ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๊ฒฌํ๋๋ฐ, Olaf Alders๊ฐ ๋ฐฐํฌํ ๊ฒ์ด์ด์ ์ด๋ค ๋ณํ๊ฐ ์์๋์ง ๊ถ๊ธํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์ค๋ซ๋์ ๊นจ๋ซ์ง ๋ชปํ๋ ์ฌ์ค์ ์๊ฒ ๋์์ต๋๋ค. GET, POST, PUT ๊ฐ์ HTTP ๋ฉ์๋๋ ์ต์ํ์ง๋ง, โ0โ๋ ์ ํจํ HTTP ๋ฉ์๋ ์ด๋ฆ์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๋ชฐ๋์ต๋๋ค. ์ด๋ฒ ๋ฆด๋ฆฌ์ค๋ ๋ฐ๋ก ๊ทธ ์ง์์ ์ถ๊ฐํ์ผ๋ฉฐ, ์ด๋ ๊ธฐ์ฌ์ Karen Etheridge ๋๋ถ์ด์์ต๋๋ค.
์ด ๋ชจ๋ ์์ค์๋ ์ ๋ DBIx::Class์ ๊ดํ ๊ณง ์ถ๊ฐ๋ ์ฑ ์์ ์ ์ํด ์๊ฐ์ ๋ด๊ณ ์์ต๋๋ค. ์ต๊ทผ DBIC ์ปดํฌ๋ํธ์ ๊ฐ๋ ฅํจ์ ๋ณด์ฌ์ฃผ๋ ๋ธ๋ก๊ทธ ๊ธ์ ์ฌ๋ ธ์ผ๋ฉฐ, ์ง์ค๋ ฅ์ ์์ง ์์ผ๋ ค ์ต์ ์ ๋คํ๊ณ ์์ต๋๋ค.
์ด๋ฒ ํธ๋ ๊ฐ์ธ์ ์ธ ํฌ์คํธ๊ฐ ๋ง์ด ๋ค์ด๊ฐ ์์ต๋๋ค. ์ด๋ฒ ์ฃผ์ ์ ํ ์ปค๋ฎค๋ํฐ ์์์ด ๊ฑฐ์ ์์๊ฑฐ๋ ์. ๊ทธ๋๋ ๋ด์ค๋ ํฐ๋ฅผ ์ฆ๊ฒจ ์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
์ด๋ฒ ์ฃผ PSC (227) | 2026โ06โ01
์ด๋ฒ ์ฃผ ์ฐ๋ฆฌ๋ ๋ค์ ์ ๋ ฅ์ผ๋ก ๋ณต๊ทํ์ต๋๋ค. ๋ชจ๋ ์ง์ฐ๋ ์ด์์ ์ฐจ๋จ ์์ธ์ ํด๊ฒฐํ์ต๋๋ค. Paul์ด ๊ณง 5.43.11์ ๋ฐฐํฌํ ์์ ์ ๋๋ค. ๋ณํฉํด์ผ ํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ง์ .11 ์ฌ์ดํด์ ์๋๋ฅผ ์๋ ์์ง๋ง, ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ 5.44 RC ์์ ์ ์์ํด ์ถ๊ฐ ์ง์ฐ์ ์ต์ํํ๋ ค๊ณ ํฉ๋๋ค.
Result Class - Components
DBIx::Class ์๋ฆฌ์ฆ ํฌ์คํธ๋ฅผ ์ด์ด๊ฐ๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ๋ ์ง/ํ์์คํฌํ ์ปฌ๋ผ์ ๋ค๋ฃจ๋ DBIC ์ปดํฌ๋ํธ์ ํ์ ๋ณด์ฌ์ค๋๋ค.
RAG with Perl
์ด ๊ธ์์๋ RAG๊ฐ ๋ฌด์์ธ์ง ํด์ํ๊ณ , LLM ๋ฐ ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Docker ์ปจํ ์ด๋ ์์์ ๋ํํ๋ RAG ์์ง์ Perl๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด ๋๋ค.
CPAN Debian Package
DBIx::Class::Async์ฉ Debian ํจํค์ง๋ฅผ ์ฒ์์ผ๋ก ๋ง๋ค์์ต๋๋ค. ๋จ๊ณ๋ณ ์ค๋ช ์ ํฌํจํ์ต๋๋ค.
JSONโRPC with Perl
gRPC๋ฅผ ๋ค๋ฃฌ ๋ค ๋ค์ ๋ชฉํ๋ JSONโRPC์์ต๋๋ค. JSONโRPC๋ฅผ ์๊ฒ ๋ ๋ค MCP๋ฅผ ํ๊ตฌํ๊ณ ์ ํ๊ณ , ์๊ฐ๋ณด๋ค ์ฝ๊ฒ ์์ฐํ ์ ์์์ต๋๋ค.
Mojo meets GraphQL
์ด๋ณด์๋ฅผ ์ํ ๊ธ์ ๋๋ค. ์ ์ญ์ GraphQL์ ์ฒ์ ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ด์ฃ . GraphiQL์ ์ด์ฉํด API๋ฅผ ๊ตฌ์ถํ๊ณ ํ ์คํธํ๋ ๋ถ๋ถ์ด ๊ฐ์ฅ ์ข์์ต๋๋ค.
DBIx::Class and GraphQL
DBIx::Class์ GraphQL์ ํตํฉํ๋ ๋ฐฉ๋ฒ์ ๊ณต์ ํ์ต๋๋ค. GraphQL์ ๋ง์์ด ์ฝํ ์ฌ๋์๊ฒ๋ ํ๋ญ๋๋ค. REST API ๋ฐฐ๊ฒฝ์ด ์๋ค๋ฉด ์ต์ํด์ง๋ ๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ฆด ๊ฒ๋๋ค. ์ ๊ฐ์ธ์ ์ธ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋ง์๋๋ฆฝ๋๋ค.
CPAN and GraphQL
DBIx::Class์ GraphQL ํตํฉ ํ, ๊ณผ์ ์ ๋ ๊ฐ๋จํ ๋ง๋ค๊ณ ์ ํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์๋ก์ด CPAN ๋ฐฐํฌํ DBIx::Class::Schema::GraphQL์ ๋ฐํํ์ต๋๋ค.
FalkorDB
FalkorDB์ฉ Perl ํด๋ผ์ด์ธํธ ๋ชจ๋์ ๋๋ค. ๋๋ถ๋ถ AI ๋๊ตฌ๋ก ์๋ ์์ฑํ์ผ๋ฉฐ ์์ง ์๋ ๊ฒํ ๋ ํ์ง ์์์ต๋๋ค.
DBIx::Class::Schema::GraphQL
DBIx::Class์ GraphQL ํตํฉ ์์ ์ค์ ๋ง๋ค์์ต๋๋ค. ์ด ๋ชจ๋์ ์ฌ์ฉํ๋ฉด GraphQL API๋ฅผ ์์ฃผ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
Maintaining Perl (Tony Cook) May 2026
The Weekly Challenge
Mohammad Sajid Anwar๊ฐ ์งํํ๋ The Weekly Challenge๋ ์ฌ๋ฌ๋ถ์ ํธ์ํ ์์ญ ๋ฐ์ผ๋ก ๋์ด๋ด๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฃผ๊ฐ ์ฑ๋ฆฐ์ง์ ์ฐธ์ฌํ๋ฉด $50์ ์๊ธ์ ๋ฐ์ ์๋ ์์ต๋๋ค. ๋งค๋ฌ ๋ง, ํ ๋ฌ ๋์ ๊ฐ์ฅ ํ๋ฐํ ๊ธฐ์ฌํ ์ฌ๋์ ์คํฐ์์ธ Marc Perry๊ฐ ์ ์ ํฉ๋๋ค.
The Weekly Challenge - 377
์ด๋ฒ ์ฃผ๋ โReverse Existenceโ์ โPrefix Suffixโ ๋ ๊ฐ์ง ์ฌ๋ฏธ์๋ ๊ณผ์ ๊ฐ ์์ต๋๋ค. ์ฃผ๊ฐ ์ฑ๋ฆฐ์ง๊ฐ ์ฒ์์ด๋ผ๋ฉด, ๋งค์ฃผ ์ฆ๊ธฐ๋ฉฐ ์ฐธ์ฌํด ๋ณด์ธ์. ์์ธํ ๋ด์ฉ์ FAQ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
RECAP - The Weekly Challenge - 376
์ง๋ ์ฃผ ํ PWC๊ฐ Perl๊ณผ Raku๋ก โChessboard Squaresโ์ โDoubled Wordsโ ๊ณผ์ ๋ฅผ ํด๊ฒฐํ ๊ธฐ์ฌ๋ฅผ ๊ฐ๋ตํ ๋์ง์ด ๋ด ๋๋ค. ๋ค์ํ ์๋ฃจ์ ์ ๋ง๋๋ณผ ์ ์์ต๋๋ค.
Doubled Chessboard
Raku ์ต์ ๋ฌธ๋ฒ์ ํ์ฉํด Weekly Challenge ๋ฌธ์ ๋ฅผ ๊น๋ํ๊ณ ๋ฏธ๋ คํ๊ฒ ํธ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ์ ์ ์๋ ์๋ธ์ ์ปค์คํ ํ์ ์ผ๋ก ์ ๋ ฅ์ ๊ฐ๋ ฅํ ๊ฒ์ฆํ๊ณ , ํ ํฐํ๋ ๊ฐ์ฒด์งํฅ ํด๋์ค ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด ํ ์คํธ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ์ต๋๋ค. ๋ณต์กํ ์ฃ์ง ์ผ์ด์ค(์: ์ฌ๋ฌ ์ค์ ๊ฑธ์น lookโbehind)๋ ์์ฝ๊ฒ ๋ค๋ฃน๋๋ค.
Doubled Words
Bob์ Perl์ ์ ์๋ ค์ก์ง๋ง ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ๋ด์ฅ ๊ธฐ๋ฅ์ ํ์ฉํด ๊น๋ค๋ก์ด ํ ์คํธ ์ฒ๋ฆฌ ๋ฌธ์ ์ ์ฐฝ์์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ์ํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ๋ช ํํ ๋ฌธ์ํ๋ ๋ฐฑํธ๋ํน ๋ฉ์ปค๋์ฆ์ ํตํด ํ ํฐ์ ์ฐํํ๋ฉด์, split ์ ๊ท์์ ์บก์ฒ ๊ทธ๋ฃน์ ์ด์ฉํด ๊ตฌ์กฐ์ ์ปจํ ์คํธ๋ฅผ ์ ์งํ๋ ์ฐ์ํ ๋ฐฉ์์ ๋๋ค.
Chess Solo
Jorg๋ ์ฒด์ค๋ณด๋ ์์น ๋ฌธ์ ๋ฅผ ๋งค์ฐ ๊ฐ๊ฒฐํ๊ณ ์ํ์ ์ผ๋ก ์ฐ์ํ๊ฒ ํ๋๋ค. modโฏ2 ์ฐ์ฐ ํ์์ ์ขํ ๊ธฐ๋ฐ์ด ์์ ํ ์๋ฉธํ๋ค๋ ์ ์ ์ด์ฉํด Perl๊ณผ J ์์ชฝ์์ ํ ์ค ์ฝ๋๋ง์ผ๋ก ๊ตฌํํ์ผ๋ฉฐ, ๋ ๊ตฌํ ๋ชจ๋ ํจ์จ์ ์ด๊ณ ๊ตฌ์กฐ๊ฐ ์ต์ํ๋์์ต๋๋ค.
The Weekly Challenge 376
์ด ๋ธ๋ก๊ทธ ํฌ์คํธ๋ ๋ช ๋ฃํ๋ฉด์๋ ์์ธํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ๊น๋ํ๊ณ ๊ด์ฉ์ ์ธ ์ฝ๋ ์์์ ํจ๊ป ์ ๊ท์์ ์ด์ฉํด ์ค๋ณต ๋จ์ด๋ฅผ ํ์ฑํ๊ณ , ๋ ์ํ ์ขํ๋ฅผ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ์งง๊ฒ ์ค๋ช ํฉ๋๋ค. ๋ณต์กํ ๋ก์ง์ ์ฝ๊ฒ ์ฝ๊ณ ๋ฐฐ์ธ ์ ์๋๋ก ๊ตฌ์ฑํ์ต๋๋ค.
Perl Weekly Challenge 376
Perl์ด ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์ ์ผ๋ง๋ ๊ฐ๋ ฅํ์ง๋ฅผ ๊ทนํ ์งง๊ณ ๊ด์ฉ์ ์ธ ์๋ฃจ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค. Luis Mochรกn์ ํํ๋ ฅ์ด ํ๋ถํ ํ ์ค ๋ฌธ์ฅ์ ์ฌ์ฉํด ๋ณต์กํ ์ ์ฝ์ ์๊ณ ๊น๋ํ ๋ ผ๋ฆฌ ํ๋ฆ์ผ๋ก ๋ณํํ์ต๋๋ค.
A 1โBit Chessboard and Fancy Separators
Matthias๋ Challengeโฏ376์์ ์ ์๋ ๋๊ด์ ์ ๊ตฌ๋ถ๋ ํ์ฑยทํฌ๋งทํ , ์ ๊ท์ ์ฌ์ฉ์ ๋ํ ๋ช ํํ ์ฃผ์, ๊ทธ๋ฆฌ๊ณ ํ๋ก๋์ ์ ์ ํฉํ ๊น๋ํ ์๋ฃจ์ ์ ์ถ์ ํตํด ๋ถ์์ ์ด๊ณ ์ฒด๊ณ์ ์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
You might think Iโm crazy, but I donโt even care
Perl Weekly Challengeโฏ376์ ๋ํ ๊ตฌ์กฐํ๋๊ณ ํฅ๋ฏธ๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋์ค ๋ฌธํ ์์๋ฅผ ์์น์ผ๋ก ์ธ์ฉํฉ๋๋ค. Packy๋ ์ค์ ํ ์คํธ ์ฒ๋ฆฌ์์์ ์ฐ์ํจ์ ๋ช ํํ ๋ณด์ฌ์ฃผ๊ณ , lookโahead ๋ก์ง๊ณผ ๊ฒฝ๊ณ ์ ์ฝ์ ์ค๋ช ํ๋ฉด์ ๊ฐ๋จํ๊ณ ๊ด์ฉ์ ์ด๋ฉฐ ์ ์ง๋ณด์๊ฐ ์ฌ์ด ์๋ฃจ์ ์ ์ ์ํฉ๋๋ค.
Squares and pairs
์ด ์๋ฃจ์
์ ์ฒด์ค๋ณด๋ ํจ๋ฆฌํฐ ๋ฌธ์ ๋ฅผ ๋งค์ฐ ๊น๋ํ๊ณ ์ํ์ ์ผ๋ก ๋ง์กฑ์ค๋ฝ๊ฒ ํด๊ฒฐํฉ๋๋ค. Peter๋ ์ด ๋ฌธ์(ASCII ๊ฐ, ord)์ ํ ๋ฒํธ๋ฅผ ํ์ฉํด ๊ณต๊ฐ ์ขํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ถ์ํ์ต๋๋ค.