use strict; use warnings; use Benchmark qw(:all); my $data = do { local $/; }; sub old { for (1..100) { if($data =~ m/(.+\n.*(tulip|elephant).+\n.+)/gim) { # print "matched:\n$1\n\n"; } } } sub new { for (1..100) { if($data =~ m/^(.++\n.*(tulip|elephant).++\n.+)/gim) { # print "matched:\n$1\n\n"; } } } cmpthese(10, { old => \&old, new => \&new, } ); __DATA__ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur consectetur tincidunt enim vitae elementum. Donec at nulla et est pretium eleifend. Sed lorem dolor, viverra nec posuere vitae, ultrices in lorem. In porta venenatis sapien vulputate blandit. Suspendisse a velit augue, ut blandit lorem. Vivamus sodales velit a felis tempus consectetur. Pellentesque fringilla varius ligula, at volutpat justo mattis ut. Donec elit velit, pulvinar quis adipiscing dignissim, sagittis vel sem. Aliquam accumsan consequat scelerisque. Morbi ac augue metus. Duis tempus venenatis dui eu pharetra. Vivamus vestibulum facilisis orci sit amet sollicitudin. Mauris justo eros, adipiscing elementum sollicitudin at, auctor in nunc. Nullam non erat mauris. Proin est orci, iaculis sed pharetra ac, tempor sed erat. Etiam tellus elit, mattis id faucibus quis, semper in justo. Cras sit amet dignissim enim. In varius tincidunt massa ut porttitor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In ullamcorper est ut lorem malesuada in convallis purus semper. Morbi scelerisque volutpat magna, eget suscipit justo porttitor non. Proin condimentum bibendum justo at semper. Phasellus rhoncus, dui et convallis pretium, urna urna ultrices turpis, ac tristique odio nisl id felis. Vestibulum laoreet justo eu augue facilisis at mollis libero luctus. Sed laoreet pulvinar semper. Vivamus pharetra, dui id gravida placerat, odio arcu congue elit, sed pellentesque odio erat a nisi. Fusce ut ipsum nec elit semper vehicula. Nam porttitor commodo sem, at pretium erat semper ac. Aenean ut varius tortor. Sed quis tortor sit amet sem vulputate posuere. Proin eu lorem velit. Morbi eget sapien et massa aliquet hendrerit sit amet in mi. Phasellus posuere, purus ut adipiscing dapibus, elit neque elementum mauris, ut vulputate metus nunc euismod nulla. Sed eleifend leo a nunc porttitor ultrices. Phasellus arcu lorem, sagittis eu tincidunt non, lobortis vitae felis. Donec quis sem tellus. Sed id euismod tellus. Pellentesque quis ipsum nulla, non cursus orci. Curabitur id adipiscing leo. Duis eget sem at est iaculis pulvinar. Donec nec nibh nunc. Maecenas tincidunt dictum metus. Proin luctus nisl nec ante porttitor vel condimentum lacus rutrum. Maecenas et lacus nisi. Vivamus justo nunc, hendrerit vel congue sit amet, vulputate eu nisi. Nunc lacinia, sapien vel cursus euismod, nisi turpis scelerisque tellus, quis porta enim lacus quis velit. Nulla justo nulla, malesuada viverra cursus in, porttitor ut mauris. Curabitur mattis venenatis dolor, in vehicula dolor pretium quis. Cras volutpat dignissim metus, eu malesuada felis accumsan eu. Integer pretium, turpis quis viverra placerat, sem magna vulputate risus, eget congue magna nisi eu turpis. Donec consequat semper dolor hendrerit sollicitudin. Maecenas laoreet felis vel mauris accumsan ac ultricies lorem fringilla. Aliquam semper ultrices convallis. Nam congue, ipsum sed lobortis dapibus, ante justo ultricies purus, sit amet malesuada diam sem quis lacus. Vivamus ultrices, purus ac malesuada lobortis, odio est mollis massa, in porttitor velit nunc sit amet lorem. Suspendisse pellentesque dignissim egestas. Etiam a convallis est. Cras tincidunt volutpat nibh, at porttitor dolor convallis vitae. Suspendisse felis orci, sagittis a pharetra nec, elementum sit amet orci. Nunc porta viverra nibh sed tincidunt. Nullam risus dui, tincidunt quis viverra at, auctor vitae diam. Maecenas nisl metus, porta ut interdum nec, faucibus nec tellus. Nunc aliquam, mauris ac luctus pharetra, elit orci aliquam magna, sit amet consequat velit nibh et mi. Aenean at lectus at dui ultrices laoreet. Etiam euismod molestie vestibulum. Pellentesque sit amet lectus nec nibh mollis dapibus. Maecenas bibendum augue ut leo euismod convallis. Nulla dapibus posuere felis, non elementum erat posuere ac. Aenean suscipit, felis non sagittis molestie, felis massa luctus est, id facilisis felis dui id neque. Cras semper dignissim elit, at scelerisque leo porttitor eget. Nullam in ipsum in neque ultrices rhoncus. Donec ac justo et enim rutrum adipiscing a vitae sapien. Nulla non dui mi. Vivamus aliquam varius purus non ornare. Curabitur placerat nisi a nulla euismod volutpat. Maecenas ac sapien ac magna posuere suscipit. Quisque nec magna non mi interdum tempor. Quisque vestibulum mi in ligula adipiscing tincidunt. Fusce rutrum, odio a egestas blandit, lorem ipsum venenatis quam, et pellentesque ligula elit sit amet nisi. Cras nec arcu nunc. Pellentesque vestibulum mattis diam, id porta arcu commodo et. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris faucibus porta lacus, eget interdum libero aliquet nec. Nulla facilisi. Ut leo dui, semper in lacinia at, aliquam at lacus. Ut ipsum dui, tulip gravida et condimentum ac, congue non lacus. Donec eu lectus et nunc varius cursus. Duis pharetra lacinia velit, eget volutpat est mollis quis. Nam aliquam congue pellentesque. Suspendisse tincidunt dapibus metus, et tempus elit aliquet quis. Praesent ut velit at arcu ultrices malesuada sed sed nisl. Integer elementum nisi a felis bibendum id ultricies tortor consectetur. Duis mi urna, eleifend sed porta quis, tristique nec dolor. Morbi leo augue, fermentum et fringilla nec, volutpat vitae diam. Curabitur augue felis, molestie sit amet malesuada id, pharetra eget diam. Vivamus est enim, rutrum ut sodales in, luctus sit amet libero. Curabitur vulputate eros a enim tristique eget fringilla sem pellentesque. Duis eget ipsum nec erat aliquam porta. Proin vulputate risus sagittis massa aliquam non interdum dui tincidunt. Duis sit amet sagittis urna. Nullam sem nulla, tristique non lacinia quis, vestibulum nec metus. Sed nibh ligula, volutpat vehicula euismod vitae, scelerisque eu quam. Donec elementum mollis lacus ut molestie. Praesent tempor ante et metus ullamcorper sit amet suscipit nunc elementum. Aliquam sodales sapien sed dui ultricies consectetur. Proin sed nisl ut enim viverra consequat. Nulla vel commodo magna. Donec venenatis posuere lacus, sed malesuada erat porttitor in. Nunc lacinia ultrices lectus in consectetur. Nullam aliquam sapien non purus tincidunt eleifend. Nullam nec lectus ut orci vulputate mollis. In eu purus magna, vitae condimentum mauris. Praesent mattis diam non erat mollis viverra. Vivamus faucibus libero sit amet arcu vestibulum vel sagittis ligula egestas. Donec tempus suscipit leo ac imperdiet. Aliquam auctor, ligula sit amet volutpat imperdiet, mi justo imperdiet augue, eu placerat sapien nisi at felis. Curabitur nec metus et mi molestie dapibus. Ut tellus leo, hendrerit sit amet tincidunt vel, scelerisque in arcu. Nullam quis interdum dui. Phasellus convallis tincidunt ligula in commodo. Nam pharetra felis sed ligula consequat eu venenatis urna vestibulum. Nam sit amet sapien at neque euismod tempus. Mauris imperdiet erat eget orci ultricies mattis. Curabitur aliquam interdum nulla vel condimentum. Aliquam vestibulum, mauris sed placerat vehicula, justo orci molestie nulla, lobortis scelerisque nunc ligula non nunc. Vestibulum condimentum sagittis massa, sit amet porta sem aliquet vitae. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In egestas ligula eget tortor mattis sit amet elementum nibh tincidunt. Phasellus id ipsum nec diam dapibus ultricies et vitae tellus. Suspendisse vitae justo lectus, quis imperdiet erat. Duis pretium nibh eget turpis imperdiet tincidunt. Praesent id enim aliquam felis auctor mollis. Ut aliquet euismod facilisis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus euismod, nibh non lacinia consectetur, magna purus ultricies elit, quis faucibus nunc magna convallis ipsum. Curabitur risus urna, vestibulum quis consectetur sit amet, ornare in risus. Duis euismod nulla ac ante interdum viverra. Nam odio eros, sodales non egestas id, convallis et magna. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla facilisi. Donec viverra dignissim justo, quis congue magna aliquam vitae. Proin pellentesque ultricies mi, ut aliquam nulla pulvinar nec. In lacinia, augue at varius iaculis, ligula metus placerat ipsum, et dictum diam erat eu eros. Aenean tincidunt sem quis augue dictum accumsan. Cras porttitor suscipit urna malesuada dignissim. Aliquam mattis mauris id diam dignissim commodo. Sed libero est, accumsan eu interdum ac, pharetra vitae sem. Curabitur vel nisi vel mi ultrices pulvinar quis id sem. Cras euismod nulla nunc, non sollicitudin augue. Ut sagittis, nunc bibendum aliquam adipiscing, leo eros posuere felis, non placerat magna neque nec libero. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi quis justo turpis. Integer sollicitudin porttitor mi, id euismod leo elementum non. Vestibulum quis diam odio, non aliquam sem. Integer lobortis cursus consequat. Donec consequat aliquet bibendum. Maecenas ac sapien ac magna posuere suscipit. Quisque nec magna non mi interdum tempor. Quisque vestibulum mi in ligula adipiscing tincidunt. Fusce rutrum, odio a egestas blandit, lorem ipsum venenatis quam, et pellentesque ligula elit sit amet nisi. Cras nec arcu nunc. Pellentesque vestibulum mattis diam, id porta arcu commodo et. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris faucibus porta lacus, eget interdum libero aliquet nec. Nulla facilisi. Ut leo dui, semper in lacinia at, aliquam at lacus. Ut ipsum dui, tulip gravida et condimentum ac, congue non lacus. Donec eu lectus et nunc varius cursus. Duis pharetra lacinia velit, eget volutpat est mollis quis. Nam aliquam congue pellentesque. Suspendisse tincidunt dapibus metus, et tempus elit aliquet quis. Praesent ut velit at arcu ultrices malesuada sed sed nisl. Integer elementum nisi a felis bibendum id ultricies tortor consectetur. Duis mi urna, eleifend sed porta quis, tristique nec dolor. Morbi leo augue, fermentum et fringilla nec, volutpat vitae diam. Curabitur augue felis, molestie sit amet malesuada id, pharetra eget diam.