home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _be630f7a19f3fba8db8910f8903a709e < prev    next >
Text File  |  2000-03-24  |  5KB  |  367 lines

  1. @rem = '--*-Perl-*--
  2. @echo off
  3. if "%OS%" == "Windows_NT" goto WinNT
  4. perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
  5. goto endofperl
  6. :WinNT
  7. perl -x -S "%0" %*
  8. if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
  9. if %errorlevel% == 9009 echo You do not have Perl in your PATH.
  10. if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
  11. goto endofperl
  12. @rem ';
  13. #!perl
  14. #line 15
  15.     eval 'exec D:\p4-view\main\Apps\Gecko\MSI\data\ActivePerl\Perl\bin\perl.exe -S $0 ${1+"$@"}'
  16.     if $running_under_some_shell;
  17.  
  18. =head1 NAME
  19.  
  20. pl2pm - Rough tool to translate Perl4 .pl files to Perl5 .pm modules.
  21.  
  22. =head1 SYNOPSIS
  23.  
  24. B<pl2pm> F<files>
  25.  
  26. =head1 DESCRIPTION
  27.  
  28. B<pl2pm> is a tool to aid in the conversion of Perl4-style .pl
  29. library files to Perl5-style library modules.  Usually, your old .pl
  30. file will still work fine and you should only use this tool if you
  31. plan to update your library to use some of the newer Perl 5 features,
  32. such as AutoLoading.
  33.  
  34. =head1 LIMITATIONS
  35.  
  36. It's just a first step, but it's usually a good first step.
  37.  
  38. =head1 AUTHOR
  39.  
  40. Larry Wall <larry@wall.org>
  41.  
  42. =cut
  43.  
  44. while (<DATA>) {
  45.     chop;
  46.     $keyword{$_} = 1;
  47. }
  48.  
  49. undef $/;
  50. $* = 1;
  51. while (<>) {
  52.     $newname = $ARGV;
  53.     $newname =~ s/\.pl$/.pm/ || next;
  54.     $newname =~ s#(.*/)?(\w+)#$1\u$2#;
  55.     if (-f $newname) {
  56.     warn "Won't overwrite existing $newname\n";
  57.     next;
  58.     }
  59.     $oldpack = $2;
  60.     $newpack = "\u$2";
  61.     @export = ();
  62.     print "$oldpack => $newpack\n" if $verbose;
  63.  
  64.     s/\bstd(in|out|err)\b/\U$&/g;
  65.     s/(sub\s+)(\w+)(\s*\{[ \t]*\n)\s*package\s+$oldpack\s*;[ \t]*\n+/${1}main'$2$3/ig;
  66.     if (/sub\s+main'/) {
  67.     @export = m/sub\s+main'(\w+)/g;
  68.     s/(sub\s+)main'(\w+)/$1$2/g;
  69.     }
  70.     else {
  71.     @export = m/sub\s+([A-Za-z]\w*)/g;
  72.     }
  73.     @export_ok = grep($keyword{$_}, @export);
  74.     @export = grep(!$keyword{$_}, @export);
  75.     @export{@export} = (1) x @export;
  76.     s/(^\s*);#/$1#/g;
  77.     s/(#.*)require ['"]$oldpack\.pl['"]/$1use $newpack/;
  78.     s/(package\s*)($oldpack)\s*;[ \t]*\n+//ig;
  79.     s/([\$\@%&*])'(\w+)/&xlate($1,"",$2)/eg;
  80.     s/([\$\@%&*]?)(\w+)'(\w+)/&xlate($1,$2,$3)/eg;
  81.     if (!/\$\[\s*\)?\s*=\s*[^0\s]/) {
  82.     s/^\s*(local\s*\()?\s*\$\[\s*\)?\s*=\s*0\s*;[ \t]*\n//g;
  83.     s/\$\[\s*\+\s*//g;
  84.     s/\s*\+\s*\$\[//g;
  85.     s/\$\[/0/g;
  86.     }
  87.     s/open\s+(\w+)/open($1)/g;
  88.  
  89.     if (s/\bdie\b/croak/g) {
  90.     $carp = "use Carp;\n";
  91.     s/croak "([^"]*)\\n"/croak "$1"/g;
  92.     }
  93.     else {
  94.     $carp = "";
  95.     }
  96.     if (@export_ok) {
  97.     $export_ok = "\@EXPORT_OK = qw(@export_ok);\n";
  98.     }
  99.     else {
  100.     $export_ok = "";
  101.     }
  102.  
  103.     open(PM, ">$newname") || warn "Can't create $newname: $!\n";
  104.     print PM <<"END";
  105. package $newpack;
  106. require 5.000;
  107. require Exporter;
  108. $carp
  109. \@ISA = qw(Exporter);
  110. \@EXPORT = qw(@export);
  111. $export_ok
  112. $_
  113. END
  114. }
  115.  
  116. sub xlate {
  117.     local($prefix, $pack, $ident) = @_;
  118.     if ($prefix eq '' && $ident =~ /^(t|s|m|d|ing|ll|ed|ve|re)$/) {
  119.     "${pack}'$ident";
  120.     }
  121.     elsif ($pack eq "" || $pack eq "main") {
  122.     if ($export{$ident}) {
  123.         "$prefix$ident";
  124.     }
  125.     else {
  126.         "$prefix${pack}::$ident";
  127.     }
  128.     }
  129.     elsif ($pack eq $oldpack) {
  130.     "$prefix${newpack}::$ident";
  131.     }
  132.     else {
  133.     "$prefix${pack}::$ident";
  134.     }
  135. }
  136. __END__
  137. AUTOLOAD
  138. BEGIN
  139. CORE
  140. DESTROY
  141. END
  142. abs
  143. accept
  144. alarm
  145. and
  146. atan2
  147. bind
  148. binmode
  149. bless
  150. caller
  151. chdir
  152. chmod
  153. chop
  154. chown
  155. chr
  156. chroot
  157. close
  158. closedir
  159. cmp
  160. connect
  161. continue
  162. cos
  163. crypt
  164. dbmclose
  165. dbmopen
  166. defined
  167. delete
  168. die
  169. do
  170. dump
  171. each
  172. else
  173. elsif
  174. endgrent
  175. endhostent
  176. endnetent
  177. endprotoent
  178. endpwent
  179. endservent
  180. eof
  181. eq
  182. eval
  183. exec
  184. exit
  185. exp
  186. fcntl
  187. fileno
  188. flock
  189. for
  190. foreach
  191. fork
  192. format
  193. formline
  194. ge
  195. getc
  196. getgrent
  197. getgrgid
  198. getgrnam
  199. gethostbyaddr
  200. gethostbyname
  201. gethostent
  202. getlogin
  203. getnetbyaddr
  204. getnetbyname
  205. getnetent
  206. getpeername
  207. getpgrp
  208. getppid
  209. getpriority
  210. getprotobyname
  211. getprotobynumber
  212. getprotoent
  213. getpwent
  214. getpwnam
  215. getpwuid
  216. getservbyname
  217. getservbyport
  218. getservent
  219. getsockname
  220. getsockopt
  221. glob
  222. gmtime
  223. goto
  224. grep
  225. gt
  226. hex
  227. if
  228. index
  229. int
  230. ioctl
  231. join
  232. keys
  233. kill
  234. last
  235. lc
  236. lcfirst
  237. le
  238. length
  239. link
  240. listen
  241. local
  242. localtime
  243. log
  244. lstat
  245. lt
  246. m
  247. mkdir
  248. msgctl
  249. msgget
  250. msgrcv
  251. msgsnd
  252. my
  253. ne
  254. next
  255. no
  256. not
  257. oct
  258. open
  259. opendir
  260. or
  261. ord
  262. pack
  263. package
  264. pipe
  265. pop
  266. print
  267. printf
  268. push
  269. q
  270. qq
  271. quotemeta
  272. qw
  273. qx
  274. rand
  275. read
  276. readdir
  277. readline
  278. readlink
  279. readpipe
  280. recv
  281. redo
  282. ref
  283. rename
  284. require
  285. reset
  286. return
  287. reverse
  288. rewinddir
  289. rindex
  290. rmdir
  291. s
  292. scalar
  293. seek
  294. seekdir
  295. select
  296. semctl
  297. semget
  298. semop
  299. send
  300. setgrent
  301. sethostent
  302. setnetent
  303. setpgrp
  304. setpriority
  305. setprotoent
  306. setpwent
  307. setservent
  308. setsockopt
  309. shift
  310. shmctl
  311. shmget
  312. shmread
  313. shmwrite
  314. shutdown
  315. sin
  316. sleep
  317. socket
  318. socketpair
  319. sort
  320. splice
  321. split
  322. sprintf
  323. sqrt
  324. srand
  325. stat
  326. study
  327. sub
  328. substr
  329. symlink
  330. syscall
  331. sysread
  332. system
  333. syswrite
  334. tell
  335. telldir
  336. tie
  337. time
  338. times
  339. tr
  340. truncate
  341. uc
  342. ucfirst
  343. umask
  344. undef
  345. unless
  346. unlink
  347. unpack
  348. unshift
  349. untie
  350. until
  351. use
  352. utime
  353. values
  354. vec
  355. wait
  356. waitpid
  357. wantarray
  358. warn
  359. while
  360. write
  361. x
  362. xor
  363. y
  364.  
  365. __END__
  366. :endofperl
  367.