Markdown Format | JSON API | MCP Server Tool
Interactively display a file, allowing scrolling and searching.
more {{path/to/file}}more +{{line_number}} {{path/to/file}}<Space></>{{something}}<Enter><q><h>Found in /usr/share/perl/5.34/pod/perlfaq3.pod How can I make my CGI script more efficient? Beyond the normal measures described to make general Perl programs faster or smaller, a CGI program has additional issues. It may be run several times per second. Given that each time it runs it will need to be re-compiled and will often allocate a megabyte or more of system memory, this can be a killer. Compiling into C isn't going to help you because the process start-up overhead is where the bottleneck is. There are three popular ways to avoid this overhead. One solution involves running the Apache HTTP server (available from <http://www.apache.org/> ) with either of the mod_perl or mod_fastcgi plugin modules. With mod_perl and the Apache::Registry module (distributed with mod_perl), httpd will run with an embedded Perl interpreter which pre-compiles your script and then executes it within the same address space without forking. The Apache extension also gives Perl access to the internal server API, so modules written in Perl can do just about anything a module written in C can. For more on mod_perl, see <http://perl.apache.org/> With the FCGI module (from CPAN) and the mod_fastcgi module (available from <http://www.fastcgi.com/> ) each of your Perl programs becomes a permanent CGI daemon process. Finally, Plack is a Perl module and toolkit that contains PSGI middleware, helpers and adapters to web servers, allowing you to easily deploy scripts which can continue running, and provides flexibility with regards to which web server you use. It can allow existing CGI scripts to enjoy this flexibility and performance with minimal changes, or can be used along with modern Perl web frameworks to make writing and deploying web services with Perl a breeze. These solutions can have far-reaching effects on your system and on the way you write your CGI programs, so investigate them with care. See also <http://www.cpan.org/modules/by-category/15_World_Wide_Web_HTML_HTTP_CGI /> . Found in /usr/share/perl/5.34/pod/perlfaq5.pod How do I print to more than one file at once? To connect one filehandle to several output filehandles, you can use the IO::Tee or Tie::FileHandle::Multiplex modules. If you only have to do this once, you can print individually to each filehandle. for my $fh ($fh1, $fh2, $fh3) { print $fh "whatever\n" } Found in /usr/share/perl/5.34/pod/perlfaq6.pod I'm having trouble matching over more than one line. What's wrong? Either you don't have more than one line in the string you're looking at (probably), or else you aren't using the correct modifier(s) on your pattern (possibly). There are many ways to get multiline data into a string. If you want it to happen automatically while reading input, you'll want to set $/ (probably to '' for paragraphs or "undef" for the whole file) to allow you to read more than one line at a time. Read perlre to help you decide which of "/s" and "/m" (or both) you might want to use: "/s" allows dot to include newline, and "/m" allows caret and dollar to match next to a newline, not just at the end of the string. You do need to make sure that you've actually got a multiline string in there. For example, this program detects duplicate words, even when they span line breaks (but not paragraph ones). For this example, we don't need "/s" because we aren't using dot in a regular expression that we want to cross line boundaries. Neither do we need "/m" because we don't want caret or dollar to match at any point inside the record next to newlines. But it's imperative that $/ be set to something other than the default, or else we won't actually ever have a multiline record read in. $/ = ''; # read in whole paragraph, not just one line while ( <> ) { while ( /\b([\w'-]+)(\s+\g1)+\b/gi ) { # word starts alpha print "Duplicate $1 at paragraph $.\n"; } } Here's some code that finds sentences that begin with "From " (which would be mangled by many mailers): $/ = ''; # read in whole paragraph, not just one line while ( <> ) { while ( /^From /gm ) { # /m makes ^ match next to \n print "leading From in paragraph $.\n"; } } Here's code that finds everything between START and END in a paragraph: undef $/; # read in whole file, not just one line or paragraph while ( <> ) { while ( /START(.*?)END/sgm ) { # /s makes . cross line boundaries print "$1\n"; } }
Generated by phpMan Author: Che Dong Under GNU General Public License
2026-06-02 18:36 @216.73.216.151 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)