⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perlopentut.1

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 1
📖 第 1 页 / 共 4 页
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings.  \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote.  \*(C+ will.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\.    ds -- \(*W-.    ds PI pi.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch.    ds L" "".    ds R" "".    ds C` "".    ds C' ""'br\}.el\{\.    ds -- \|\(em\|.    ds PI \(*p.    ds L" ``.    ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el       .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD.  Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\.    de IX.    tm Index:\\$1\t\\n%\t"\\$2"...    nr % 0.    rr F.\}.el \{\.    de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear.  Run.  Save yourself.  No user-serviceable parts..    \" fudge factors for nroff and troff.if n \{\.    ds #H 0.    ds #V .8m.    ds #F .3m.    ds #[ \f1.    ds #] \fP.\}.if t \{\.    ds #H ((1u-(\\\\n(.fu%2u))*.13m).    ds #V .6m.    ds #F 0.    ds #[ \&.    ds #] \&.\}.    \" simple accents for nroff and troff.if n \{\.    ds ' \&.    ds ` \&.    ds ^ \&.    ds , \&.    ds ~ ~.    ds /.\}.if t \{\.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u".    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}.    \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E.    \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'.    \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\.    ds : e.    ds 8 ss.    ds o a.    ds d- d\h'-1'\(ga.    ds D- D\h'-1'\(hy.    ds th \o'bp'.    ds Th \o'LP'.    ds ae ae.    ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "PERLOPENTUT 1".TH PERLOPENTUT 1 "2007-12-18" "perl v5.10.0" "Perl Programmers Reference Guide".\" For nroff, turn off justification.  Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"perlopentut \- tutorial on opening things in Perl.SH "DESCRIPTION".IX Header "DESCRIPTION"Perl has two simple, built-in ways to open files: the shell way forconvenience, and the C way for precision.  The shell way also has 2\- and3\-argument forms, which have different semantics for handling the filename.The choice is yours..SH "Open a\*` la shell".IX Header "Open a` la shell"Perl's \f(CW\*(C`open\*(C'\fR function was designed to mimic the way command-lineredirection in the shell works.  Here are some basic examplesfrom the shell:.PP.Vb 6\&    $ myprogram file1 file2 file3\&    $ myprogram    <  inputfile\&    $ myprogram    >  outputfile\&    $ myprogram    >> outputfile\&    $ myprogram    |  otherprogram \&    $ otherprogram |  myprogram.Ve.PPAnd here are some more advanced examples:.PP.Vb 4\&    $ otherprogram      | myprogram f1 \- f2\&    $ otherprogram 2>&1 | myprogram \-\&    $ myprogram     <&3\&    $ myprogram     >&4.Ve.PPProgrammers accustomed to constructs like those above can take comfortin learning that Perl directly supports these familiar constructs usingvirtually the same syntax as the shell..Sh "Simple Opens".IX Subsection "Simple Opens"The \f(CW\*(C`open\*(C'\fR function takes two arguments: the first is a filehandle,and the second is a single string comprising both what to open and howto open it.  \f(CW\*(C`open\*(C'\fR returns true when it works, and when it fails,returns a false value and sets the special variable \f(CW$!\fR to reflectthe system error.  If the filehandle was previously opened, it willbe implicitly closed first..PPFor example:.PP.Vb 4\&    open(INFO,      "datafile") || die("can\*(Aqt open datafile: $!");\&    open(INFO,   "<  datafile") || die("can\*(Aqt open datafile: $!");\&    open(RESULTS,">  runstats") || die("can\*(Aqt open runstats: $!");\&    open(LOG,    ">> logfile ") || die("can\*(Aqt open logfile:  $!");.Ve.PPIf you prefer the low-punctuation version, you could write that this way:.PP.Vb 3\&    open INFO,   "<  datafile"  or die "can\*(Aqt open datafile: $!";\&    open RESULTS,">  runstats"  or die "can\*(Aqt open runstats: $!";\&    open LOG,    ">> logfile "  or die "can\*(Aqt open logfile:  $!";.Ve.PPA few things to notice.  First, the leading less-than is optional.If omitted, Perl assumes that you want to open the file for reading..PPNote also that the first example uses the \f(CW\*(C`||\*(C'\fR logical operator, and thesecond uses \f(CW\*(C`or\*(C'\fR, which has lower precedence.  Using \f(CW\*(C`||\*(C'\fR in the latterexamples would effectively mean.PP.Vb 1\&    open INFO, ( "<  datafile"  || die "can\*(Aqt open datafile: $!" );.Ve.PPwhich is definitely not what you want..PPThe other important thing to notice is that, just as in the shell,any whitespace before or after the filename is ignored.  This is good,because you wouldn't want these to do different things:.PP.Vb 3\&    open INFO,   "<datafile"   \&    open INFO,   "< datafile" \&    open INFO,   "<  datafile".Ve.PPIgnoring surrounding whitespace also helps for when you read a filenamein from a different file, and forget to trim it before opening:.PP.Vb 2\&    $filename = <INFO>;         # oops, \en still there\&    open(EXTRA, "< $filename") || die "can\*(Aqt open $filename: $!";.Ve.PPThis is not a bug, but a feature.  Because \f(CW\*(C`open\*(C'\fR mimics the shell inits style of using redirection arrows to specify how to open the file, italso does so with respect to extra whitespace around the filename itselfas well.  For accessing files with naughty names, see \&\*(L"Dispelling the Dweomer\*(R"..PPThere is also a 3\-argument version of \f(CW\*(C`open\*(C'\fR, which lets you put thespecial redirection characters into their own argument:.PP.Vb 1\&    open( INFO, ">", $datafile ) || die "Can\*(Aqt create $datafile: $!";.Ve.PPIn this case, the filename to open is the actual string in \f(CW$datafile\fR,so you don't have to worry about \f(CW$datafile\fR containing charactersthat might influence the open mode, or whitespace at the beginning ofthe filename that would be absorbed in the 2\-argument version.  Also,any reduction of unnecessary string interpolation is a good thing..Sh "Indirect Filehandles".IX Subsection "Indirect Filehandles"\&\f(CW\*(C`open\*(C'\fR's first argument can be a reference to a filehandle.  As ofperl 5.6.0, if the argument is uninitialized, Perl will automaticallycreate a filehandle and put a reference to it in the first argument,like so:.PP.Vb 5\&    open( my $in, $infile )   or die "Couldn\*(Aqt read $infile: $!";\&    while ( <$in> ) {\&        # do something with $_\&    }\&    close $in;.Ve.PPIndirect filehandles make namespace management easier.  Since filehandlesare global to the current package, two subroutines trying to open\&\f(CW\*(C`INFILE\*(C'\fR will clash.  With two functions opening indirect filehandleslike \f(CW\*(C`my $infile\*(C'\fR, there's no clash and no need to worry about futureconflicts..PPAnother convenient behavior is that an indirect filehandle automaticallycloses when it goes out of scope or when you undefine it:.PP.Vb 4\&    sub firstline {\&        open( my $in, shift ) && return scalar <$in>;\&        # no close() required\&    }.Ve.Sh "Pipe Opens".IX Subsection "Pipe Opens"In C, when you want to open a file using the standard I/O library,you use the \f(CW\*(C`fopen\*(C'\fR function, but when opening a pipe, you use the\&\f(CW\*(C`popen\*(C'\fR function.  But in the shell, you just use a different redirectioncharacter.  That's also the case for Perl.  The \f(CW\*(C`open\*(C'\fR call remains the same\*(--just its argument differs..PPIf the leading character is a pipe symbol, \f(CW\*(C`open\*(C'\fR starts up a newcommand and opens a write-only filehandle leading into that command.This lets you write into that handle and have what you write show up onthat command's standard input.  For example:.PP.Vb 3\&    open(PRINTER, "| lpr \-Plp1")    || die "can\*(Aqt run lpr: $!";\&    print PRINTER "stuff\en";\&    close(PRINTER)                  || die "can\*(Aqt close lpr: $!";.Ve.PPIf the trailing character is a pipe, you start up a new command and open aread-only filehandle leading out of that command.  This lets whatever that

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -