PERLFORM 7

中文man手册

PERLFORM

NAME
DESCRIPTION æè¿°
NOTES
WARNINGS è¦å
䏿çç»´æ¤äºº
ä¸æçææ°æ´æ°
䏿æå页翻è¯è®¡å

NAME

perlform - Perl æ ¼å¼

DESCRIPTION æè¿°

Perlçä¸äºå鍿ºå¶ãå¯ä»¥å¸®å©æä»¬äº§çä¸ä»½ç®åçæ¼å¼åå¾è¡¨ãç»è¿perlçå¤çï¼ä½åå°çæ¼å¼å¯ä»¥æ¥è¿äºä½æè§çå¤è²ãå®å¯ä»¥è®°å½å¦ä½ç°å¨æ- £å¤å¨åªä¸ªé¡µé¢ï¼æ¯ä¸ªé¡µé¢çè¡æ°ä¸ä½æ¶åå°åºé¡µé¢çæ é¢ãå³é®åï¼format() æ ¼å¼å½æ°ä¸write()æ§è¡å½æ°æ¯ç´æ¥å¼èªFORTRANè¯æ³ã详æå¯åé perlfuncã幸è¿çæ¯åå°çæ ¼å¼å¯è¯»æ§åæææé«ãå ä¹ç±»ä¼¼BASIC çPRINT USINGãå¯ä»¥æå®æ³è±¡ä¸ºç®åç nroff(1).

æå¦åç¨åºä¸å䏿 ·ï¼æ ¼å¼åªæ¯è¯- å¥ç声æï¼è䏿¯æ§è¡è°ç¨ãæå®å¯ä»¥æ¾å¨ç¨å¼çä»»ä½ä½ç½®ï¼ä¸è¬æå¥½æ¯æå®ä»¬éä¸- å¨ä¸åï¼ãä¸perlçå¶å®åéååç±»åä¸åï¼ æ¼å¼å½åæå«äºä¸è¬çç¬èªçå®ä¹ãä¹å°±æ¯è¯´ï¼ä½æä¸ä¸ªå为Fooç彿°ï¼å®ä¸å¦ä¸ä¸ªæ¼å¼å称为Fooçä¸è¥¿æ¯å®å¨ä¸åã使¯ç¼ºççæ¼å¼åç§°ä¸æå³è¿çæä»¶å¥æå¯ç¨ç¸åçåå- ãæä»¥ç¼ºççè¾åºæ¼å¼åç§°STDOUTï¼å®çæä»¶å¥æåç§°å°±æ¯STDOUTãèå¯¹ç¼ºçæ¼å¼åç§°TEMPï¼å®çæä»¶å¥æåç§°ä¹å¯ä»¥æ¯TEMPãè½ç¶åç§°ä¸æ·ä½ä¸¤èå¹¶ä¸ç¸åã

è¾åºæ ¼å¼çè¯æ³å¦ä¸ï¼

format NAME =
FORMLIST
.

å¦çç¥æ¼å¼åç§°ï¼æ¼å¼åç§°å°ä»¥æåè¾åºSTDOUTå½åãèæ¼å¼é¡¹ç®å°åæ¬äºå¥½å个è¿ç»- 横è¡ãæ¯ä¸è¡å±äºä¸ååç§åæä¹ä¸ï¼

1.

注éï¼comment), 以符å·â#âç½®äºæ¯è¡çå¼å¤´ã

2.

徿¡è¡(picture line)ï¼è§å®äºåä¸è¡çæ ¼å¼åå¤è§ã

3.

åæ°è¡, æä¾ä¸äºæ°å¼ä»¥å¯¹åºåé¢ç徿¡è¡ã

徿¡è¡çè¾åºææå°±ä¸æä»¬çå°ç䏿·ï¼é¤äºæäºå¼åæä½ä¼ç»ç¸å¯¹åºæ°å¼å代å¤ï¼æ¯ä¸ªè¾å¥æä½é½ä»¥ä¸ä¸ª@æ ˆ æ§å¶ç¬¦å¼å¤´ãè¿äºåè¡åçæ§å¶ç¬¦ä¸è½åä»»ä½çªæ¹å代(å¿ä¸æ°ç»åé@æ··æ·)ã@æä½æ¯å±äºæ- £å¸¸å½¢æçæ ä½ï¼èˆæ ä½åç¨æ¥è¡¨ç¤ºå¯ä»¥è¾å¥å¤è¡æåãè³äºè¯¥æ ä½åç±< > æ ⎪ 符å·è·éå¶åæå®åå·¦ãå³ãæå±ä¸- 对é½ãå¹¶åæ¶è·æ®è¯¥ç¬¦å·çæ°ç®ï¼è¾å¥æå®èµæçé¿åº¦ãå¦åéå容è¶è¿éå®é¿åº¦ãæ¼å¼åå°æ¶ä¼èªå¨åé¤å¤é¦çé¨ä»½ã

å¦ä¸ç§æå®åå³å¯¹é½æ¹å¼ï¼æ¯ä½¿ç¨#ç¬¦å·æ¥æå®ä¸ä¸ªæ°åæ ä½ã妿- ¤å¯æ¹ä¾¿å°æ°ç¹å®ä½ã妿è¾å¥å¼éè¿åå«ä¸ä¸ªæ¢è¡åå(0ï¼åä»åå°åºè¯¥æ¢è¡å- ååçèµæãæå徿¡è¡åºç°ç@*è¿ä¸ªç¹å«ç¬¦å·æè®°ï¼å¯ä»¥ç¨æ¥åå°å¤è¡å¹¶ä¸ä¸è¢«æªæçæ°å¼ã

æ¥ä¸æ¥çä¸è¡ãæ¯è·æ®å¾æ¡è¡éçå¼åæä½è¾å¥ç¸åºçæ°å¼ã妿æ¯å©ç¨è¿ç®å¼æä¾æ°å¼çè¯ãå¿é¡»ä»¥éå·åéãå为ææç表示æ³é½ä¼è¢«å½æä¸ä¸ªä¸²è¿å容åè¡å¤çãæä»¥ä¸ä¸ªåä¸ç串å表示æ³ä¹å¯äº§çå¤ä¸ªä¸²åèµæãå¦æè¡¨ç¤ºæ³æ¯å©ç¨æ¬å·å´èµ·ï¼å¯è½ä¼å±å¼å¥½åè¡ãè¥æ³å¦æ¯å®æï¼ç¬¬ä¸è¡ç第ä¸ä¸ªåå- å¿é¡»æ¯ä»¥å·¦æ¬å·å¼å§ã妿è¿ç®å¼åæå°æ°ç¹çæ°å- ç±»åé¡»è¦å¤çã忶徿¡è¡çç¸å³ç¬¦å·ä¹æåºå°æ°ä½é¡»åå°åºæ¥(é¤äºå¾æ¡è¡åçåå«å°æ°ç¹"."çæ°å- æ§å¶ç¬¦å·#å¤)ãå°æ°ç¹åå°åºçå¤è², 以å½å°çè¿è¡çæ¬å³å®(LC_NUMERIC locale)ãä¹å°±æ¯è¯´ãå¨å¾·æå°åºä½¿ç¨å°æ°æ¼ç¤ºè¾åºæ¶ãå°æ°ç¹çæ¾ç¤ºå°æ¯","èé"."ãç¸å³èµæè¯·åè perllocale ä¸ "è¦å"

徿¡è¡éçæä½å¦æä»¥ˆæ§å¶ç¬¦å¼å¤´ãæ¼å¼å°ä¼ä½ç¹æ®åå¤çãå¦æè¯¥æä½æ¯æ³¨è§£æä½å没å®ä¹å¶å¼ãæä½å°ä»¥ç©ºç½å代ãè¥æ¯å¶å®åæãåè§ä¸ºä¸ç§å¡«è¡¥èµæçç¶æã 卿¤ãæä»¬ä¸è½é便填å¥ä»»æè¡¨ç¤ºæ³è¿å»ãç¸åãå¿é¡»ä»¥ç¸å³çåéè¾å¥å- 串å容ãperlä¼å°½éå°æåæ¾å¥è¯¥æ ä½ãç¶åæå- 串çåé¢é¨ä»½å å»ãå½ä½ ä¸æ¬¡ä½¿ç¨è¯¥å串åéæ¶ãå¯ä»¥ä½¿ç¨åé¢çå- 串é¨ä»½(æ¢å¥è¯è¯´ã卿§è¡write彿°æ¶ãå串åéçå容æ¯ä¼æ¹åç)ãæ- £å¸¸æåµä¸ãä½ å¿é¡»ä½¿ç¨ä¸ç±»ä¼¼åç´ç¶çå åæ¥æ¾ç½®è¦è¾å¥çæå- ã以便æ´é½åå°åºä¸æ±ç¶æåãå¦ä½ åå°çæå太é¿ãæ³ä»¥"..."å代è¿é¿çæå- æ¶ãä½ å¯ä»¥åç±æ´æ¹ $: åé弿¥å代åéååãä¹å°±æ¯å½ä½ ä½¿ç¨ENGLISHæ¨¡åæ¶ç $FORMAT_LINE_BREAK_CHARACTERSçææã

ä½¿ç¨ˆç¬¦å·æ ä½å¯äº§çä¸å®é¿åº¦çè®°å½æ ä½ã妿è¦åå°çæåå¾çãä½ æ³å缩ææå- åç空ç½ãè¯·å¨æ³å缩æç空ç½å°æ¹åä¸ä¸ä¸ª"˜"æ§å¶ç¬¦å·ã妿éå¤ä½¿ç¨ä¸¤ä¸ª"˜"符å·ãå该è¡ä¼è¢«éå¤åå°ãç´å°è¯¥æä½çæææå- åå°å®æ¯ä¸ºæ¢ (å¦ä½ åæ¶ä½¿ç¨"@"å¼åæ ä½çè¯ãåè®°æ¯æ¬¡è¦è¾å¥ä¸åçæ°å¼)ã

åå°æ ¼ç¤ºæ é¢ç缺çå¤çæ¹æ³ãæ¯å°æ£ä½¿ç¨çæ ¼å¼åç§°åå ä¸_TOPå- æ ·æ¢å¯ãå¶å容å°ä¼åå°è³æ¯é¡µçå¼å¤´é¨ä»½ã请åè perlfunc/write 彿°

ä¾å¦ï¼

# a report on the /etc/passwd file
format STDOUT_TOP =
Passwd File
Name Login Office Uid Gid Home
------------------------------------------------------------------
.
format STDOUT =
@<<<<<<<<<<<<<<<<<< @⎪⎪⎪⎪⎪⎪⎪ @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<<
$name, $login, $office,$uid,$gid, $home
.

# a report from a bug report form
format STDOUT_TOP =
Bug Reports
@<<<<<<<<<<<<<<<<<<<<<<< @⎪⎪⎪ @>>>>>>>>>>>>>>>>>>>>>>>
$system, $%, $date
------------------------------------------------------------------
.
format STDOUT =
Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$subject
Index: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$index, $description
Priority: @<<<<<<<<<< Date: @<<<<<<< ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$priority, $date, $description
From: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$from, $description
Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$programmer, $description
˜ ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
˜ ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
˜ ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
˜ ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
˜ ˆ<<<<<<<<<<<<<<<<<<<<<<<...
$description
.

æä»¬ä¹æå¯è½å¨åä¸ä¸ªè¾åºç®¡éåæ¶ä½¿ç¨print ä¸ write彿°ãä½ä½¿ç¨æ¶ãå¿é¡»ä¿®æ¹$-çç¹æ®åç½®åéå¼(使ç¨English模åçè¯ãåæ¯ä½¿ç¨$FORMAT_LINES-LEFTåé)ã

Format Variables æ ¼å¼åé

å½åçæ ¼å¼åç§°ä¸å齿¯å- æ¾äº$˜è¿ä¸ªç¹æ®åéå($FORMAT_NAME)ï¼èæ¯é¡µçå¼å¤´æ ¼å¼åå- æ¾å¨$ˆ($FORMAT-TOP_NAME)ï¼è¾åºé¡µä¸º$%($FORMAT_PAGE_NUMBER)ï¼æ¯é¡µè¡æ°æ¯$= ($FORMAT_LINE_PER_PAGE)ï¼èªå¨è¾åºæ¼å¼æ¯æ¾å¨$⎪($OUTPUT_AUTOFLUSH)ãè¦è¾åºå°æ¯é¡µå¼å¤´é¨ä»½çå- 䏲忾å¨$ˆL ($FORMAT-FORMFEED)ãè¿äºåéçææèå´ï¼é½æ¯ä»¥æä¸ä¸ªæä»¶å¥æä¸ºååãå æ- ¤ãä½ å¿é¡»è°ç¨select()彿°æ¥è°ç¨éå½çæä»¶å¥ææ¥æ¹ååéå容ã

select((select(OUTF),
$˜ = "My_Other_Format",
$ˆ = "My_Top_Format"
)[0]);

é¾çå§ï¼è¿å°±æ¯ä¸è¬ç¨æ³ã妿¤ä¸æ¥ãä½ è³å°å¯ç¨ä¸´æ¯å鿥å- æ¾åä¸ä¸ªæä»¶å¥æãäºå®ä¸ãè¿å·²æ¯è¾å¥½ç使³ï¼é¤äºå¯è¯»æ§æé«å¤ã乿ä¾ä½ä¸ä¸ªä½ç½®æåç¨å¼çæ§è¡ï¼æ¹åä½ä¸æ¬¡å°ä½é¤éã

$ofh = select(OUTF);
$˜ = "My_Other_Format";
$ˆ = "My_Top_Format";
select($ofh);

å¦æä½ ä½¿ç¨English模åï¼ä½ çè³å¯ä»¥è¾å¥è±æåéåç§°

use English ’-no_match_vars’;
$ofh = select(OUTF);
$FORMAT_NAME = "My_Other_Format";
$FORMAT_TOP_NAME = "My_Top_Format";
select($ofh);

ä½ä½ è¿æ¯è¦è°ç¨select()彿°ãå æ- ¤æä»¬å»ºè®®ä½ ç¨FileHandle模åãç°å¨ä½ å¯ç¨å°åè±æå- æ¯çæ ¼å¼åç§°æ¥å¤çè¿äºç¹æ®åéã

use FileHandle;
format_name OUTF "My_Other_Format";
format_top_name OUTF "My_Top_Format";

好å¤äºå§ï¼

NOTES

å ä¸ºæ°å¼è¡çå容å¯è½ä¿æ¬ä»»ä½çè¡¨ç¤ºæ³ (æä»¬æçæ¯ @ æ ä½èé ˆ æ ä½)ãå æ- ¤ä½ å¯ä½¿ç¨å¶å®å½æ°ãå»ºç«æ´å å¤æçå¤çæ¹æ³ã好åä½¿ç¨ printf 彿°ãæèªå·±å®ä¹ç彿°ãåå¦ï¼

format Ident =
@<<<<<<<<<<<<<<<
&commify($n)
.

卿 ä½è¾å¥çæ£ç@ æˆç¬¦å·ï¼

format Ident =
I have an @ here.
"@"
.

å°æ´è¡åç½®ä¸å¯¹é½ï¼

format Ident =
@⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪
"Some text line"
.

æä»¬å¹¶æ ä»»ä½åå»ºçæ¹æ³è®©ä½ æå®å¦ãæä¸ªæ ä½è¦å¯¹é½è¯¥é¡µé¢æå³çè¯¸å¦æ- ¤ç±»äºé¡¹ãä½ä½ä»ç¶è½åå°åºä½æ³è¦çæ¼å¼ãè·æ®ç®å页é¢ç´è¡æ°ç®ï¼è°ç¨eval()彿°æ¥å¤çå®ï¼

$format = "format STDOUT = \n"
. ’ˆ’ . ’<’ x $cols . "\n"
. ’$entry’ . "\n"
. "\tˆ" . "<" x ($cols-8) . "˜˜\n"
. ’$entry’ . "\n"
. ".\n";
print $format if $Debugging;
eval $format;
die $@ if $@;

å®å¯è½åå°åºä¸åæ ¼å¼å¤è²ï¼

format STDOUT =
ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$entry
ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<˜˜
$entry
.

ä¸é¢æ¯ä¸ä¸ªæç¹ç±»ä¼¼fmt(1)çå°ç¨å¼ï¼

format =
ˆ<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ˜˜
$_

.

$/ = ’’;
while (<>) {
s/\s*\n\s*/ /g;
write;
}

Footers 页è

è½ç¶æä»¬æ$FORMAT_TOP_NAMEæ¥è®°å½æ¯é¡µå¼å¤´é¨ä»½çæ¼å¼ï¼å´æ²¡æä¸ä¸ªç¸å¯¹åºçæ¹æ³æ¥èªå¨æå®æ¯é¡µçåºé¨æ¼å¼ãé®é¢æ¯ãæä»¬å¹¶ä¸ç¥å°æä¸ªæ¼å¼èµæå¯è½ä¼å¤å¤§ï¼é¤éä½çç廿§è¡å®ãè¿æ¯æä»¬å°æ¥è¦å¤ççéç¹ä¹ä¸ã

è¿æ¯ä¸ä¸ªææ¶çåºç¨æ¹æ¡ 妿使ä¸ä¸ªåºå®å¤§å°ç页èãä½å¯å¨æ¯æ¬¡è°ç¨write彿°åæ£æ¥åé$FORMAT_LINES_LEFTï¼ç¶åèªè¡å°åºè¯¥èµæã

è¿æä¸ä¸ªæ¹æ³ï¼å°±æ¯å¼å¯ä¸ä¸ªç®¡éãè°ç¨open(MYSELF,â⎪-â) (åè perlfunc/open() 彿°)ãå¹¶è°ç¨write彿°æèµæè¾å¾MYSELFãè䏿¯æ åè¾åºSTDOUTãç¶åå©ç¨å- 串åçæåè¾å¥ãæ¥éæ°å¤çæ¯é¡µå¼å¤´æç»å°¾æè¦éåçèµæé¨ä»½ãè¿è½ä¸æ¹ä¾¿ï¼ä½è¿æ¯å¯åå°çã

Accessing Formatting Internals æ ¼å¼å¤ççæ ¸å¿

è³äºä½é¶æ ¼å¼çæºå¶ï¼ä½ å¯è°ç¨formlin()彿°ç´æ¥å¤ç$ˆAåé($ACCUMUNATOR)ã

ä¾å¦ï¼

$str = formline <<’END’, 1,2,3;
@<<< @⎪⎪⎪ @>>>
END

print "Wow, I just stored ‘$ˆA’ in the accumulator!\n";

ææ¯è®¾è®¡ä¸ä¸ªåç¨å¼swrite()ãå®å¯¹äº write çèè²ç¸å½äºsprint å¯¹äº printã

use Carp;
sub swrite {
croak "usage: swrite PICTURE ARGS" unless @_;
my $format = shift;
$ˆA = "";
formline($format,@_);
return $ˆA;
}

$string = swrite(<<’END’, 1, 2, 3);
Check me out
@<<< @⎪⎪⎪ @>>>
END
print $string;

WARNINGS è¦å

ä¸å½å¤çæ¾ç¤ºç»ææ¼ç¤ºå容çç¹æä½ç¬¦å·ãææ¶ä¹ä¼åæ¶å½±åä½çç½ç»ççµé®åè½(è·æ®è¿å¾ç»éªãé误æ¯å¿ç¶èä¸è½é¿å)ãå¦æä½¿ç¨çµé®è¾åºæ¼å¼å容ãä½åºåå¤çå¥½ç»ææ¼å¼ç¹æä½ç¬¦ä½ç½®ãåå¿æ¾ç½®äºå·¦è¾¹çã以å被SMTPæªå»ã

å±é¨åé(å¼ç¨âmyâå®ä¹åé)ãå¨è°ç¨æ¼å¼åè¾åºæ¶ä¸ä¼è¢«å¯è§ãé¤éå¨ä½¿ç¨å±é¨åéç串ç¨åå¦è¡å®ä¹(5.001çæ¬å并没æå±é¨åéä¸è¯)ã

æ ¼å¼è¾åºæ¯ perl è¯- è¨éç»´ä¸åå¶äºç¼ç¨ä½¿ç¨å°åºçé¨åã妿å½åç使ç¨å°åºä½¿ç¨LC_NUMERICï¼é£å°æ°ç¹ç¬¦å·çæ¼å¼åè¾åºå¿ä»¥å½å°æ¹å¼æ¾ç¤ºãperl ä¸ä¼çä¼å½å°çæé¡»æ ¼å¼ï¼é¤éä½ è°ç¨äº use localeã使 ¼å¼åå°åä¸åæ§äºuse localeãå ä¸ºlocale å®åªå¨ä½¿ç¨çååææãåæ¶è·æ®åå²åå ãæ ¼å¼çä½ç¨åä¸ä»åæ¬å¨ååãè¿ä¸æ¥è¯¦æåé perllocale æ¬å°åææ¡£ã

æ¼å¼è¾åºæ¶ãç¨å¼ä¸²åç空ç½ç¬¦å·0,ç¸å½äºä¸ä¸ªç©ºç½ååãæä»¥ä½å¯ä»¥æ³åæ¼å¼åå°ç¸å½äºåå¤çåéï¼

$value =˜ tr/\n\t\f/ /; å°å¼ºå¶æ§å¦å°æ°è¡ã

é¤é徿¡è¡å·²å®ä¹ãé¦ä¸ç空ç½ç¬¦å·

䏿çç»´æ¤äºº

å°é«ã<you@email.com>

ä¸æçææ°æ´æ°

2001å¹´12æ9æ¥æææ¥

䏿æå页翻è¯è®¡å

http://cmpp.linuxforum.net

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh