#!/usr/bin/perl use Config; use File::Basename qw(&basename &dirname); use Cwd; use subs qw(link); sub link { # This is a cut-down version of installperl:link(). my($from,$to) = @_; my($success) = 0; eval { CORE::link($from, $to) ? $success++ : ($from =~ m#^/afs/# || $to =~ m#^/afs/#) ? die "AFS" # okay inside eval {} : die "Couldn't link $from to $to: $!\n"; }; if ($@) { require File::Copy; File::Copy::copy($from, $to) ? $success++ : warn "Couldn't copy $from to $to: $!\n"; } $success; } # List explicitly here the variables you want Configure to # generate. Metaconfig only looks for shell variables, so you # have to mention them as if they were shell variables, not # %Config entries. Thus you write # $startperl # to ensure Configure will look for $Config{startperl}. # This forces PL files to create target in same directory as PL file. # This is so that make depend always knows where to find PL derivatives. $origdir = cwd; chdir dirname($0); $file = basename($0, '.PL'); $file .= '.com' if $^O eq 'VMS'; open OUT,">$file" or die "Can't create $file: $!"; print "Extracting $file (with variable substitutions)\n"; # In this section, perl variables will be expanded during extraction. # You can use $Config{...} to use Configure variables. print OUT <<"!GROK!THIS!"; $Config{startperl} eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' if \$running_under_some_shell; my \$startperl; my \$perlpath; (\$startperl = <<'/../') =~ s/\\s*\\z//; $Config{startperl} /../ (\$perlpath = <<'/../') =~ s/\\s*\\z//; $Config{perlpath} /../ !GROK!THIS! # In the following, perl variables are not expanded during extraction. print OUT <<'!NO!SUBS!'; $0 =~ s/^.*?(\w+)[\.\w]*$/$1/; # (p)sed - a stream editor # History: Aug 12 2000: Original version. # Mar 25 2002: Rearrange generated Perl program. # Jul 23 2007: Fix bug in regex stripping (M.Thorland) use strict; use integer; use Symbol; =head1 NAME psed - a stream editor =head1 SYNOPSIS psed [-an] script [file ...] psed [-an] [-e script] [-f script-file] [file ...] s2p [-an] [-e script] [-f script-file] =head1 DESCRIPTION A stream editor reads the input stream consisting of the specified files (or standard input, if none are given), processes is line by line by applying a script consisting of edit commands, and writes resulting lines to standard output. The filename `C<->' may be used to read standard input. The edit script is composed from arguments of B<-e> options and script-files, in the given order. A single script argument may be specified as the first parameter. If this program is invoked with the name F, it will act as a sed-to-Perl translator. See L<"SED SCRIPT TRANSLATION">. B returns an exit code of 0 on success or >0 if an error occurred. =head1 OPTIONS =over 4 =item B<-a> A file specified as argument to the B edit command is by default opened before input processing starts. Using B<-a>, opening of such files is delayed until the first line is actually written to the file. =item B<-e> I