# more - perldoc - phpman

> **TLDR:** Interactively display a file, allowing scrolling and searching.
>
- Open a file:
  `more {{path/to/file}}`
- Display a specific line:
  `more +{{line_number}} {{path/to/file}}`
- Go to the next page:
  `<Space>`
- Search for a string (press `<n>` to go to the next match):
  `</>{{something}}<Enter>`
- Exit:
  `<q>`
- Display help about interactive commands:
  `<h>`

*Source: tldr-pages*

---

## 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](https://www.chedong.com/phpMan.php/perldoc/Apache%3A%3ARegistry/markdown) 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](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ATee/markdown) or [Tie::FileHandle::Multiplex](https://www.chedong.com/phpMan.php/perldoc/Tie%3A%3AFileHandle%3A%3AMultiplex/markdown) 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";
            }
        }

