เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบžเบฒเบชเบฒเบเบฃเบฑเปˆเบ‡เปเบญเบชเบ›เบฒเป‚เบเบ™

Ad


OnWorks favicon

makepp_extending - เบญเบญเบ™เบฅเบฒเบเปƒเบ™เบ„เบฅเบฒเบง

เป€เบ›เบตเบ”เปƒเบŠเป‰ makepp_extending เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเบœเปˆเบฒเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ makepp_extending เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบซเบผเบฒเบเป†เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ™เป„เบฅเบ™เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบฑเปˆเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เป‚เบ„เบ‡เบเบฒเบ™:

NAME


makepp_extending -- เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ makepp เป‚เบ”เบเปƒเบŠเป‰ Perl

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”


Makepp เบžเบฒเบเปƒเบ™เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบžเบฝเบ‡เบžเปเป€เบžเบทเปˆเบญเปƒเบซเป‰เป‚เบ”เบเบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” Perl เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰
เป€เบžเบตเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™ เบซเบผเบทเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡.

เป‚เบ”เบโ€‹เบ—เบปเปˆเบงโ€‹เป„เบ› เบญเปˆเบทเบ™ on เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™ Perl เบฅเบฐเบซเบฑเบ” to เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ เบเบฑเบš เปเบ•เปˆเบ‡เปœเป‰เบฒ
เปเบ•เปˆเบฅเบฐ makefile เบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเปƒเบ™เบซเบ™เบถเปˆเบ‡ makefile เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบš
เบ„เปเบฒเบ™เบดเบเบฒเบกเปƒเบ™ makefile เบญเบทเปˆเบ™. เบŠเบธเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบปเปˆเบงเป„เบ›เบฅเบงเบกเบ—เบฑเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบฑเบ‡เปเบปเบ”
เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบทเบ–เบทเบเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเบธเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

เบ•เบปเบงเปเบ› Makefile เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เป€เบ›เบฑเบ™ Perl scalars เปƒเบ™เบŠเบธเบ”เบ™เบฑเป‰เบ™. (เบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™
เบ™เบตเป‰: เบ•เบปเบงเปเบ›เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เป€เบŠเบฑเปˆเบ™ CC เปเบกเปˆเบ™เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง
เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบฐเป€เบžเบฒเบฐ vars, เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ vars เปเบฅเบฐ
vars เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบกเปˆเบ™เบšเปเปˆเป€เบซเบฑเบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰.) เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ” Perl เปƒเบ”เป†เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”
makefile เบ•เบปเบงเปเบ›. เบ•เบปเบงเปเบ›เบ—เบปเปˆเบงเป‚เบฅเบเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบŠเบธเบ” "Mpp::global". เป€เบšเบดเปˆเบ‡
เบ•เบปเบงเปเบ› Makefile เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”.

เปเบ•เปˆเบฅเบฐเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ (ifperl / ifmakeperl, perl / makeperl, sub / makeub), the
เบซเบ™เป‰เบฒเบ—เบตเปˆ (perl / makeperl, เปเบœเบ™เบ—เบตเปˆ / makemap) เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบš (perl / makeperl) เบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” Perl เป‚เบ”เบเบเบปเบ‡เปƒเบ™ makefile เบกเบฒเปƒเบ™เบชเบญเบ‡เบฅเบปเบ”เบŠเบฒเบ”. เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เปเบ—เป‰เป†
Perl เบ›เบปเบเบเบฐเบ•เบด, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ "f_" เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›, เบ–เป‰เบฒ
เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ makepp. เบ•เบปเบงเปเบ›เบ—เบตเบชเบญเบ‡เบ—เปเบฒเบญเบดเบ”เบœเปˆเบฒเบ™เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเปเบ›เปเบšเบšเป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเปเบšเบš, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ "$" เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ Perl เป€เบšเบดเปˆเบ‡.

เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบชเบดเป‰เบ™เบชเบธเบ”เปเบกเปˆเบ™เบžเบดเป€เบชเบ”เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡ makepp (เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™).
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบงเบดเบ™เบฒเบ—เบตเป€เบžเบทเปˆเบญเป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ”เป‰เบงเบเบเบฒเบ™เบญเบญเบเบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ” a
brute force เบญเบญเบ. เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบปเป‰เบ™เบ•เปเบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบกเบต "END" เบ•เบฑเบ™เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต
เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เป„เบŸเบฅเปŒเบ—เบปเปˆเบงเป‚เบฅเบเบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ flushed. เปเบ•เปˆเบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰ lexical เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก
filehandles, เป€เบŠเบดเปˆเบ‡เบ›เบดเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบญเบญเบเป„เบ›เบ™เบญเบเบ‚เบญเบšเป€เบ‚เบ”.

เปƒเบ™เบฅเบฐเบซเบฑเบ” Perl เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบซเบผเบทเบœเปˆเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบ™เบปเบ”, เบกเบฑเบ™เปเบกเปˆเบ™
เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก. เบšเบฅเบฑเบญเบ "END" เบˆเบฐเบšเปเปˆเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™, เปเบ•เปˆเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เป„เบŸเบฅเปŒเบ—เบปเปˆเบงเป‚เบฅเบเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ flushed เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เป„เบ”เป‰
"เบเบฒเบ™เบ—เปเบฒเบฅเบฒเบ" เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบปเปˆเบงเป‚เบฅเบเบˆเบฐเบšเปเปˆเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™.

เป€เบžเบตเปˆเบกเบ•เบทเปˆเบก เปƒเบซเบกเปˆ เบšเบปเบ”เป€เบฅเบทเปˆเบญเบ‡ เบซเบ™เป‰เบฒเบ—เบตเปˆ
เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบซเบกเปˆเปƒเบซเป‰เบเบฑเบš repertoire เบ‚เบญเบ‡ makepp เป‚เบ”เบเบžเบฝเบ‡เปเบ•เปˆเบเปเบฒเบ™เบปเบ” Perl subroutine เบ‚เบญเบ‡
เบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เปเบ•เปˆเบกเบตเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบ‚เบญเบ‡ "f_". เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เบเปˆเบญเบ f_myfunc {
$argument เบ‚เบญเบ‡เบ‚เป‰เบญเบ = &arg; # เบ•เบฑเป‰เบ‡เบŠเบทเปˆเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡.
เบ‚เบญเบ‡เบ‚เป‰เบญเบ( undef, $mkfile, $mkfile_line ) = @_; # เบŠเบทเปˆเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡.

... เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ™เบตเป‰

เบเบฑเบšเบ„เบทเบ™ $return_value;
}

XYZ := $(myfunc my func arguments)

เบ–เป‰เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบšเปเปˆเบกเบตเบ‚เปเป‰เป‚เบ•เป‰เปเบเป‰เบ‡, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”. เบ–เป‰เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡
argument, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เปƒเบŠเป‰ accessor & arg เบ‡เปˆเบฒเบเป†เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบกเบฑเบ™. เบ–เป‰เบฒโ€‹เป€เบˆเบปเป‰เบฒ
เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบซเบผเบฒเบ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ "args" เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบชเบฒเบกเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบ„เบงเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ "f_" เปƒเบ”เป†.
function, เบ„เบทเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™, เบงเบฑเบ”เบ–เบธ makefile เปเบฅเบฐเบ•เบปเบงเบญเบฐเบ—เบดเบšเบฒเบเป€เบชเบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบš
เบ‚เปเป‰เบ„เบงเบฒเบก. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบš & arg เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เปเบฒเบญเบดเบ”.

เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ & arg เป€เบšเบดเปˆเบ‡เปเบเบ‡เบชเบดเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™: เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปเบกเปˆเบ™เปเบฅเป‰เบง
เบ‚เบฐเบซเบเบฒเบ (เป€เบŠเบฑเปˆเบ™: เบŠเบญเบเบซเบฒเบŠเบทเปˆเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™ "$(my$(function) arg)" arg เปเบกเปˆเบ™
เบœเปˆเบฒเบ™เป„เบ›เป€เบ›เบฑเบ™เบชเบฐเบ•เบฃเบดเบ‡ เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบเบฑเบšเบ„เบทเบ™เบกเบฒ. เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบง, เบ™เบตเป‰เปเบกเปˆเบ™
เบเปเบฅเบฐเบ™เบตเบ›เบปเบเบเบฐเบ•เบด, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบชเบฐเบ•เบฃเบดเบ‡. เป€เบ„เบทเปˆเบญเบ‡เบกเบท & arg เบ‚เบฐเบซเบเบฒเบเบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™,
เป€เบŠเบดเปˆเบ‡เบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบฑเบ”เบ–เบธ makefile เป€เบ›เบฑเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบต 2 เบ‚เบญเบ‡เบกเบฑเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบซเบผเบฒเบ, เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡, เบงเบฝเบเบ‡เบฒเบ™เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบ "args".
เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ™เบตเป‰เปƒเบŠเป‰ 3 เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš arg, เบšเบงเบเบเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบžเบตเปˆเบกเป€เบ•เบตเบก:

เบชเบนเบ‡เบชเบธเบ”: เบˆเบณเบ™เบงเบ™เบ‚เบญเบ‡ args (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ 2): เปƒเบซเป‰ ~0 (maxint) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเปˆเบชเบดเป‰เบ™เบชเบธเบ”
เบ•เปˆเบณเบชเบธเบ”: เบˆเบณเบ™เบงเบ™เบ‚เบญเบ‡ args (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ 0 เบ–เป‰เบฒเบชเบนเบ‡เบชเบธเบ”เปเบกเปˆเบ™ ~0, เบญเบฑเบ™เบญเบทเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบ„เปˆเบฒเบชเบนเบ‡เบชเบธเบ”)
only_comma: เบซเป‰เบฒเบกเบเบดเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบญเป‰เบญเบกเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”, เบ›เบปเบเบเบฐเบ•เบดเบชเบณเบฅเบฑเบšเบŠเบทเปˆเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒ

เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเป€เบ„เบ, เปเบ•เปˆเบขเปˆเบฒเบ‡เปœเป‰เบญเบเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”เบเปˆเบญเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปเบกเปˆเบ™เปƒเบŠเป‰เป€เบžเบทเปˆเบญเปเบเบ
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡. เบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™ buildin เบ‚เบญเบ‡ makepp:

my($prefix, $text) = args $_[0], $_[1], $_[2], 2, 2, 1; # เบ„เบณเบ™เบณเปœเป‰เบฒ
เบชเปเบฒเบฅเบฑเบš $cond เบ‚เบญเบ‡เบ‚เป‰เบญเบ ( args $_[0], undef, $_[2], ~0 ) ... # เปเบฅเบฐ, เบซเบผเบท
my @args= args $_[0], $_[1], $_[2], ~0, 1, 1; # เป‚เบ—
my( $filters, $words ) = args $_[0], $_[1], $_[2]; # เบ•เบปเบงเบเบญเบ‡

เบŸเบฑเบ‡เบŠเบฑเบ™เบ„เบงเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™ scalar string (เบšเปเปˆเปเบกเปˆเบ™ array) เป€เบŠเบดเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เบทเบเปƒเบชเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
เบ‚เปเป‰เบ„เบงเบฒเบกเบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบ™เบฑเป‰เบ™.

เบ–เป‰เบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบžเบปเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ•เบฒเบเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ Perl die เบ›เบปเบเบเบฐเบ•เบด.
เบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ”เบฑเบเป‚เบ”เบ makepp เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบŠเบทเปˆเป„เบŸเบฅเปŒเปเบฅเบฐเบชเบฒเบ
เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบ–เบทเบเบžเบดเบกเบญเบญเบ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰; เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบŸเบฅเปŒ, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™
เบ„เปเบฒเบชเบฑเปˆเบ‡ shell, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ
เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เบ‚เบฐเบซเบเบฒเบเบชเบญเบ‡เบ„เบฑเป‰เบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบปเปˆเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒ
เบŸเบฑเบ‡เบŠเบฑเบ™เบกเบตเบœเบปเบ™เบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เปเบฅเบฐเบกเบตเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ”เบซเบ™เบถเปˆเบ‡.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, cwd) เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเป€เบกเบตเบ™เบˆเบฐ
เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบฒเบ Makefile เบ—เบตเปˆ
เบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเบ›เบฐเป€เบกเบตเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เบ–เป‰เบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป€เบšเบดเปˆเบ‡โ€‹เบšเบฒเบ‡โ€‹เบชเบดเปˆเบ‡โ€‹เบšเบฒเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบ™เบตเป‰โ€‹:

เบเปˆเบญเบ f_foo {
...
chdir $makefile->{CWD};

... เป€เบ›เบฑเบ™เบ•เบปเป‰เบ™.
}

เบเบฒเบ™เบงเบฒเบ‡ เบซเบ™เป‰เบฒเบ—เบตเปˆ เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ a Perl เป‚เบกเบ”เบนเบ™
เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบญเบปเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบฅเบงเบก, เบ—เปˆเบฒเบ™เบˆเบฐเบกเบตเบซเบ™เบถเปˆเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบ•เปเปˆ Makeppfile เป€เบŠเบดเปˆเบ‡
เปƒเบŠเป‰เบกเบฑเบ™. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เป‚เบกเบ”เบนเบ™ Perl เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบกเบต "เบœเบนเป‰เบชเบปเปˆเบ‡เบญเบญเบ"
เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™. เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบซเบผเบ”เป„เบงเบ‚เบถเป‰เบ™ เปเบฅเบฐเบ›เบฐเบซเบเบฑเบ”เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ:

perl {เปƒเบŠเป‰ mymodule }
perl {
เปƒเบŠเป‰::เป‚เบกเบ”เบนเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ; # เปƒเบชเปˆ : เปƒเบ™เปเบ–เบงเปƒเบซเบกเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐเบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš
}

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ•เปˆเบฒเบ‡เป†เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ Makefile (เป€เบŠเบฑเปˆเบ™ "f_"
functions, "arg" เบซเบผเบท "args"), เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆเป€เบชเบฑเป‰เบ™เบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบกเบ”เบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

เปƒเบŠเป‰ Mpp::Subs;

เบ‚เปเป‰เป€เบชเบเปเบกเปˆเบ™เบงเปˆเบฒเป‚เบกเบ”เบนเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เบŠเบธเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบเปˆเบงเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เป‚เบ”เบเบเบปเบ‡
เบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™ makefile. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบœเปˆเบฒเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™, เบซเบผเบทเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡
เบŠเบทเปˆเบ—เบตเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆ "เบœเบนเป‰เป‚เบ—" เบ‚เบญเบ‡ Perl.

เบเบฒเบ™เป‚เบ— เบžเบฒเบเบ™เบญเบ Perl scripts
เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป‚เบ—เบซเบฒเบชเบฐเบ„เบดเบš Perl เบžเบฒเบเบ™เบญเบเบœเปˆเบฒเบ™ "เบฅเบฐเบšเบปเบš", เบซเบผเบทเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบš, makepp เบˆเบฐเปเบเบ a
เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบซเบกเปˆ (เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเบธเบ”เบ—เป‰เบฒเบ) เปเบฅเบฐเบ›เบดเบ”เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒ perl เบเบตเปˆเบซเปเป‰เปƒเบซเบกเปˆ.
เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบเบฑเบšเบชเบดเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบปเบเป€เบงเบฑเป‰เบ™เบงเปˆเบฒเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบงเปˆเบฒ:

&เบ„เปเบฒเบชเบฑเปˆเบ‡ เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡...
เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบš. เบกเบฑเบ™เบˆเบฐเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ เบ„เปเบฒเบชเบฑเปˆเบ‡ เบ”เป‰เบงเบเบ„เบณเบ™เบณเปœเป‰เบฒ "c_", เปเบฅเบฐ
เบœเปˆเบฒเบ™เบกเบฑเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ (เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡เปเบšเบš makepp - เบšเปเปˆเบ„เบทเบเบฑเบ™เบเบฑเบš
Shell) เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡. เบ–เป‰เบฒเบšเปเปˆเบžเบปเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ™เบตเป‰เบˆเบฐเบœเปˆเบฒเบ™เบชเบฒเบเบ—เบฑเบ‡เปเบปเบ”เป„เบ›เบซเบฒ
"เปเบฅเปˆเบ™".

sub c_mycmd { เบ‚เบญเบ‡เบ‚เป‰เบญเบ @args = @_; ... }

$(phony callcmd):
&mycmd 'arg with space' arg2 "arg3" # เป‚เบ—เบซเบฒ c_mycmd

%.เบญเบญเบ: %.in
&myscript -o $(output) $(input) # เป‚เบ—เบซเบฒ myscript เบžเบฒเบเบ™เบญเบ

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบžเบฒเบเปƒเบ™เบเบญเบšเบ‚เบญเบ‡ buildins, เปƒเบซเป‰เบ—เปˆเบฒเบ™เปƒเบŠเป‰
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบต, เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ I/O เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบซเป‰.

เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ•เบฑเบ™ "Mpp::Cmds::frame" เปเบกเปˆเบ™เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ”เบฝเบงเบ‚เบญเบ‡
buildins (เบชเบนเบ‡เบชเบธเบ”เปเบกเปˆเบ™ "qw(fi I โ€‹โ€‹o O rs)"). เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡
overriding เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบเบฑเบ‡เปƒเบซเป‰เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ”เบฝเบงเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เปเบ•เปˆเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ–เบทเบเบฅเบฐเบšเบธเป€เบ›เบฑเบ™ "[qw(n name), \$ref, เบญเบฒเบ, เบเปˆเบญเบ]". เบชเบญเบ‡เบญเบฑเบ™ เบ—เบณ เบญเบดเบ”
เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบกเปˆเบ™เบŠเบทเปˆเบชเบฑเป‰เบ™เปเบฅเบฐเบเบฒเบง, เบ•เบดเบ”เบ•เบฒเบกเบกเบฒเบ”เป‰เบงเบเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ•เบปเบงเปเบ›เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป‚เบ”เบ
boolean เบชเปเบฒเบฅเบฑเบšเบงเปˆเบฒเบˆเบฐเป€เบญเบปเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡. เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ arg, เบ•เบปเบงเปเบ›เปเบกเปˆเบ™
เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เปƒเบ™เปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เปƒเบซเป‰, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบกเบฑเบ™.

sub c_my_ocmd { # เบเปเบฅเบฐเบ™เบตเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ›เบปเบเบเบฐเบ•เบด
เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ @ARGV = @_;
Mpp::Cmds::frame {

... เบžเบดเบกเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ™เบตเป‰เบ”เป‰เบงเบ @ARGV, เบ—เบตเปˆเบกเบตเบ•เบปเบงเป€เบฅเบทเบญเบเบญเบญเบเปเบฅเป‰เบงเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”

} 'f', qw(o O);
}

sub c_my_icmd { # เบเปเบฅเบฐเบ™เบตเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบ›เบปเบเบเบฐเบ•เบดเบกเบต 2 เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ @ARGV = @_;
เบ‚เบญเบ‡เบ‚เป‰เบญเบ($เบชเบฑเป‰เบ™, $เบเบฒเบง);
Mpp::Cmds::frame {

... เป€เบฎเบฑเบ”เบญเบฑเบ™เบ™เบตเป‰เบเบฑเบš <>

} qw(i I rs), # s เบฅเบฐเบšเบธเบžเบฝเบ‡เปเบ•เปˆ --separator, เบšเปเปˆเปเบกเปˆเบ™ -s
[qw(s short), \$short], # เบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบ arg -> $short == 1
[qw(l long), \$long, 1, sub { warn "got arg $long"}];
}

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆ upcases เบžเบฝเบ‡เปเบ•เปˆเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ input
เบšเบฑเบ™เบ—เบถเบ (เป€เบ—เบปเปˆเบฒเบเบฑเบš "&sed '$$_ = "\u\L$$_"'"):

เบเปˆเบญเบ c_uc {
เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ @ARGV = @_;
Mpp::Cmds::frame {
เบžเบดเบก "\u\L$_" เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ <>;
} 'f', qw(i I o O rs);
}

เบžเบฒเบเปƒเบ™เบ—เปˆเบญเบ™เป„เบกเป‰เบ—เบตเปˆเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบเบเบญเบš, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบกเบตเบ—เปˆเบญเบ™เป„เบกเป‰เบ—เบตเปˆเบกเบตเบฎเบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™
เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เป€เบŠเบฑเปˆเบ™โ€‹: เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบญเบทเปˆเบ™เป†โ€‹.

Mpp::Cmds::perform {... } 'เบ‚เปเป‰เบ„เบงเบฒเบก';

เบ™เบตเป‰เบˆเบฐเบญเบญเบเบ‚เปเป‰เบ„เบงเบฒเบกเบ”เป‰เบงเบ "--verbose" (เบ—เบตเปˆเบ—เบธเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบเบญเบกเบฎเบฑเบš) iff the
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”. เปเบ•เปˆเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ•เบฑเบ™เบ›เบฐเป€เบกเบตเบ™เบงเปˆเบฒเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบกเบฑเบ™เบ•เบฒเบเบ”เป‰เบงเบ
เบ‚เปเป‰เบ„เบงเบฒเบกเบ›เบฐเบ•เบดเป€เบชเบ”.

เปเบฅเปˆเบ™ script เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡...
เบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ Perl เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™ Perl เปƒเบ”เป†เบžเบฒเบเปƒเบ™ makefile เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
เบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบฎเบนเบšเปเบšเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš, เปเบ•เปˆเบกเบฑเบ™เปเบฅเปˆเบ™เบชเบฐเบ„เบดเบš Perl เบžเบฒเบเปƒเบ™
เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹. เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ makepp, เบซเบ™เป‰เบฒเบ—เบตเปˆ perl เบซเบผเบทเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡
เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบฅเปˆเบ™ makepp. เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเป€เบ›เบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเปˆเบญเบเบ›เบฐเบ•เบดเบšเบฑเบ”
เบกเบฑเบ™. เบชเบฐเบ„เบฃเบดเบšเป„เบ”เป‰เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐเบซเบผเบฒเบเป€เบ—เบทเปˆเบญเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เปƒเบชเปˆเบ•เบปเบงเบˆเบดเบ‡เป„เบ”เป‰
เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ lib, เบ”เบฑเปˆเบ‡เบ—เบตเปˆ pod2html เป€เบฎเบฑเบ”. lib เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบกเบตโ€‹เบขเบนเปˆโ€‹เปเบฅเป‰เบงโ€‹:

perl { เปƒเบŠเป‰ mylib } # เบ–เบทเบเปเบเบเบญเบญเบเป€เบ›เบฑเบ™เบเบปเบ”เป€เบเบ™เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบ›เบ„เบทเบ™

%.เบญเบญเบ: %.in
makeperl { เปเบฅเปˆเบ™ qw'myscript -o $(output) $(input)' }

เบ–เป‰เบฒเบชเบฐเบ„เบดเบšเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบญเบญเบ", เบ›เบดเบ”เบ•เบปเบงเบญเบฐเบ—เบดเบšเบฒเบเป„เบŸเบฅเปŒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบซเบผเบทเบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบšเบปเบš
เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบกเบฑเบ™ (เป€เบ›เบตเบ”เป„เบŸเบฅเปŒ, เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ ...), เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบเบฑเบš "เปเบฅเปˆเบ™". เบ–เป‰เบฒ
เบ—เปˆเบฒเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เปเบฅเปˆเบ™" เบžเบฒเบเปƒเบ™เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™เบซเบผเบทเบซเบ™เป‰เบฒเบ—เบตเปˆ perl, makepp เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบปเบšเบเบงเบ™เบซเบผเบท
เบเบฒเบ™เป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡ makepp.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบšเบฑเบ™เบซเบฒเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ script เบžเบฒเบเบ™เบญเบ, เป€เบŠเบฑเปˆเบ™: เบˆเบฒเบ
เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบ—เบ™. เบžเบฒเบเปƒเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เปเบกเปˆเบ™เบกเบตเบšเบฑเบ™เบซเบฒเบซเบ™เป‰เบญเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบšเปเปˆเปเบกเปˆเบ™
เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบš, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเปˆเบญเบเบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบฐเบญเบญเบเป„เบ›เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก,
เบเบปเบเป€เบงเบฑเป‰เบ™เปƒเบ™ Windows.

เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™ เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™ เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡ เบฅเบฒเบเป€เบŠเบฑเบ™ เบงเบดเบ—เบตเบเบฒเบ™
เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ makepp เบ„เบดเบ”เป„เบฅเปˆเบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ–เบฒเบ™เบชเบญเบ‡เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™. เบ›เบปเบเบเบฐเบ•เบด, เบ–เป‰เบฒเบ—เปˆเบฒเบ™
เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เบ—เบตเปˆโ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹, เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡ relink เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบกเบฑเบ™โ€‹เป€เบžเบฒเบฐโ€‹เบงเปˆเบฒโ€‹
เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™. (เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบงเปˆเบฒ relinking executable
เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ™เบตเป‰เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.) เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ makepp
เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบ„เบทเบเบฒเบ™เบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡.

เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบซเบผเบฒเบเบงเบดเบ—เบต. เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡
เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™ (เปƒเบซเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ "shared_object"). เป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบŠเป‰เบงเบดเบ—เบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ™เบตเป‰
เบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ binaries, เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

myprogram : *.o lib1/lib1.so lib2/lib2.so
: เบฅเบฒเบเป€เบŠเบฑเบ™ shared_object
$(CC) $(inputs) -o $(output)

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™.

เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบฑเบ‡เปเบปเบ”เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ•เป‰เบญเบ‡เบกเบตเบšเบฒเบ‡เบญเบฑเบ™เบžเบดเป€เบชเบ”
เบฅเบฒเบเบเบฒเบ™ (เป€เบšเบดเปˆเบ‡ Mpp/Signature.pm เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบเบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”). เบŠเบทเปˆเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™
เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบ”เป‰เบงเบ "Mpp::Signature::", เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเบ–เบทเบเป€เบญเบตเป‰เบ™
"Mpp::เบฅเบฒเบเป€เบŠเบฑเบ™::shared_object". เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ shared_object.pm เปเบฅเบฐเปƒเบชเปˆ
เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Mpp::เบฅเบฒเบเป€เบŠเบฑเบ™ directory somewhere เปƒเบ™ Perl เบ›เบฐเบเบญเบšเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡; เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹
เบญเบฒเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™ Mpp/เบฅเบฒเบเป€เบŠเบฑเบ™ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ makepp (เป€เบŠเบฑเปˆเบ™:
/usr/local/share/makepp/Mpp/เบฅเบฒเบเป€เบŠเบฑเบ™ เบซเบผเบทเบšเปˆเบญเบ™เปƒเบ”เบเปเบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบกเบฑเบ™).

เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบšเบดเปˆเบ‡เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”
เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆ Mpp/เบฅเบฒเบเป€เบŠเบฑเบ™.pm เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ„เบทเบเบฑเบ™ Mpp/Signature/exact_match.pm เปƒเบ™ makepp เป„เบ”เป‰
เบเบฒเบ™โ€‹เปเบœเปˆโ€‹เบเบฐโ€‹เบˆเบฒเบโ€‹. เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบซเบผเบฒเบเป€เบ›เบฑเบ™
เบเบปเบ™เป„เบเบเบฒเบ™เบฅเบปเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง; เบ–เป‰เบฒเป„เบŸเบฅเปŒเป€เบ›เบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบปเบ‡เบ—เบตเปˆ
เบฅเบฒเบเป€เบŠเบฑเบ™, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป„เบŸเบฅเปŒเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบญเบทเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡ makepp
เบเบปเบ™โ€‹เป„เบโ€‹เบฅเบฒเบโ€‹เป€เบŠเบฑเบ™โ€‹. เบงเบดเบ—เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบ„เบทเบเบฒเบ™เบชเบทเบšเบ—เบญเบ”เบˆเบฒเบ
"Mpp::Signature::c_compilation_md5", เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบกเบฑเบเบˆเบฐเบ–เบทเบเป€เบฅเบทเบญเบ.
เป€เบกเบทเปˆเบญ makepp เบฎเบฑเบšเบฎเบนเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป„เบŸเบฅเปŒ Mpp/Signature/shared_object.pm เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เปƒเบŠเป‰เบขเปˆเบฒเบ‡เป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”;
package Mpp::เบฅเบฒเบเป€เบŠเบฑเบ™::shared_object;
เปƒเบŠเป‰ Mpp::เบฅเบฒเบเป€เบŠเบฑเบ™::c_compilation_md5;
@ISA เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ = qw(Mpp::เบฅเบฒเบเป€เบŠเบฑเบ™::c_compilation_md5); # เบšเบปเปˆเบ‡เบšเบญเบเป€เบ–เบดเบ‡เบเบฒเบ™เบชเบทเบšเบ—เบญเบ”.
$shared_object เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ = เบญเบงเบเบžเบญเบ™ \@ISA; # เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡ magic เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰ makepp เบŠเบญเบเบซเบฒ
# เป‚เบ›เบฃเป€เบˆเบฑเบเบเปˆเบญเบเบชเบณเบฅเบฑเบšเบงเบดเบ—เบตเบ™เบตเป‰. เบ—เบฑเบ‡เปเบปเบ”
# เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡เบญเบฑเบ™เบ™เบตเป‰.
# เบ„เบธเบ™เบ„เปˆเบฒเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰, เบžเบฝเบ‡เปเบ•เปˆเบงเบฑเบ”เบ–เบธเปƒเบ”เป†.
# เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡
# เป€เบ›เบปเป‰เบฒเปเบฒเบ เบซเบผเบทเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง:
เบฅเบฒเบเป€เบŠเบฑเบ™เบเปˆเบญเบ {
เบ‚เบญเบ‡เบ‚เป‰เบญเบ ($self, # เบญเบฑเบ™เบ™เบตเป‰เบˆเบฐเบ„เบทเบเบฑเบ™เบเบฑเบš $shared_object.
$finfo) = @_; # เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบดเป€เบชเบ”เบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡
# makepp เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเป„เบŸเบฅเปŒเบ™เบตเป‰. เป€เบšเบดเปˆเบ‡
# Mpp/File.pm เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”.

if ($finfo->{NAME} =~ /\.s[oa]$/) { # เบŠเบทเปˆเป„เบŸเบฅเปŒเบฅเบปเบ‡เบ—เป‰เบฒเบเบ”เป‰เบงเบ .so เบซเบผเบท .sa?
เบเบฑเบšเบ„เบทเบ™ $finfo->file_exists ? 'เบกเบตเบขเบนเปˆ': '';
# เบชเบฐเป€เบซเบกเบตเบชเบปเปˆเบ‡เบ„เบทเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบฝเบงเบเบฑเบ™เบ–เป‰เบฒเป„เบŸเบฅเปŒ
# เบกเบตเบขเบนเปˆ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบฅเบฒเบเป€เบŠเบฑเบ™เปเบกเปˆเบ™
# string "เบกเบตเบขเบนเปˆ".
}

Mpp::เบฅเบฒเบเป€เบŠเบฑเบ™::c_compilation_md5::เบฅเบฒเบเป€เบŠเบฑเบ™;
# เบ–เป‰เบฒเป„เบŸเบฅเปŒเบšเปเปˆเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบ .so เบซเบผเบท .sa,
# เบกเบญเบšเปเบฒเบเปƒเบซเป‰เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡ makepp.
}

เป„เบŸเบฅเปŒเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ makepp, เบกเบตเบšเบฒเบ‡เบชเปˆเบงเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบ„เปเบฒเป€เบซเบฑเบ™

เบšเบฑเบ‡เป€เบญเบตเบ™, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™? เบ”เบต, เบกเบตเป€เบงเบฅเบฒเบ›เปˆเบฝเบ™ a
เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป‚เบ›เบผเปเบเบผเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ„เบทเบ™เปƒเปเปˆ. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบ„เบตเบโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹
เบชเบฑเบ™โ€‹เบเบฒโ€‹เบฅเบฑเบโ€‹เบ—เบตเปˆโ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹, เบซเบผเบทโ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹เบฅเบฑเบโ€‹เบ—เบตเปˆโ€‹เบกเบฑเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เบญเบทเปˆเบ™เป†โ€‹
เบชเปเบฒเบฅเบฑเบš, relink เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™เป„เบ”เป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบเปˆเบญเบเบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ
เบชเบฐเบซเบ™เบญเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบ›เปˆเบฝเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบกเบฑเบ™เป‚เบ—เบซเบฒเบžเบฒเบเบ™เบญเบ
subroutine "xyz()". เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ "-E" เบซเบผเบท "--export-dynamic" เบเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
(เบชเปเบฒเบฅเบฑเบš GNU binutils; เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบญเบทเปˆเบ™เป†เบกเบตเบŠเบทเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™), เบชเบฑเบ™เบเบฒเบฅเบฑเบ "xyz()" เบญเบฒเบ”เบˆเบฐเบšเปเปˆ
เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบงเบฅเบฒเปเบฅเปˆเบ™เป„เบ”เป‰เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบกเบตเบขเบนเปˆเปƒเบ™เป‚เบ›เบผเปเบเบผเบกเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ.

เบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒ, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบเปเบฒเบ™เบปเบ” "xyz()" เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบญเบทเปˆเบ™ (เป‚เบ—เบซเบฒเบกเบฑเบ™ เบฅเบตเบšเบŠเบต), เบ”เบฑเปˆเบ‡โ€‹เบ™เบตเป‰โ€‹:

my_program: main.o lib1/lib1.so xyz/libxyz.a

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ "libxyz" เป€เบ›เบฑเบ™ .a เป„เบŸเบฅเปŒเปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™ a เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป„เบŸเบฅเปŒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ "xyz()" เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบ”เบถเบ‡เป€เบ‚เบปเป‰เบฒ
เบ–เบทเบเบ•เป‰เบญเบ‡เบˆเบฒเบ libxyz.a เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบ—เปˆเบฒเบ™ relink binary เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

Mpp::เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบเบฑเบ‡เบ„เบงเบšเบ„เบธเบกเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒ a
เป„เบŸเบฅเปŒเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบ•เปˆ algorithm เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบชเบฐเบ•เบฃเบดเบ‡. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เป„เบ”เป‰
เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™ "target_newer" เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ makepp เบžเบฝเบ‡เปเบ•เปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰
เป€เบ›เบปเป‰เบฒเปเบฒเบเปเบกเปˆเบ™เปƒเปเปˆเบเบงเปˆเบฒเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™ "exact_match" (เปเบฅเบฐ
เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบกเบฑเบ™, เป€เบŠเบฑเปˆเบ™ "md5" เปเบฅเบฐ "c_compilation_md5") เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰
เป„เบŸเบฅเปŒเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบซเบผเป‰เบฒเบชเบธเบ”.

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบงเบดเบ—เบตเบฅเบฒเบเป€เบŠเบฑเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”, เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰
เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบ–เป‰เบฒเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ›เบžเบฝเบ‡เบžเป, เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™
เบฅเบงเบกโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™ makeppโ€‹:

ยท เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบชเบณเบฅเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™ checksum เบ‚เบญเบ‡เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบเปเบฅเป‰เบง
เบชเบฑเบ™เบเบฒเบฅเบฑเบ, เปเบฅเบฐเบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบญเบทเปˆเบ™เป†. เบ™เบตเป‰โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เป„เบ”เป‰โ€‹
เบšเบฑเบ™เบซเบฒเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เปเบฅเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบžเบฒเบเปƒเบ•เป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.
เป„เบ”เป‰เบกเบตเบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบ—เบปเบ”เบฅเบญเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ makepp (เป€เบšเบดเปˆเบ‡
Mpp/Signature/shared_object.pm), เปเบ•เปˆเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš GNU binutils เปเบฅเบฐ ELF เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

ยท เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฒเบ™เบ›เบฐเบ—เบฑเบšเบ•เบฒเบงเบฑเบ™เบ—เบตเบ—เบตเปˆเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒ
เบชเป‰เบฒเบ‡เบ .c เป„เบŸเบฅเปŒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เปƒเบชเปˆเบชเบฒเบ
เปƒเบ™โ€‹เปเบšเบšโ€‹เบ™เบตเป‰โ€‹:

static char * date_stamp = "เบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบงเบฑเบ™เบ—เบต 01 เป€เบกเบชเบฒ 2004 เป‚เบ”เบเบšเปเปˆเบกเบตเปƒเบœ";

เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบชเบฐเปเบ•เบกเบงเบฑเบ™เบ—เบตเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบชเบฐเปเบ•เบกเบงเบฑเบ™เบ—เบตเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ”เบฝเบงเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, makepp เบˆเบฐเบšเปเปˆเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ.

ยท เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เปƒเบ™เปเบšเบšเบ›เบปเบเบเบฐเบ•เบด, เปเบ•เปˆเบšเปเปˆเบชเบปเบ™เปƒเบˆ
เบเบฒเบ™เป€เบญเบทเปˆเบญเบเบญเบตเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบˆเบฐเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบš
เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡; เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบซเบ™เบถเปˆเบ‡,
makepp เบˆเบฐเบเบทเบ™เบเบฑเบ™เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป„เบŸเบฅเปŒเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ - เป€เบญเบเบฐเบฅเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ›เปˆเบฝเบ™
เบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

ยท เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆเบ„เปเบฒเป€เบซเบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเบขเบฒเบ‡, เป€เบ›เบฑเบ™
"c_compilation_md5" เบงเบดเบ—เบตเบเบฒเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆเบ„เปเบฒเป€เบซเบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒ C.

ยท เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เป€เบญเบเบฐเบชเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆ checksums เบžเบฝเบ‡เปเบ•เปˆ
เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ—เบตเปˆเบœเบนเป‰เบชเบฐเบเบฑเบ”เป€เบญเบเบฐเบชเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบทเปˆเบ™เป†เบ•เปเปˆเบเบฑเบšเปเบซเบผเปˆเบ‡
เบเบทเปˆเบ™.

เบเบฑเบ‡เบšเปเปˆเปเบฅเป‰เบง
เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เบเบฑเบ‡เบšเปเปˆเปเบฅเป‰เบงเป€เบ—เบทเปˆเบญ. เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบเบงเบกเป€เบญเบปเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฝเบ™เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเปเบเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš
เบฅเบงเบกเบกเบตเป„เบŸเบฅเปŒ เปเบฅเบฐเบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™.

เปƒเบŠเป‰ makepp_extending เบญเบญเบ™เป„เบฅเบ™เปŒเป‚เบ”เบเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™ onworks.net


เป€เบŠเบตเบšเป€เบงเบต เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบŸเบฃเบต

เบ”เบฒเบงเป‚เบซเบผเบ”เปเบญเบฑเบš Windows เปเบฅเบฐ Linux

  • 1
    เบงเบปเบ‡เป€เบฅเบฑเบš
    เบงเบปเบ‡เป€เบฅเบฑเบš
    เบงเบปเบ‡เป€เบฅเบฑเบšเป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เป เปเบฅเบฐเบšเปเปˆเป€เบชเบเบ„เปˆเบฒ
    เบ•เบปเบงเปเบเป‰เป„เบ‚เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบš
    เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ‚เบฝเบ™เปƒเบ™ HTML, CSS, เปเบฅเบฐ
    JavaScript เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเบฒเบเบ•เบฒเบ—เบตเปˆเบชเบธเบกเปƒเบชเปˆเปเบฅเบฐ
    เบเบฝเบก...
    เบ”เบฒเบงเป‚เบซเบฅเบ”เบงเบปเบ‡เป€เบฅเบฑเบš
  • 2
    Pascal Compiler เบŸเบฃเบต
    Pascal Compiler เบŸเบฃเบต
    A 32/64/16-bit Pascal compiler เบชเปเบฒเบฅเบฑเบš
    Win32/64/CE, Linux, Mac OS X/iOS,
    Android, FreeBSD, OS/2, Game Boy
    Advance, Nintendo NDS เปเบฅเบฐ DOS;
    เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰ wi...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Pascal Compiler เบŸเบฃเบต
  • 3
    เบ‚เปเป‰เบกเบนเบ™เบ”เบดเบˆเบดเบ•เบญเบ™ Canon EOS
    เบ‚เปเป‰เบกเบนเบ™เบ”เบดเบˆเบดเบ•เบญเบ™ Canon EOS
    Canon เบšเปเปˆเบกเบตเบเบฒเบ™เบ™เบฑเบš shutter
    เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ‚เปเป‰เบกเบนเบ™ EXIF โ€‹โ€‹เบ‚เบญเบ‡ an
    เป„เบŸเบฅเปŒเบฎเบนเบšเบžเบฒเบš, เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบš Nikon เปเบฅเบฐ
    Pentax. เบšเปเปˆเบกเบต Canon เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™
    เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ ...
    เบ”เบฒเบงเป‚เบซเบฅเบ”เบ‚เปเป‰เบกเบนเบ™ Canon EOS DIGITAL
  • 4
    rEFInd
    rEFInd
    rEFInd เปเบกเปˆเบ™เบ—เบฒเบ‡เปเบเบเบ‚เบญเบ‡ rEFIt boot
    เบœเบนเป‰โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš rEFIt, rEFInd เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰
    เบเบงเบ”โ€‹เบซเบฒโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ” boot EFI เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹
    loaders เปเบฅเบฐเบกเบฑเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต GUI เบ‡เบฒเบก
    เป€เบกเบ™เบนเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบšเบนเบ”...
    เบ”เบฒเบงเป‚เบซเบฅเบ” rEFInd
  • 5
    ExpressLuke GSI
    ExpressLuke GSI
    เบซเบ™เป‰เบฒเบ”เบฒเบงเป‚เบซเบฅเบ” SourceForge เบ™เบตเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญ
    เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบ”เบฒเบงเป‚เบซเบฅเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™
    GSIs, เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเบ‚เบญเบ‡ phhusson
    เป€เบฎเบฑเบ”เบงเบฝเบ. เบ‚เป‰เบญเบเบชเป‰เบฒเบ‡เบ—เบฑเบ‡ Android Pie เปเบฅเบฐ
    Android 1...
    เบ”เบฒเบงเป‚เบซเบฅเบ” ExpressLuke GSI
  • 6
    เบ™เบฑเบเบชเบฐเปเบ”เบ‡เบ”เบปเบ™เบ•เบต
    เบ™เบฑเบเบชเบฐเปเบ”เบ‡เบ”เบปเบ™เบ•เบต
    Music Caster เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบซเบผเบดเป‰เบ™เบ”เบปเบ™เบ•เบตเบ–เบฒเบ”
    เบ—เบตเปˆโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบ‚เบฑเบšโ€‹เบฎเป‰เบญเบ‡โ€‹เป€เบžเบ‡โ€‹เปƒเบ™โ€‹เบ—เป‰เบญเบ‡โ€‹เบ–เบดเปˆเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบ›เบฑเบ™โ€‹
    เบญเบธเบ›เบฐเบเบญเบ™ Google Cast. เปƒเบ™โ€‹เบเบฒเบ™โ€‹เปเบฅเปˆเบ™โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹,
    เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบ„เบฅเบดเบโ€‹เปƒเบชเปˆโ€‹เบฅเบนเบโ€‹เบชเบญเบ™โ€‹เปƒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹
    Tas...
    เบ”เบฒเบงโ€‹เป‚เบซเบผเบ”โ€‹เป€เบžเบ‡ Casterโ€‹
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก ยป

Linux เบ„เบณ เบชเบฑเปˆเบ‡

Ad