ActiveState!

ActivePerl Documentation
Table of Contents

(Usage Statistics)
(about this ver)


* Getting Started
    * Welcome To ActivePerl
    * Release Notes
    * Readme
    * ActivePerl Change Log
* Install Notes
    * Linux
    * Solaris
    * Windows
* ActivePerl Components
    * Overview
    * PPM
    * Windows Specifics
       * OLE Browser
       * PerlScript
       * Perl for ISAPI
       * PerlEZ
* ActivePerl FAQ
    * Introduction
    * Availability & Install
    * Using PPM
    * Docs & Support
    * Windows Specifics
       * Perl for ISAPI
       * Windows 9X/NT/2000
       * Quirks
       * Web Server Config
       * Web programming
       * Programming
       * Modules & Samples
       * Embedding & Extending
       * Using OLE with Perl
* Windows Scripting
    * Active Server Pages
    * Windows Script Host
    * Windows Script Components

Core Perl Documentation


* perl
* perlfaq
* perltoc
* perlbook

* perlsyn
* perldata
* perlop
* perlreftut
* perldsc
* perllol

* perllexwarn
* perldebug

* perlrun
* perlfunc
* perlopentut
* perlvar
* perlsub
* perlmod
* perlpod

* perlstyle
* perlmodlib
* perlmodinstall
* perltrap
* perlport
* perlsec

* perlref
* perlre
* perlform
* perllocale
* perlunicode

* perlboot
* perltoot
* perltootc
* perlobj
* perlbot
* perltie

* perlipc
* perlnumber
* perlfork
* perlthrtut

* perldiag
* perlfaq1
* perlfaq2
* perlfaq3
* perlfaq4
* perlfaq5
* perlfaq6
* perlfaq7
* perlfaq8
* perlfaq9

* perlcompile

* perlembed
* perlxstut
* perlxs
* perlguts
* perlcall
* perlfilter
* perldbmfilter
* perlapi
* perlintern
* perlapio
* perltodo
* perlhack

* perlhist
* perldelta
* perl5005delta
* perl5004delta

* perlamiga
* perlcygwin
* perldos
* perlhpux
* perlmachten
* perlos2
* perlos390
* perlvms
* perlwin32

Pragmas


* attributes
* attrs
* autouse
* base
* blib
* bytes
* charnames
* constant
* diagnostics
* fields
* filetest
* integer
* less
* lib
* locale
* lwpcook
* open
* ops
* overload
* perllocal
* re
* sigtrap
* strict
* subs
* utf8
* vars
* warnings

Libraries


* ActivePerl
    * DocTools
        * TOC
            * RDF
* AnyDBM_File
* Archive
    * Tar
* AutoLoader
* AutoSplit
* B
    * Asmdata
    * Assembler
    * Bblock
    * Bytecode
    * C
    * CC
    * Debug
    * Deparse
    * Disassembler
    * Lint
    * Showlex
    * Stackobj
    * Terse
    * Xref
* Benchmark
* Bundle
    * LWP
* ByteLoader
* Carp
    * Heavy
* CGI
    * Apache
    * Carp
    * Cookie
    * Fast
    * Pretty
    * Push
    * Switch
* Class
    * Struct
* Compress
    * Zlib
* Config
* CPAN
    * FirstTime
    * Nox
* Cwd
* Data
    * Dumper
* DB
* Devel
    * DProf
    * Peek
    * SelfStubber
* Digest
    * HMAC
    * HMAC_MD5
    * HMAC_SHA1
    * MD2
    * MD5
    * SHA1
* DirHandle
* Dumpvalue
* DynaLoader
* English
* Env
* Errno
* Exporter
    * Heavy
* ExtUtils
    * Command
    * Embed
    * Install
    * Installed
    * Liblist
    * MakeMaker
    * Manifest
    * Miniperl
    * Mkbootstrap
    * Mksymlists
    * MM_Cygwin
    * MM_OS2
    * MM_Unix
    * MM_VMS
    * MM_Win32
    * Packlist
    * testlib
* Fatal
* Fcntl
* File
    * Basename
    * CheckTree
    * Compare
    * Copy
    * CounterFile
    * DosGlob
    * Find
    * Glob
    * Listing
    * Path
    * Spec
        * Functions
        * Mac
        * OS2
        * Unix
        * VMS
        * Win32
    * stat
* FileCache
* FileHandle
* FindBin
* Font
    * AFM
* Getopt
    * Long
    * Std
* HTML
    * AsSubs
    * Element
    * Entities
    * Filter
    * Form
    * FormatPS
    * Formatter
    * FormatText
    * HeadParser
    * LinkExtor
    * Parse
    * Parser
    * TokeParser
    * TreeBuilder
* HTTP
    * Cookies
    * Daemon
    * Date
    * Headers
        * Util
    * Message
    * Negotiate
    * Request
        * Common
    * Response
    * Status
* I18N
    * Collate
* IO
    * Dir
    * File
    * Handle
    * Pipe
    * Poll
    * Seekable
    * Select
    * Socket
        * INET
        * UNIX
* IPC
    * Msg
    * Open2
    * Open3
    * Semaphore
    * SysV
* LWP
    * Debug
    * MediaTypes
    * MemberMixin
    * Protocol
    * RobotUA
    * Simple
    * UserAgent
* Math
    * BigFloat
    * BigInt
    * Complex
    * Trig
* MD5
* MIME
    * Base64
    * QuotedPrint
* NDBM_File
* Net
    * Cmd
    * Config
    * Domain
    * DummyInetd
    * FTP
    * hostent
    * libnetFAQ
    * netent
    * Netrc
    * NNTP
    * PH
    * Ping
    * POP3
    * protoent
    * servent
    * SMTP
    * SNPP
    * Time
* O
* ODBM_File
* Opcode
* Pod
    * Checker
    * Find
    * Html
    * InputObjects
    * Man
    * Parser
    * ParseUtils
    * Plainer
    * Select
    * Text
        * Color
        * Termcap
    * Usage
* POSIX
* PPM
    * SOAPClient
    * SOAPServer
* Safe
* SDBM_File
* Search
    * Dict
* SelectSaver
* SelfLoader
* SHA
* Shell
* SOAP
    * Defs
    * Envelope
    * EnvelopeMaker
    * GenericHashSerializer
    * GenericInputStream
    * GenericScalarSerializer
    * Lite
    * OutputStream
    * Packager
    * Parser
    * Transport
        * HTTP
            * Apache
            * CGI
            * Client
            * Server
        * LOCAL
        * MAILTO
        * POP3
        * TCP
    * TypeMapper
* Socket
* Symbol
* Sys
    * Hostname
    * Syslog
* Term
    * ANSIColor
    * Cap
    * Complete
    * ReadLine
* Test
    * Harness
* Text
    * Abbrev
    * ParseWords
    * Soundex
    * Tabs
    * Wrap
* Thread
    * Queue
    * Semaphore
    * Signal
    * Specific
* Tie
    * Array
    * Handle
    * Hash
    * RefHash
    * Scalar
    * SubstrHash
* Time
    * gmtime
    * Local
    * localtime
    * tm
* UDDI
    * Lite
* UNIVERSAL
* URI
    * data
    * Escape
    * file
    * Heuristic
    * ldap
    * URL
    * WithBase
* User
    * grent
    * pwent
* Win32
    * AuthenticateUser
    * ChangeNotify
    * Clipboard
    * Console
    * Event
    * EventLog
    * File
    * FileSecurity
    * Internet
    * IPC
    * Mutex
    * NetAdmin
    * NetResource
    * ODBC
    * OLE
        * Const
        * Enum
        * NEWS
        * NLS
        * TPJ
        * Variant
    * PerfLib
    * Pipe
    * Process
    * Registry
    * Semaphore
    * Service
    * Sound
    * TieRegistry
* Win32API
    * File
    * Net
    * Registry
* WWW
    * RobotRules
        * AnyDBM_File
* XML
    * Element
    * Parser
        * Expat
    * PPD
    * PPMConfig
    * ValidatingElement
* XSLoader

 perl - very old suspect documentation on porting.


NAME

Tcl vs perl - very old suspect documentation on porting.


SUPPORTED PLATFORMS

  • Linux
  • Solaris
  • Windows
This module is not included with the standard ActivePerl distribution. It is available as a separate download using PPM.

DESCRIPTION

This isn't really a .pod yet, nor is it Tcl vs perl it is a copy of John's comparison of Malcolm's original perl/Tk port with the current one. It is also out-of-date in places.

  From: john@WPI.EDU (John Stoffel )
  Here are some thoughts on the new Tk extension and how I think the
  organization of the commands looks.  Mostly, I'm happy with it, it
  makes some things more organized and more consistent with tcl/tk, but
  since the overlying language is so different, I don't think we need to
  follow exactly the tcl/tk model for how to call the language.
  The basic structure of the Tk program is:
      require Tk;
      $top = MainWindow->new();
      #
      # create widgets
      #
      Tk::MainLoop;
      sub method1 {
      }
      sub methodN {
      }
  This is pretty much the same as tkperl5a5, with some cosmetic naming
  changes, and some more useful command name and usage changes.  A quick
  comparison in no particular order follows:
  tkperl5a5                             Tk
  -------------------------------       -----------------------------------
  $top=tkinit(name,display,sync);       $top=MainWindow->new();
  tkpack $w, ... ;              $w->pack(...)
  $w = Class::new($top, ...);   $w = $top->Class(...);
  tkmainloop;                   Tk::MainLoop;
  tkbind($w,"<key>",sub);               $w->bind("<key>",sub);
  tkdelete($w, ...);            $w->delete(...);
  $w->scanmark(...);            $w->scan("mark", ...);
  $w->scandragto(...);          $w->scan("dragto", ...);
  $w->tkselect();                       $w->Select();
  $w->selectadjust(...);                $w->selection("adjust", ...);
  $w->selectto(...);            $w->selection("to", ...);
  $w->selectfrom(...);          $w->selection("from", ...);
  $w->tkindex(...);             $w->index(...);
  tclcmd("xxx",...);              &Tk::xxx(...)    # all Tk commands, but no Tcl at all
  tclcmd("winfo", xxx, $w, ...);  $w->xxx(...);
                                $w->mark(...);
                                $w->tag(...);
  $w->grabstatus();             $w->grab("status");
  $w->grabrelease(...);         $w->grab("release", ...);
  focus($w);                    $w->focus;
  update();                     Tk->update();
  idletasks();                  Tk->update("idletasks");
  wm("cmd",$w, ...);            $w->cmd(...);
  destroy($w);                  $w->destroy();
                                Tk::option(...);
                                  $w->OptionGet(name,Class)
                                $w->place(...)
                                Tk::property(...);
  $w = Entry::new($parent,...)
  is now
  $w = $parent->Entry(...)
  As this allows new to be inherited from a Window class.
    -method=>x,-slave=>y
   is now
    -command => [x,y]
  1st element of list is treated as "method" if y is an object reference.
  (You can have -command => [a,b,c,d,e] too; b..e get passed as args).
  Object references are now hashes rather than scalars and there
  is only ever one such per window.  The Tcl_CmdInfo and PathName
  are entries in the hash.
  (This allows derived classes to
  re-bless the hash and keep their on stuff in it too.)
  Tk's "Tcl_Interp" is in fact a ref to "." window.
  You can find all the Tk windows descended from it as their object
  references get added (by PathName) into this hash.
  $w->MainWindow returns this hash from any window.
  I think that it should extend to multiple tkinits / Tk->news
  with different Display's - if Tk code does.
  Finally "bind" passes window as "extra" (or only)
  argument. Thus
  Tk::Button->bind(<Any-Enter>,"Enter");
  Binds Enter events to Tk::Button::Enter by default
  but gets called as $w->Enter so derived class of Button can just
  define its own Enter method. &EvWref and associated globals and race
  conditions are no longer needed.
  One thing to beware of : commands bound to events with $widget->bind
  follow same pattern, but get passed extra args :
  $widget->bind(<Any-1>,[sub {print shift}, $one, $two ]);
  When sub gets called it has :
     $widget $one $two
  passed.
  1st extra arg is reference to the per-widget hash that serves as the
  perl object for the widget.
  Every time an XEvent a reference to a special class is placed
  in the widget hash. It can be retrieved by $w->XEvent method.
  The methods of the XEvent class are the
  Tcl/Tk % special characters.
  Thus:
  $widget->bind(<Any-KeyPress>,
                sub {
                 my $w = shift;
                 my $e = $w->XEvent;
                 print $w->PathName," ",$e->A," pressed ,$e->xy,"\n");
                });
  XEvent->xy is a special case which returns "@" . $e->x . "," . $e->y
  which is common in Text package.
  Because of passing a blessed widget hash to "bound" subs they can be
  bound to (possibly inherited) methods of the widget's class:
  Class->bind(<Any-Down>,Down);
  sub Class::Down
  {
   my $w = shift;
   # handle down arrow
  }
  Also:
  -command and friends can take a list the 1st element can be a ref to
  as sub or a method name. Remaining elements are passed as args to the
  sub at "invoke" time. Thus :
  $b= $w->Button(blah blah, '-command' => [sub{print shift} , $fred ]);
  Should do the trick, provided $fred is defined at time of button creation.
  Thus 1st element of list is equivalent to Malcolm's -method and second
  would be his -slave.  Any further elements are a bonus and avoid
  having to pass ref to an array/hash as a slave.

 perl - very old suspect documentation on porting.