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

📄 ch10_09.htm

📁 By Tom Christiansen and Nathan Torkington ISBN 1-56592-243-3 First Edition, published August 1998
💻 HTM
字号:
<HTML><HEAD><TITLE>Recipe 10.8. Skipping Selected Return Values (Perl Cookbook)</TITLE><METANAME="DC.title"CONTENT="Perl Cookbook"><METANAME="DC.creator"CONTENT="Tom Christiansen &amp; Nathan Torkington"><METANAME="DC.publisher"CONTENT="O'Reilly &amp; Associates, Inc."><METANAME="DC.date"CONTENT="1999-07-02T01:39:52Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-243-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch10_01.htm"TITLE="10. Subroutines"><LINKREL="prev"HREF="ch10_08.htm"TITLE="10.7. Passing by Named Parameter"><LINKREL="next"HREF="ch10_10.htm"TITLE="10.9. Returning More Than One Array or Hash"></HEAD><BODYBGCOLOR="#FFFFFF"><img alt="Book Home" border="0" src="gifs/smbanner.gif" usemap="#banner-map" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Perl Cookbook"><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><p><TABLEWIDTH="684"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch10_08.htm"TITLE="10.7. Passing by Named Parameter"><IMGSRC="../gifs/txtpreva.gif"ALT="Previous: 10.7. Passing by Named Parameter"BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="228"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1"><ACLASS="chapter"REL="up"HREF="ch10_01.htm"TITLE="10. Subroutines"></A></FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch10_10.htm"TITLE="10.9. Returning More Than One Array or Hash"><IMGSRC="../gifs/txtnexta.gif"ALT="Next: 10.9. Returning More Than One Array or Hash"BORDER="0"></A></TD></TR></TABLE></DIV><DIVCLASS="sect1"><H2CLASS="sect1"><ACLASS="title"NAME="ch10-27168">10.8. Skipping Selected Return Values</A></H2><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch10-pgfId-636">Problem</A></H3><PCLASS="para"><ACLASS="indexterm"NAME="ch10-idx-1000004689-0"></A><ACLASS="indexterm"NAME="ch10-idx-1000004689-1"></A><ACLASS="indexterm"NAME="ch10-idx-1000004689-2"></A>You have a function that returns many values, but you only care about some of them. The <CODECLASS="literal">stat</CODE> function is a classic example: often you only want one value from its long return list (mode, for instance).</P></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch10-pgfId-642">Solution</A></H3><PCLASS="para">Either assign to a list with <CODECLASS="literal">undef</CODE> in some of the slots:</P><PRECLASS="programlisting">($a, undef, $c) = func();</PRE><PCLASS="para">or else take a slice of the return list, selecting only what you want:</P><PRECLASS="programlisting">($a, $c) = (func())[0,2];</PRE></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch10-pgfId-654">Discussion</A></H3><PCLASS="para">Using dummy temporary variables is wasteful:</P><PRECLASS="programlisting">($dev,$ino,$DUMMY,$DUMMY,$uid) = stat($filename);</PRE><PCLASS="para">Use <CODECLASS="literal">undef</CODE> instead of dummy variables to discard a value:</P><PRECLASS="programlisting">($dev,$ino,undef,undef,$uid)   = stat($filename);</PRE><PCLASS="para">Or take a slice, selecting just the values you care about:</P><PRECLASS="programlisting">($dev,$ino,$uid,$gid)   = (stat($filename))[0,1,4,5];</PRE><PCLASS="para">If you want to put an expression into list context and discard all its return values (calling it simply for side effects), as of version 5.004 you can assign to the empty list:</P><PRECLASS="programlisting">() = some_function();</PRE></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch10-pgfId-680">See Also</A></H3><PCLASS="para">The discussion on <CODECLASS="literal">slices</CODE> in <ACLASS="olink"HREF="../prog/ch02_01.htm">Chapter 2</A> of <ACLASS="citetitle"HREF="../prog/index.htm"TITLE="Programming Perl"><CITECLASS="citetitle">Programming Perl</CITE></A> and <ICLASS="filename">perlsub </I>(1); <ACLASS="xref"HREF="ch03_02.htm"TITLE="Finding Today's Date">Recipe 3.1</A><ACLASS="indexterm"NAME="ch10-idx-1000004691-0"></A><ACLASS="indexterm"NAME="ch10-idx-1000004691-1"></A><ACLASS="indexterm"NAME="ch10-idx-1000004691-2"></A></P></DIV></DIV><DIVCLASS="htmlnav"><P></P><HRALIGN="LEFT"WIDTH="684"TITLE="footer"><TABLEWIDTH="684"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch10_08.htm"TITLE="10.7. Passing by Named Parameter"><IMGSRC="../gifs/txtpreva.gif"ALT="Previous: 10.7. Passing by Named Parameter"BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="228"><ACLASS="book"HREF="index.htm"TITLE="Perl Cookbook"><IMGSRC="../gifs/txthome.gif"ALT="Perl Cookbook"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch10_10.htm"TITLE="10.9. Returning More Than One Array or Hash"><IMGSRC="../gifs/txtnexta.gif"ALT="Next: 10.9. Returning More Than One Array or Hash"BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="228">10.7. Passing by Named Parameter</TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="228"><ACLASS="index"HREF="index/index.htm"TITLE="Book Index"><IMGSRC="../gifs/index.gif"ALT="Book Index"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="228">10.9. Returning More Than One Array or Hash</TD></TR></TABLE><HRALIGN="LEFT"WIDTH="684"TITLE="footer"><FONTSIZE="-1"></DIV<!-- LIBRARY NAV BAR --> <img src="../gifs/smnavbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links"><p> <a href="copyrght.htm">Copyright &copy; 2002</a> O'Reilly &amp; Associates. All rights reserved.</font> </p> <map name="library-map"> <area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map> </BODY></HTML>

⌨️ 快捷键说明

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