Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

366 lines
4.9 KiB

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