Perl hacka och chomp funktioner kan ofta vara en källa till förvirring. De låter inte bara liknande, de gör liknande saker. Tyvärr finns det en kritisk skillnad- hacka tar bort det sista tecknet i strängen helt medan chomp tar bara bort det sista tecknet om det är en ny linje.
chomping $ myname stänger av den sista nylinjen och lämnar bara Jacob. När det har blivit chompat, kommer ytterligare chomping inte göra någonting alls. hacka namnet kommer dock att resultera i att det sista tecknet tas bort och lämnar Jaco:
Chomping och hackaping en matris resulterar i att varje element påverkas och kan vara en realtidssparare.
Så kom ihåg - Hacka hugger av den sista karaktären utan fråga eller ånger. Chomp tog bara bort den nya linjen och lämnade själva strängen intakt. Chomp tar inte bort alla whitespace-tecken som standard. Som standard tar chomp bara bort det som för närvarande definieras som $ INPUT_RECORD_SEPARATOR. Om ditt mål är att trimma allt mellanrum från slutet av strängen kan du prova att använda ett regex som det här som skickats in av en läsare: