Manipulating Perl arrays: shift, unshift, push, pop - Perl Maven

文章推薦指數: 80 %
投票人數:10人

If you imagine the array starting on the left hand side, the shift function will move the whole array one unit to the left. The first element will "fall ... Togglenavigation PerlMaven PerlTutorial Pro Login Register Books Typekeyword: Archive About Perltutorial Introduction InstallingandgettingstartedwithPerl TheHash-bangline,orhowtomakeaPerlscriptsexecutableonLinux PerlEditor HowtogetHelpforPerl? Perlonthecommandline CorePerldocumentationandCPANmoduledocumentation POD-PlainOldDocumentation DebuggingPerlscripts Scalars CommonWarningsandErrormessagesinPerl Prompt,readfromSTDIN,readfromthekeyboardinPerl AutomaticstringtonumberconversionorcastinginPerl Conditionalstatements,usingif,else,elsifinPerl BooleanvaluesinPerl Numericaloperators Stringoperators:concatenation(.),repetition(x) undef,theinitialvalueandthedefinedfunctionofPerl StringsinPerl:quoted,interpolatedandescaped Heredocuments,orhowtocreatemulti-linestringsinPerl Scalarvariables ComparingscalarsinPerl Stringfunctions:length,lc,uc,index,substr NumberGuessinggame whileloop ScopeofvariablesinPerl Short-circuitinbooleanexpressions Files HowtoexitfromaPerlscript? Standardoutput,standarderrorandcommandlineredirection Warningwhensomethinggoeswrong Whatdoesdiedo? WritingtofileswithPerl Appendingtofiles Openandreadfromtextfiles Don'tOpenFilesintheoldway ReadingandwritingbinaryfilesinPerl EOF-EndoffileinPerl tellhowfarhavewereadafile seek-movethepositioninthefilehandleinPerl slurpmode-readingafileinonestep ListsandArrays Perlforloopexplainedwithexamples PerlArrays Processingcommandlinearguments-@ARGVinPerl HowtoprocesscommandlineargumentsinPerlusingGetopt::Long AdvancedusageofGetopt::Longforacceptingcommandlinearguments Perlsplit-tocutupastringintopieces HowtoreadaCSVfileusingPerl? join Theyearof19100 ScalarandListcontextinPerl,thesizeofanarray Readingfromafileinscalarandlistcontext STDINinscalarandlistcontext SortingarraysinPerl Sortingmixedstrings UniquevaluesinanarrayinPerl ManipulatingPerlarrays:shift,unshift,push,pop ReversePolishCalculatorinPerlusingastack UsingaqueueinPerl Reverseanarray,astringoranumber TheternaryoperatorinPerl Loopcontrols:next,last,continue,break min,max,suminPerlusingList::Util qw-quoteword Subroutines SubroutinesandfunctionsinPerl PassingmultipleparameterstoafunctioninPerl VariablenumberofparametersinPerlsubroutines ReturningmultiplevaluesoralistfromasubroutineinPerl Understandingrecursivesubroutines-traversingadirectorytree Hashes HashesinPerl CreatingahashfromanarrayinPerl Perlhashinscalarandlistcontext exists-checkifakeyexistsinahash deleteanelementfromahash HowtosortahashinPerl? CountthefrequencyofwordsintextusingPerl RegularExpressions IntroductiontoRegexesinPerl5 Regexcharacterclasses Regex:specialcharacterclasses Perl5RegexQuantifiers trim-removingleadingandtrailingwhitespaceswithPerl Perl5RegexCheatsheet Shellrelatedfunctionality Whatare-e,-z,-s,-M,-A,-C,-r,-w,-x,-o,-f,-d,-linPerl? CurrentworkingdirectoryinPerl(cwd,pwd) RunningexternalprogramsfromPerlwithsystem qxorbackticks-runningexternalcommandandcapturingtheoutput Howtoremove,copyorrenameafilewithPerl Readingthecontentofadirectory Traversingthefilesystem-usingaqueue CPAN DownloadandinstallPerl InstallingaPerlModulefromCPANonWindows,LinuxandMacOSX Howtochange@INCtofindPerlmodulesinnon-standardlocations Howtoaddarelativedirectoryto@INC ExamplesforusingPerl HowtoreplaceastringinafilewithPerl HowtoreadanExcelfileinPerl HowtocreateanExcelfilewithPerl? SendingHTMLe-mailusingEmail::Stuffer Perl/CGIscriptwithApache2 JSONinPerl SimpleDatabaseaccessusingPerlDBIandSQL ReadingfromLDAPinPerlusingNet::LDAP Commonwarningsanderrormessages Globalsymbolrequiresexplicitpackagename VariabledeclarationinPerl Useofuninitializedvalue BarewordsinPerl Name"main::x"usedonlyonce:possibletypoat... Unknownwarningscategory Can'tusestring(...)asanHASHrefwhile"strictrefs"inuseat... SymbolicreferencesinPerl Can'tlocate...in@INC Scalarfoundwhereoperatorexpected "my"variablemasksearlierdeclarationinsamescope Can'tcallmethod...onunblessedreference Argument...isn'tnumericinnumeric... Can'tlocateobjectmethod"..."viapackage"1"(perhapsyouforgottoload"1"?) Uselessuseofhashelementinvoidcontext Uselessuseofprivatevariableinvoidcontext readline()onclosedfilehandleinPerl Possibleprecedenceissuewithcontrolflowoperator Scalarvalue...betterwrittenas... substroutsideofstringat... Haveexceededthemaximumnumberofattempts(1000)toopentempfile/dir Useofimplicitsplitto@_isdeprecated... Other MultidimensionalarraysinPerl MultidimensionalhashesinPerl MinimalrequirementtobuildasaneCPANpackage Statementmodifiers:reversedifstatements Whatisautovivification? FormattedprintinginPerlusingprintfandsprintf ManipulatingPerlarrays:shift,unshift,push,pop array shift unshift push pop Prev Next Aswellasallowingdirectaccesstoindividualarrayelements, Perlalsoprovidesvariousotherinterestingwaystodealwitharrays. Inparticular,therearefunctionsthatmakeitveryeasyandefficient touseaPerlarrayasastackorasaqueue. pop Thepopfunctionwillremoveandreturnthelastelementofanarray. Inthisfirstexampleyoucanseehow,givenanarrayof3elements,thepopfunction removesthelastelement(theonewiththehighestindex)andreturnsit. my@names=('Foo','Bar','Baz'); my$last_one=pop@names; print"$last_one\n";#Baz print"@names\n";#FooBar Inthespecialcaseoftheoriginalarraybeingempty,thepopfunction willreturnundef. push Thepushfunctioncanaddoneormorevaluestotheendofanarray. (Well,itcanalsoadd0values,butthat'snotveryuseful,isit?) my@names=('Foo','Bar'); push@names,'Moo'; print"@names\n";#FooBarMoo my@others=('Darth','Vader'); push@names,@others; print"@names\n";#FooBarMooDarthVader Inthisexampleweoriginallyhadanarraywithtwoelements. Thenwepushedasinglescalarvaluetotheendandourarray gotextendedtoa3-elementarray. Inthesecondcalltopush,wepushedthecontentofthe@others arraytotheendofthe@namesarray,extendingittoa5-elementarray. shift Ifyouimaginethearraystartingonthelefthandside, theshiftfunctionwillmovethewholearrayoneunittotheleft. Thefirstelementwill"falloff"thearrayandbecomethefunction'sreturnvalue. (Ifthearraywasempty,shiftwillreturnundef.) Aftertheoperation,thearraywillbeoneelementshorter. my@names=('Foo','Bar','Moo'); my$first=shift@names; print"$first\n";#Foo print"@names\n";#BarMoo Thisisquitesimilartopop,butitworksonthelowerendofthearray. unshift Thisistheoppositeoperationofshift.unshiftwill takeoneormorevalues(oreven0ifthat'swhatyoulike)andplaceitatthe beginningofthearray,movingalltheotherelementstotheright. Youcanpassitasinglescalarvalue,whichwillbecomethe firstelementofthearray.Or,asinthesecondexample,youcanpassasecond arrayandthentheelementsofthissecondarray(@othersinourcase) willbecopiedtothebeginningofthemainarray(@namesinourcase) movingtheotherelementstohigherindexes. my@names=('Foo','Bar'); unshift@names,'Moo'; print"@names\n";#MooFooBar my@others=('Darth','Vader'); unshift@names,@others; print"@names\n";#DarthVaderMooFooBar Prev Next Writtenby GaborSzabo Publishedon2013-02-06 Comments Inthecomments,pleasewrapyourcodesnippetswithin

tagsandusespacesforindentation.
commentspoweredbyDisqus
Ifyouhaveanycommentsorquestions,feelfreetopostthemonthesourceofthispageinGitHub.SourceonGitHub.
Commentonthispost
Author:GaborSzabo
GaborwhorunsthePerlMavensitehelpscompaniessetuptestautomation,CI/CD
ContinuousIntegrationandContinuousDeploymentandotherDevOpsrelated
systems.
GaborcanhelprefactoryouroldPerlcode-base.
HerunsthePerlWeeklynewsletter.
ContactGaborifyou'dliketohirehisservice.
BuyhiseBooksorifyoujustwouldliketosupporthim,doitviaPatreon.
English
Français
Italiano
Português
简体中文
aboutthetranslations
undef,theinitialvalueandthedefinedfunctionofPerl



請為這篇文章評分?