SlideShare a Scribd company logo
Perl                      beta

   use
ab




         *{quot;Abuse Perlquot;} = sub {
            quot;by Casey Westnquot;
         };

         print quot;Abuse Perlquot;->();
Perl                                    beta

   use
ab


         *{'
         '} = sub {
            print quot;Abuse Perl by Casey Westnquot;
         };

         <<_->()

         _
Perl                        beta

   use
ab

         *{'
         '} = sub { print shift };

         <<_->(<<_)

         _
         Abuse Perl by Casey West
         _

         # via Abigail
Perl                                    beta

   use
ab



         *{'
         '} = sub {
            print quot;Abuse Perl by Casey Westnquot;
         };

         '
         '->();
Perl                                     beta

   use
ab
         package Employee;
         use base 'Class::Accessor::Fast';

         Employee->mk_accessors qw[name title];

         sub as_string {
           my $self = shift;
           sprintf quot;%s: %snquot;,
             $self->title,
             $self->name;
         }
Perl                                      beta

   use
ab


         $casey = Employee->new({
           name => quot;Casey Westquot;,
           title => quot;Member of Technical Staffquot;,
         });

         print $casey->as_string;

         #Member of Technical Staff: Casey West
Perl                                    beta

   use
ab

         *Employee::as_string = sub {
            my $self = shift;
            sprintf quot;%s is a %snquot;,
              $self->name,
              $self->title;
         };

         print $casey->as_string;

         #Casey West is a Member of Technical Staff
Perl                             beta

   use
ab


         INIT {
           *Employee::as_string = sub {
              my $self = shift;
              sprintf quot;%s is a %snquot;,
                $self->name,
                $self->title;
           };
         }
Perl                               beta

   use
ab


         INIT {
           *Employee::as_string_orig
             = *Employee::as_string;

             *Employee::as_string = sub {
                uc shift->as_string_orig;
             };
         }
Perl                               beta

   use
ab


         INIT {
           *Employee::as_string_orig
             = &Employee::as_string;

             *Employee::as_string = sub {
                uc shift->as_string_orig;
             };
         }
Perl                                beta

   use
ab
         package FollowVar;
         use Tie::Scalar;

         @ISA = ('Tie::StdScalar');

         sub FETCH {
           warn quot;>>> Called at quot;
             . join(':', caller)
             . quot;nquot;;
           return shift->SUPER::FETCH(@_);
         }
Perl                                    beta

   use
ab       tie $name, 'FollowVar';
         $name = quot;Casey Westquot;;

         print Email::Address->new(
           $name,
           'casey@geeknest.com',
           ''
         ), quot;nquot;;

         # >>> Called at Email::Address:
         #    /Library/Perl/5.8.6/Email/Address.pm:
         #    216
         # Casey West <casey@geeknest.com>
Perl                                            beta

    package FollowHash;
   use
ab     use Tie::Hash; @ISA = ('Tie::StdHash');

    for my $sub (qw[FETCH STORE DELETE CLEAR
      FIRSTKEY NEXTKEY]) {
      *{$sub} = sub {
        $self = shift;
        $call = join':', (caller)[0,2];
        $args = join',', map{$_ || 'undef'}@_;

            warn quot;>>> $sub($args) by [$call]nquot;;
            $sup = quot;SUPER::$subquot;;
            $self->$sup(@_);
        }
    }
Perl                                    beta

   use
ab

         use Template;

         tie %vars, 'FollowHash';

         %vars = (name => quot;Casey Westquot;);

         Template->new->process(<<__TT__, %vars);
         Hello, my name is [% name %].
         __TT__
Perl                                     beta

   use CLEAR() by [main:23]
ab
    STORE(name,Casey West) by [main:23]
    STORE(template,
      Template::Document=HASH(0x1866920))
      by [Template::Service:79]
    FETCH(import)     by [Template::Stash:448]
    FIRSTKEY()        by [Template::Stash:456]
    NEXTKEY(template) by [Template::Stash:456]
    NEXTKEY(name)     by [Template::Stash:456]
    FETCH(template)   by [Template::Stash:456]
    FETCH(name)       by [Template::Stash:456]
    DELETE(template)
      by [Template::Service:128]
    Hello, my name is Casey West.
Perl                                       beta

   use sub parse_sheet_save {
ab

       my ($rest, $linetype, $coord, $type,
    $value, $valuetype, $formula, $style,
    $namename, $namedesc, $fontnum,
    $layoutnum, $colornum, $check, $maxrow,
    $maxcol, $row, $col);

       my ($lines, $sheetdata) = @_;

       my $errortext;

       # Initialize sheetdata structure
       # ...
Perl                                                                                                                                           beta

   use
ab
         #   ########
         #
         #   $ok = parse_sheet_save(@lines, %sheetdata)
         #
         #   Sheet input routine. Fills %sheetdata given lines of text @lines.
         #
         #   Currently always returns nothing.
         #
         #   Sheet save format:
         #
         #   linetype:param1:param2:...
         #
         #   Linetypes are:
         #
         #     version:versionname - version of this format. Currently 1.3.
         #
         #     cell:coord:type:value...:type:value... - Types are as follows:
         #
         #        v:value - straight numeric value
         #        t:value - straight text/wiki-text in cell, encoded to handle , :, newlines
         #        vt:fulltype:value - value with value type/subtype
         #        vtf:fulltype:value:formulatext - formula resulting in value with value type/subtype, value and text encoded
         #        vtc:fulltype:value:valuetext - formatted text constant resulting in value with value type/subtype, value and text encoded
         #        vf:fvalue:formulatext - formula resulting in value, value and text encoded (obsolete: only pre format version 1.1)
         #           fvalue - first char is quot;Nquot; for numeric value, quot;Tquot; for text value, quot;Hquot; for HTML value, rest is the value
         #        e:errortext - Error text. Non-blank means formula parsing/calculation results in error.
         #        b:topborder#:rightborder#:bottomborder#:leftborder# - border# in sheet border list or blank if none
         #        l:layout# - number in cell layout list
         #        f:font# - number in sheet fonts list
         #        c:color# - sheet color list index for text
         #        bg:color# - sheet color list index for background color
         #        cf:format# - sheet cell format number for explicit format (align:left, etc.)
         #        cvf:valueformat# - sheet cell value format number (obsolete: only pre format v1.2)
         #        tvf:valueformat# - sheet cell text value format number
         #        ntvf:valueformat# - sheet cell non-text value format number
         #        colspan:numcols - number of columns spanned in merged cell
         #        rowspan:numrows - number of rows spanned in merged cell
         #        cssc:classname - name of CSS class to be used for cell when published instead of one calculated here
         #        csss:styletext - explicit CSS style information, encoded to handle :, etc.
         #        mod:allow - if quot;yquot; allow modification of cell for live quot;viewquot; recalc
         #
         #     col:
         #        w:widthval - number, quot;autoquot; (no width in <col> tag), number%, or blank (use default)
         #        hide: - yes/no, no is assumed if missing
         #     row:
         #        hide - yes/no, no is assumed if missing
         #
         #     sheet:
         #        c:lastcol - number
         #        r:lastrow - number
         #        w:defaultcolwidth - number, quot;autoquot;, number%, or blank (default->80)
         #        h:defaultrowheight - not used
         #        tf:format# - cell format number for sheet default for text values
         #        ntf:format# - cell format number for sheet default for non-text values (i.e., numbers)
         #        layout:layout# - default cell layout number in cell layout list
         #        font:font# - default font number in sheet font list
         #        vf:valueformat# - default number value format number in sheet valueformat list (obsolete: only pre format version 1.2)
         #        ntvf:valueformat# - default non-text (number) value format number in sheet valueformat list
         #        tvf:valueformat# - default text value format number in sheet valueformat list
         #        color:color# - default number for text color in sheet color list
         #        bgcolor:color# - default number for background color in sheet color list
         #        circularreferencecell:coord - cell coord with a circular reference
         #        recalc:value - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc
         #        needsrecalc:value - yes/no (no is default). If quot;yesquot;, formula values are not up to date
         #
         #     name:name:description:value - name definition, name in uppercase, with value being quot;B5quot;, quot;A1:B7quot;, or quot;=formulaquot;
         #     font:fontnum:value - text of font definition (style weight size family) for font fontnum
         #                          quot;*quot; for quot;style weightquot;, size, or family, means use default (first look to sheet, then builtin)
         #     color:colornum:rgbvalue - text of color definition (e.g., rgb(255,255,255)) for color colornum
         #     border:bordernum:value - text of border definition (thickness style color) for border bordernum
         #     layout:layoutnum:value - text of vertical alignment and padding style for cell layout layoutnum:
         #                              vertical-alignment:vavalue;padding topval rightval bottomval leftval;
         #     cellformat:cformatnum:value - text of cell alignment (left/center/right) for cellformat cformatnum
         #     valueformat:vformatnum:value - text of number format (see format_value_for_display) for valueformat vformatnum (changed in v1.2)
         #     clipboardrange:upperleftcoord:bottomrightcoord - origin of clipboard data. Not present if clipboard empty.
         #        There must be a clipboardrange before any clipboard lines
         #     clipboard:coord:type:value:... - clipboard data, in same format as cell data
         #
         #   The resulting $sheetdata data structure is as follows:
         #
         #    $sheetdata{version} - version of save file read in
         #    $sheetdata{datatypes}->{$coord} - Origin of {datavalues} value:
         #                                          v - typed in numeric value of some sort, constant, no formula
         #                                          t - typed in text, constant, no formula
         #                                          f - result of formula calculation ({formulas} has formula to calculate)
         #                                          c - constant of some sort with typed in text in {formulas} and value in {datavalues}
         #    $sheetdata{formulas}->{$coord} - Text of formula if {datatypes} is quot;fquot;, no leading quot;=quot;, or text of constant if quot;cquot;
         #    $sheetdata{datavalues}->{$coord} - a text or numeric value ready to be formatted for display or used in calculation
         #    $sheetdata{valuetypes}->{$coord} - the value type of the datavalue as 1 or more characters
         #                                        First char is quot;nquot; for numeric or quot;tquot; for text
         #                                        Second chars, if present, are sub-type, like quot;lquot; for logical (0=false, 1=true)
         #    $sheetdata{cellerrors}->{$coord} - If non-blank, error text for error in formula calculation
         #    $sheetdata{cellattribs}->{$coord}->
         #       {coord} - coord of cell - existence means non-blank cell
         #       {bt}, {br}, {bb}, {bl} - border number or null if no border
         #       {layout} - cell layout number or blank for default
         #       {font} - font number or blank for default
         #       {color} - color number for text or blank for default
         #       {bgcolor} - color number for the cell background or blank for default
         #       {cellformat} - cell format number if not default - controls horizontal alignment
         #       {textvalueformat} - value format number if not default - controls how the cell's text values are formatted into text for display
         #       {nontextvalueformat} - value format number if not default - controls how the cell's non-text values are turned into text for display
         #       {colspan}, {rowspan} - column span and row span for merged cells or blank for 1
         #       {cssc}, {csss} - explicit CSS class and CSS style for cell
         #       {mod} - if quot;yquot; allow modification in live view
         #    $sheetdata{colattribs}->{$colcoord}->
         #       {width} - column width if not default
         #       {hide} - hide column if yes
         #    $sheetdata{rowattribs}->{$rowcoord}->
         #       {height} - ignored
         #       {hide} - hide row if yes
         #    $sheetdata{sheetattribs}->{$attrib}->
         #       {lastcol} - number of columns in sheet
         #       {lastrow} - number of rows in sheet (more may be displayed when editing)
         #       {defaultcolwidth} - number, quot;autoquot;, number%, or blank (default->80)
         #       {defaultrowheight} - not used
         #       {defaulttextformat} - cell format number for sheet default for text values
         #       {defaultnontextformat} - cell format number for sheet default for non-text values (i.e., numbers)
         #       {defaultlayout} - default cell layout number in sheet cell layout list
         #       {defaultfont} - default font number in sheet font list
         #       {defaulttextvalueformat} - default text value format number in sheet valueformat list
         #       {defaultnontextvalueformat} - default number value format number in sheet valueformat list
         #       {defaultcolor} - default number for text color in sheet color list
         #       {defaultbgcolor} - default number for background color in sheet color list
         #       {circularreferencecell} - cell coord with a circular reference
         #       {recalc} - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc
         #       {needsrecalc} - yes/no (no is default). If quot;yesquot;, formula values are not up to date
         #    $sheetdata{names}->{$name}-> - name is uppercase
         #       {desc} - description (optional)
         #       {definiton} - in the form of B5, A1:B7, or =formula
         #    $sheetdata{fonts}->[$index] - font specifications addressable by array position
         #    $sheetdata{fonthash}->{$value} - hash with font specification as keys and {fonts}->[] index position as values
         #    $sheetdata{colors}->[$index] - color specifications addressable by array position
         #    $sheetdata{colorhash}->{$value} - hash with color specification as keys and {colors}->[] index position as values
         #    $sheetdata{borderstyles}->[$index] - border style specifications addressable by array position
         #    $sheetdata{borderstylehash}->{$value} - hash with border style specification as keys and {borderstyles}->[] index position as values
         #    $sheetdata{layoutstyles}->[$index] - cell layout specifications addressable by array position
         #    $sheetdata{layoutstylehash}->{$value} - hash with cell layout specification as keys and {layoutstyle}->[] index position as values
         #    $sheetdata{cellformats}->[$index] - cell format specifications addressable by array position
         #    $sheetdata{cellformathash}->{$value} - hash with cell format specification as keys and {cellformats}->[] index position as values
         #    $sheetdata{valueformats}->[$index] - value format specifications addressable by array position
         #    $sheetdata{valueformathash}->{$value} - hash with value format specification as keys and {valueformats}->[] index position as values
         #    $sheetdata{clipboard}-> - the sheet's clipboard
         #       {range} - coord:coord range of where the clipboard contents came from or null if empty
         #       {datavalues} - like $sheetdata{datavalues} but for clipboard copy of cells
         #       {datatypes} - like $sheetdata{datatypes} but for clipboard copy of cells
         #       {valuetypes} - like $sheetdata{valuetypes} but for clipboard copy of cells
         #       {formulas} - like $sheetdata{formulas} but for clipboard copy of cells
         #       {cellerrors} - like $sheetdata{cellerrors} but for clipboard copy of cells
         #       {cellattribs} - like $sheetdata{cellattribs} but for clipboard copy of cells
         #    $sheetdata{loaderror} - if non-blank, there was an error loading this sheet and this is the text of that error
         #
         #   ########
Perl                                    beta

   use
ab

         # $sheetdata{sheetattribs}->{$attrib}->
         #   {lastcol} - number of columns in sheet
         #   {lastrow} - number of rows in sheet
         #     (more may be displayed when editing)
         #   {defaultcolwidth} - number, quot;autoquot;,
         #     number%, or blank (default->80)
         #   {defaultrowheight} - not used
         #   {defaulttextformat} - cell format
         #     number for sheet default for text
         #     values
Perl                                        beta

         package Lab;                use Data::Dumper;
   use
ab
         $PKG    =   'SocialCalc::Sheet';
         $FUNC   =   'parse_sheet_save';
         $SYM    =   quot;$PKG::$FUNCquot;;
         $ORIG   =   quot;$SYM_origquot;;

         eval quot;require $PKG;quot;;       *$ORIG = &{$SYM};

         *$SYM = sub{
            print(Dumper(quot;INPUTquot;, [@_]));
            my @res = $ORIG->(@_);
            print(Dumper(quot;OUTPUTquot;, [@res]));
            return @res;
         };
Perl                             beta

   use
ab



         require App::SocialCalc;
         use Lab;
         do shift;

         # perl -I $HOME -I lib
         #   ~/lab.pl bin/socialcalc.pl
Perl                                         beta

   use $VAR1 = 'INPUT';
ab
    $VAR2 = [
                [
                    'version:1.3
    ',
                   'cell:A1:t:= A page to try
    some of   wikiCalc's features =nnYou
    can use   this page to ...'
                 ]
              ];
    $VAR1 =   'OUTPUT';
    $VAR2 =   [
                 '14'
              ];
Perl                                                                                                                                           beta

   use
ab
         #   ########
         #
         #   $ok = parse_sheet_save(@lines, %sheetdata)
         #
         #   Sheet input routine. Fills %sheetdata given lines of text @lines.
         #
         #   Currently always returns nothing.
         #
         #   Sheet save format:
         #
         #   linetype:param1:param2:...
         #
         #   Linetypes are:
         #
         #     version:versionname - version of this format. Currently 1.3.
         #
         #     cell:coord:type:value...:type:value... - Types are as follows:
         #
         #        v:value - straight numeric value
         #        t:value - straight text/wiki-text in cell, encoded to handle , :, newlines
         #        vt:fulltype:value - value with value type/subtype
         #        vtf:fulltype:value:formulatext - formula resulting in value with value type/subtype, value and text encoded
         #        vtc:fulltype:value:valuetext - formatted text constant resulting in value with value type/subtype, value and text encoded
         #        vf:fvalue:formulatext - formula resulting in value, value and text encoded (obsolete: only pre format version 1.1)
         #           fvalue - first char is quot;Nquot; for numeric value, quot;Tquot; for text value, quot;Hquot; for HTML value, rest is the value
         #        e:errortext - Error text. Non-blank means formula parsing/calculation results in error.
         #        b:topborder#:rightborder#:bottomborder#:leftborder# - border# in sheet border list or blank if none
         #        l:layout# - number in cell layout list
         #        f:font# - number in sheet fonts list
         #        c:color# - sheet color list index for text
         #        bg:color# - sheet color list index for background color
         #        cf:format# - sheet cell format number for explicit format (align:left, etc.)
         #        cvf:valueformat# - sheet cell value format number (obsolete: only pre format v1.2)
         #        tvf:valueformat# - sheet cell text value format number
         #        ntvf:valueformat# - sheet cell non-text value format number
         #        colspan:numcols - number of columns spanned in merged cell
         #        rowspan:numrows - number of rows spanned in merged cell
         #        cssc:classname - name of CSS class to be used for cell when published instead of one calculated here
         #        csss:styletext - explicit CSS style information, encoded to handle :, etc.
         #        mod:allow - if quot;yquot; allow modification of cell for live quot;viewquot; recalc
         #
         #     col:
         #        w:widthval - number, quot;autoquot; (no width in <col> tag), number%, or blank (use default)
         #        hide: - yes/no, no is assumed if missing
         #     row:
         #        hide - yes/no, no is assumed if missing
         #
         #     sheet:
         #        c:lastcol - number
         #        r:lastrow - number
         #        w:defaultcolwidth - number, quot;autoquot;, number%, or blank (default->80)
         #        h:defaultrowheight - not used
         #        tf:format# - cell format number for sheet default for text values
         #        ntf:format# - cell format number for sheet default for non-text values (i.e., numbers)
         #        layout:layout# - default cell layout number in cell layout list
         #        font:font# - default font number in sheet font list
         #        vf:valueformat# - default number value format number in sheet valueformat list (obsolete: only pre format version 1.2)
         #        ntvf:valueformat# - default non-text (number) value format number in sheet valueformat list
         #        tvf:valueformat# - default text value format number in sheet valueformat list
         #        color:color# - default number for text color in sheet color list
         #        bgcolor:color# - default number for background color in sheet color list
         #        circularreferencecell:coord - cell coord with a circular reference
         #        recalc:value - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc
         #        needsrecalc:value - yes/no (no is default). If quot;yesquot;, formula values are not up to date
         #
         #     name:name:description:value - name definition, name in uppercase, with value being quot;B5quot;, quot;A1:B7quot;, or quot;=formulaquot;
         #     font:fontnum:value - text of font definition (style weight size family) for font fontnum
         #                          quot;*quot; for quot;style weightquot;, size, or family, means use default (first look to sheet, then builtin)
         #     color:colornum:rgbvalue - text of color definition (e.g., rgb(255,255,255)) for color colornum
         #     border:bordernum:value - text of border definition (thickness style color) for border bordernum
         #     layout:layoutnum:value - text of vertical alignment and padding style for cell layout layoutnum:
         #                              vertical-alignment:vavalue;padding topval rightval bottomval leftval;
         #     cellformat:cformatnum:value - text of cell alignment (left/center/right) for cellformat cformatnum
         #     valueformat:vformatnum:value - text of number format (see format_value_for_display) for valueformat vformatnum (changed in v1.2)
         #     clipboardrange:upperleftcoord:bottomrightcoord - origin of clipboard data. Not present if clipboard empty.
         #        There must be a clipboardrange before any clipboard lines
         #     clipboard:coord:type:value:... - clipboard data, in same format as cell data
         #
         #   The resulting $sheetdata data structure is as follows:
         #
         #    $sheetdata{version} - version of save file read in
         #    $sheetdata{datatypes}->{$coord} - Origin of {datavalues} value:
         #                                          v - typed in numeric value of some sort, constant, no formula
         #                                          t - typed in text, constant, no formula
         #                                          f - result of formula calculation ({formulas} has formula to calculate)
         #                                          c - constant of some sort with typed in text in {formulas} and value in {datavalues}
         #    $sheetdata{formulas}->{$coord} - Text of formula if {datatypes} is quot;fquot;, no leading quot;=quot;, or text of constant if quot;cquot;
         #    $sheetdata{datavalues}->{$coord} - a text or numeric value ready to be formatted for display or used in calculation
         #    $sheetdata{valuetypes}->{$coord} - the value type of the datavalue as 1 or more characters
         #                                        First char is quot;nquot; for numeric or quot;tquot; for text
         #                                        Second chars, if present, are sub-type, like quot;lquot; for logical (0=false, 1=true)
         #    $sheetdata{cellerrors}->{$coord} - If non-blank, error text for error in formula calculation
         #    $sheetdata{cellattribs}->{$coord}->
         #       {coord} - coord of cell - existence means non-blank cell
         #       {bt}, {br}, {bb}, {bl} - border number or null if no border
         #       {layout} - cell layout number or blank for default
         #       {font} - font number or blank for default
         #       {color} - color number for text or blank for default
         #       {bgcolor} - color number for the cell background or blank for default
         #       {cellformat} - cell format number if not default - controls horizontal alignment
         #       {textvalueformat} - value format number if not default - controls how the cell's text values are formatted into text for display
         #       {nontextvalueformat} - value format number if not default - controls how the cell's non-text values are turned into text for display
         #       {colspan}, {rowspan} - column span and row span for merged cells or blank for 1
         #       {cssc}, {csss} - explicit CSS class and CSS style for cell
         #       {mod} - if quot;yquot; allow modification in live view
         #    $sheetdata{colattribs}->{$colcoord}->
         #       {width} - column width if not default
         #       {hide} - hide column if yes
         #    $sheetdata{rowattribs}->{$rowcoord}->
         #       {height} - ignored
         #       {hide} - hide row if yes
         #    $sheetdata{sheetattribs}->{$attrib}->
         #       {lastcol} - number of columns in sheet
         #       {lastrow} - number of rows in sheet (more may be displayed when editing)
         #       {defaultcolwidth} - number, quot;autoquot;, number%, or blank (default->80)
         #       {defaultrowheight} - not used
         #       {defaulttextformat} - cell format number for sheet default for text values
         #       {defaultnontextformat} - cell format number for sheet default for non-text values (i.e., numbers)
         #       {defaultlayout} - default cell layout number in sheet cell layout list
         #       {defaultfont} - default font number in sheet font list
         #       {defaulttextvalueformat} - default text value format number in sheet valueformat list
         #       {defaultnontextvalueformat} - default number value format number in sheet valueformat list
         #       {defaultcolor} - default number for text color in sheet color list
         #       {defaultbgcolor} - default number for background color in sheet color list
         #       {circularreferencecell} - cell coord with a circular reference
         #       {recalc} - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc
         #       {needsrecalc} - yes/no (no is default). If quot;yesquot;, formula values are not up to date
         #    $sheetdata{names}->{$name}-> - name is uppercase
         #       {desc} - description (optional)
         #       {definiton} - in the form of B5, A1:B7, or =formula
         #    $sheetdata{fonts}->[$index] - font specifications addressable by array position
         #    $sheetdata{fonthash}->{$value} - hash with font specification as keys and {fonts}->[] index position as values
         #    $sheetdata{colors}->[$index] - color specifications addressable by array position
         #    $sheetdata{colorhash}->{$value} - hash with color specification as keys and {colors}->[] index position as values
         #    $sheetdata{borderstyles}->[$index] - border style specifications addressable by array position
         #    $sheetdata{borderstylehash}->{$value} - hash with border style specification as keys and {borderstyles}->[] index position as values
         #    $sheetdata{layoutstyles}->[$index] - cell layout specifications addressable by array position
         #    $sheetdata{layoutstylehash}->{$value} - hash with cell layout specification as keys and {layoutstyle}->[] index position as values
         #    $sheetdata{cellformats}->[$index] - cell format specifications addressable by array position
         #    $sheetdata{cellformathash}->{$value} - hash with cell format specification as keys and {cellformats}->[] index position as values
         #    $sheetdata{valueformats}->[$index] - value format specifications addressable by array position
         #    $sheetdata{valueformathash}->{$value} - hash with value format specification as keys and {valueformats}->[] index position as values
         #    $sheetdata{clipboard}-> - the sheet's clipboard
         #       {range} - coord:coord range of where the clipboard contents came from or null if empty
         #       {datavalues} - like $sheetdata{datavalues} but for clipboard copy of cells
         #       {datatypes} - like $sheetdata{datatypes} but for clipboard copy of cells
         #       {valuetypes} - like $sheetdata{valuetypes} but for clipboard copy of cells
         #       {formulas} - like $sheetdata{formulas} but for clipboard copy of cells
         #       {cellerrors} - like $sheetdata{cellerrors} but for clipboard copy of cells
         #       {cellattribs} - like $sheetdata{cellattribs} but for clipboard copy of cells
         #    $sheetdata{loaderror} - if non-blank, there was an error loading this sheet and this is the text of that error
         #
         #   ########
Perl                                beta

   use
ab



         *$SYM = sub{
           my @res = $ORIG->(@_);

           print Dumper $_[1]; # sheetdata

           return @res;
         };
Perl                          beta

         $VAR1 = {
   use
ab         'sheetattribs' => {
              'lastcol' => '8',
              'lastrow' => '14'
           },
           'fonthash' => {
              '* x-small *' => 2,
              'normal bold * *' => 1
           },
           'cellattribs' => {
              'A1' => {
                'color' => '3',
                'colspan' => '8',
                'coord' => 'A1',
                'font' => '2'
Perl                                    beta

   use
ab




         use Net::SMTP;

         $smtp = Net::SMTP->new('iminuremail.com');

         # ...
Perl   beta

   use
ab
Perl                      beta

   use
ab

         use Net::SMTP;

         $smtp = Net::SMTP->new(
            'iminuremail.com',
            SSL => 1,
            Port => 465,
         );

         # ...
Perl                           beta

   use
ab



         use Net::SMTP::SSL;

         $smtp = Net::SMTP::SSL->new(
            'iminuremail.com'
         );

         # ...
Perl                                    beta

   use
ab

         package Net::SMTP;

         @ISA = qw[Net::Cmd IO::Socket::INET];

         sub new {
           my $self = shift;
           # ...
           return $self->SUPER::new(@_);
         }
Perl                                      beta

   use
ab




         package Net::SMTP::SSL;

         use base qw[IO::Socket::SSL Net::SMTP];
Perl                                      beta

   use
ab




         package Net::SMTP::SSL;

         use base qw[Net::SMTP IO::Socket::SSL];
Perl                           beta

   use
ab

         package Net::SMTP::SSL;

         use base 'Net::SMTP';

         @Net::SMTP::ISA = map {
             $_ eq 'IO::Socket::INET'
           ? 'IO::Socket::SSL'
           : $_
         } @Net::SMTP::ISA;
Perl                                     beta

   use
ab       package Net::SMTP::SSL;
         use IO::Socket::SSL;
         use Net::SMTP;

         @ISA = ( 'IO::Socket::SSL',
                  grep { $_ ne 'IO::Socket::INET' }
                       @Net::SMTP::ISA );

         for ( keys %Net::SMTP:: ) {
           next unless
             defined *{$Net::SMTP::{$_}}{CODE};
           *{$_} = &{quot;Net::SMTP::$_quot;};
         }
Perl                                    beta

   use
ab


         package String;

         use overload
           'quot;quot;' => sub { ${+shift} };

         sub new     { bless $_[1], $_[0]   }
         sub length { length(${+shift})      }
         sub exclaim { uc(${+shift}) . '!!1' }
Perl                                    beta

   use
ab
         print quot;Casey Westquot;->()->length;

         print
          quot;never touch them togetherquot;->()->exclaim;

         sub AUTOLOAD {
           ($m) = ($::AUTOLOAD =~ /.+::(.+)/);
           String->new($m);
         }

         # 10
         # NEVER TOUCH THEM TOGETHER!!1
Perl                        beta

   use
ab


         $me =   quot;Casey Westquot;->();
         print   $me->length;
         print   $me->exclaim;
         print   $me;

         # 10
         # CASEY WEST!!1
         # Casey West
Perl                             beta

   use
ab




         new $me quot;Casey West Srquot;;
         print quot;$me is quot; . $me->length;

         # Casey West Sr is 13
Perl                        beta

   use
ab




         sub new {
             ref($_[0])
           ? ${$_[0]} = $_[1]
           : bless $_[1], $_[0] ;
         }
Perl                                    beta

   use
ab


         print
           &Thanks, &for, &coming, &to, &my, &talk,
           quot;nquot;;

         sub AUTOLOAD {
           ($w) = ($::AUTOLOAD =~ /.*::(.+)/);
           quot;$w quot;;
         }

More Related Content

What's hot

Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaLin Yo-An
 
Mastering Grammars with PetitParser
Mastering Grammars with PetitParserMastering Grammars with PetitParser
Mastering Grammars with PetitParser
Lukas Renggli
 
PHP7. Game Changer.
PHP7. Game Changer. PHP7. Game Changer.
PHP7. Game Changer.
Haim Michael
 
Dealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter ScottDealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter Scott
O'Reilly Media
 
Ruby 2.0
Ruby 2.0Ruby 2.0
Ruby 2.0
Uģis Ozols
 
Perl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally InsanePerl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally Insane
Ricardo Signes
 
Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)
Nikita Popov
 
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner) Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Puppet
 
Mod Perl Quick Reference Card
Mod Perl Quick Reference CardMod Perl Quick Reference Card
Mod Perl Quick Reference CardFaryne Hsieh
 
LPW: Beginners Perl
LPW: Beginners PerlLPW: Beginners Perl
LPW: Beginners Perl
Dave Cross
 
You Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager NeedsYou Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager Needs
Roy Zimmer
 
Programming in perl style
Programming in perl styleProgramming in perl style
Programming in perl style
Bo Hua Yang
 
Introduction to Perl - Day 2
Introduction to Perl - Day 2Introduction to Perl - Day 2
Introduction to Perl - Day 2Dave Cross
 
Scalar data types
Scalar data typesScalar data types
Subroutines
SubroutinesSubroutines
Perl6 in-production
Perl6 in-productionPerl6 in-production
Perl6 in-production
Andrew Shitov
 
PHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisPHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with this
Ian Macali
 
Decorators in Python
Decorators in PythonDecorators in Python
Decorators in PythonBen James
 
Achieving Parsing Sanity In Erlang
Achieving Parsing Sanity In ErlangAchieving Parsing Sanity In Erlang
Achieving Parsing Sanity In Erlang
Sean Cribbs
 

What's hot (20)

Php Basic
Php BasicPhp Basic
Php Basic
 
Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim Perlchina
 
Mastering Grammars with PetitParser
Mastering Grammars with PetitParserMastering Grammars with PetitParser
Mastering Grammars with PetitParser
 
PHP7. Game Changer.
PHP7. Game Changer. PHP7. Game Changer.
PHP7. Game Changer.
 
Dealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter ScottDealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter Scott
 
Ruby 2.0
Ruby 2.0Ruby 2.0
Ruby 2.0
 
Perl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally InsanePerl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally Insane
 
Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)
 
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner) Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
 
Mod Perl Quick Reference Card
Mod Perl Quick Reference CardMod Perl Quick Reference Card
Mod Perl Quick Reference Card
 
LPW: Beginners Perl
LPW: Beginners PerlLPW: Beginners Perl
LPW: Beginners Perl
 
You Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager NeedsYou Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager Needs
 
Programming in perl style
Programming in perl styleProgramming in perl style
Programming in perl style
 
Introduction to Perl - Day 2
Introduction to Perl - Day 2Introduction to Perl - Day 2
Introduction to Perl - Day 2
 
Scalar data types
Scalar data typesScalar data types
Scalar data types
 
Subroutines
SubroutinesSubroutines
Subroutines
 
Perl6 in-production
Perl6 in-productionPerl6 in-production
Perl6 in-production
 
PHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisPHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with this
 
Decorators in Python
Decorators in PythonDecorators in Python
Decorators in Python
 
Achieving Parsing Sanity In Erlang
Achieving Parsing Sanity In ErlangAchieving Parsing Sanity In Erlang
Achieving Parsing Sanity In Erlang
 

Viewers also liked

Camille Walker Email Copywriting Samples Portfolio
Camille Walker Email Copywriting Samples PortfolioCamille Walker Email Copywriting Samples Portfolio
Camille Walker Email Copywriting Samples PortfolioCamille A. Walker, MS, MBA
 
Viamente GPS & Driver Behavior
Viamente GPS & Driver Behavior Viamente GPS & Driver Behavior
Viamente GPS & Driver Behavior Michelle Tarantino
 
Contact agosto
Contact agostoContact agosto
Contact agostoLeutherio
 
RAMEZ BORAIE PROJECT MANAGEMENTS
RAMEZ BORAIE PROJECT MANAGEMENTSRAMEZ BORAIE PROJECT MANAGEMENTS
RAMEZ BORAIE PROJECT MANAGEMENTSRamez Boraie
 
What's new in Doctrine
What's new in DoctrineWhat's new in Doctrine
What's new in Doctrine
Jonathan Wage
 
HTML
HTMLHTML
Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015
Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015
Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015
TAUS - The Language Data Network
 
Turbó fokozat
Turbó fokozatTurbó fokozat
Turbó fokozat
András Bártházi
 
Ppoooer Avellaner Correcte
Ppoooer Avellaner CorrectePpoooer Avellaner Correcte
Ppoooer Avellaner Correcteguest441812
 
Aaren D.F. Brown nuc
Aaren D.F. Brown nucAaren D.F. Brown nuc
Aaren D.F. Brown nucAaren Brown
 
Mario Benedetti
Mario BenedettiMario Benedetti
Mario Benedetti
somossur
 
Bailloux gueit dossier patient
Bailloux gueit dossier patientBailloux gueit dossier patient
Bailloux gueit dossier patientAssociationAF
 
iPhone Dev Camp Keynote
iPhone Dev Camp  KeynoteiPhone Dev Camp  Keynote
iPhone Dev Camp Keynote
tristan.woo
 
Baheya hospital - Lasheenstst
Baheya hospital - LasheenststBaheya hospital - Lasheenstst
Baheya hospital - Lasheenstst
Lasheenstst لاشين للاستانلس
 
Bella Hung ría
Bella Hung ríaBella Hung ría
Bella Hung ría
LilianaB2008
 
What is Your Library Doing about Emerging Technologies?
What is Your Library Doing about Emerging Technologies?What is Your Library Doing about Emerging Technologies?
What is Your Library Doing about Emerging Technologies?
Bohyun Kim
 
Open Data e Open Data Sicilia
Open Data e Open Data SiciliaOpen Data e Open Data Sicilia
Open Data e Open Data Sicilia
Cristiano Longo
 

Viewers also liked (20)

Camille Walker Email Copywriting Samples Portfolio
Camille Walker Email Copywriting Samples PortfolioCamille Walker Email Copywriting Samples Portfolio
Camille Walker Email Copywriting Samples Portfolio
 
Viamente GPS & Driver Behavior
Viamente GPS & Driver Behavior Viamente GPS & Driver Behavior
Viamente GPS & Driver Behavior
 
Contact agosto
Contact agostoContact agosto
Contact agosto
 
RAMEZ BORAIE PROJECT MANAGEMENTS
RAMEZ BORAIE PROJECT MANAGEMENTSRAMEZ BORAIE PROJECT MANAGEMENTS
RAMEZ BORAIE PROJECT MANAGEMENTS
 
What's new in Doctrine
What's new in DoctrineWhat's new in Doctrine
What's new in Doctrine
 
HTML
HTMLHTML
HTML
 
Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015
Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015
Andrejs Vasiljevs (Tilde) at the Industry Leaders Forum 2015
 
Turbó fokozat
Turbó fokozatTurbó fokozat
Turbó fokozat
 
Ppoooer Avellaner Correcte
Ppoooer Avellaner CorrectePpoooer Avellaner Correcte
Ppoooer Avellaner Correcte
 
Aaren D.F. Brown nuc
Aaren D.F. Brown nucAaren D.F. Brown nuc
Aaren D.F. Brown nuc
 
Doubters
DoubtersDoubters
Doubters
 
Rolniczy
RolniczyRolniczy
Rolniczy
 
Mario Benedetti
Mario BenedettiMario Benedetti
Mario Benedetti
 
Bailloux gueit dossier patient
Bailloux gueit dossier patientBailloux gueit dossier patient
Bailloux gueit dossier patient
 
iPhone Dev Camp Keynote
iPhone Dev Camp  KeynoteiPhone Dev Camp  Keynote
iPhone Dev Camp Keynote
 
Aula sobre email
Aula sobre emailAula sobre email
Aula sobre email
 
Baheya hospital - Lasheenstst
Baheya hospital - LasheenststBaheya hospital - Lasheenstst
Baheya hospital - Lasheenstst
 
Bella Hung ría
Bella Hung ríaBella Hung ría
Bella Hung ría
 
What is Your Library Doing about Emerging Technologies?
What is Your Library Doing about Emerging Technologies?What is Your Library Doing about Emerging Technologies?
What is Your Library Doing about Emerging Technologies?
 
Open Data e Open Data Sicilia
Open Data e Open Data SiciliaOpen Data e Open Data Sicilia
Open Data e Open Data Sicilia
 

Similar to Abuse Perl

Perl Presentation
Perl PresentationPerl Presentation
Perl Presentation
Sopan Shewale
 
Cleancode
CleancodeCleancode
Cleancode
hendrikvb
 
Beginning Perl
Beginning PerlBeginning Perl
Beginning Perl
Dave Cross
 
Sorting techniques in Perl
Sorting techniques in PerlSorting techniques in Perl
Sorting techniques in Perl
Yogesh Sawant
 
Perl Introduction
Perl IntroductionPerl Introduction
Perl Introduction
Marcos Rebelo
 
Prototype js
Prototype jsPrototype js
Prototype js
mussawir20
 
Introduction to Modern Perl
Introduction to Modern PerlIntroduction to Modern Perl
Introduction to Modern Perl
Dave Cross
 
Bioinformatica 10-11-2011-p6-bioperl
Bioinformatica 10-11-2011-p6-bioperlBioinformatica 10-11-2011-p6-bioperl
Bioinformatica 10-11-2011-p6-bioperl
Prof. Wim Van Criekinge
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
Dave Cross
 
20 modules i haven't yet talked about
20 modules i haven't yet talked about20 modules i haven't yet talked about
20 modules i haven't yet talked aboutTatsuhiko Miyagawa
 
My First Rails Plugin - Usertext
My First Rails Plugin - UsertextMy First Rails Plugin - Usertext
My First Rails Plugin - Usertext
frankieroberto
 
Power Theming
Power ThemingPower Theming
Power Themingdrkdn
 
Blog Hacks 2011
Blog Hacks 2011Blog Hacks 2011
Blog Hacks 2011
Yusuke Wada
 
Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.
Workhorse Computing
 
Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)
Michael Schwern
 
Lecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administrationLecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administrationMohammed Farrag
 
Exploiting Php With Php
Exploiting Php With PhpExploiting Php With Php
Exploiting Php With Php
Jeremy Coates
 

Similar to Abuse Perl (20)

Perl Presentation
Perl PresentationPerl Presentation
Perl Presentation
 
Cleancode
CleancodeCleancode
Cleancode
 
Php2
Php2Php2
Php2
 
Antlr V3
Antlr V3Antlr V3
Antlr V3
 
Beginning Perl
Beginning PerlBeginning Perl
Beginning Perl
 
Sorting techniques in Perl
Sorting techniques in PerlSorting techniques in Perl
Sorting techniques in Perl
 
Perl Introduction
Perl IntroductionPerl Introduction
Perl Introduction
 
Prototype js
Prototype jsPrototype js
Prototype js
 
Introduction to Modern Perl
Introduction to Modern PerlIntroduction to Modern Perl
Introduction to Modern Perl
 
Bioinformatica 10-11-2011-p6-bioperl
Bioinformatica 10-11-2011-p6-bioperlBioinformatica 10-11-2011-p6-bioperl
Bioinformatica 10-11-2011-p6-bioperl
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 
20 modules i haven't yet talked about
20 modules i haven't yet talked about20 modules i haven't yet talked about
20 modules i haven't yet talked about
 
My First Rails Plugin - Usertext
My First Rails Plugin - UsertextMy First Rails Plugin - Usertext
My First Rails Plugin - Usertext
 
PHP
PHP PHP
PHP
 
Power Theming
Power ThemingPower Theming
Power Theming
 
Blog Hacks 2011
Blog Hacks 2011Blog Hacks 2011
Blog Hacks 2011
 
Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.
 
Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)
 
Lecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administrationLecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administration
 
Exploiting Php With Php
Exploiting Php With PhpExploiting Php With Php
Exploiting Php With Php
 

Recently uploaded

JEE1_This_section_contains_FOUR_ questions
JEE1_This_section_contains_FOUR_ questionsJEE1_This_section_contains_FOUR_ questions
JEE1_This_section_contains_FOUR_ questions
ShivajiThube2
 
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama UniversityNatural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
Akanksha trivedi rama nursing college kanpur.
 
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
EugeneSaldivar
 
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
Nguyen Thanh Tu Collection
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
heathfieldcps1
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Thiyagu K
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
Sandy Millin
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
camakaiclarkmusic
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
Jisc
 
S1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptxS1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptx
tarandeep35
 
Multithreading_in_C++ - std::thread, race condition
Multithreading_in_C++ - std::thread, race conditionMultithreading_in_C++ - std::thread, race condition
Multithreading_in_C++ - std::thread, race condition
Mohammed Sikander
 
Digital Artifact 2 - Investigating Pavilion Designs
Digital Artifact 2 - Investigating Pavilion DesignsDigital Artifact 2 - Investigating Pavilion Designs
Digital Artifact 2 - Investigating Pavilion Designs
chanes7
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
Special education needs
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
Balvir Singh
 
South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)
Academy of Science of South Africa
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Normal Labour/ Stages of Labour/ Mechanism of Labour
Normal Labour/ Stages of Labour/ Mechanism of LabourNormal Labour/ Stages of Labour/ Mechanism of Labour
Normal Labour/ Stages of Labour/ Mechanism of Labour
Wasim Ak
 
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBCSTRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
kimdan468
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
DeeptiGupta154
 

Recently uploaded (20)

JEE1_This_section_contains_FOUR_ questions
JEE1_This_section_contains_FOUR_ questionsJEE1_This_section_contains_FOUR_ questions
JEE1_This_section_contains_FOUR_ questions
 
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama UniversityNatural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
 
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
 
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
 
S1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptxS1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptx
 
Multithreading_in_C++ - std::thread, race condition
Multithreading_in_C++ - std::thread, race conditionMultithreading_in_C++ - std::thread, race condition
Multithreading_in_C++ - std::thread, race condition
 
Digital Artifact 2 - Investigating Pavilion Designs
Digital Artifact 2 - Investigating Pavilion DesignsDigital Artifact 2 - Investigating Pavilion Designs
Digital Artifact 2 - Investigating Pavilion Designs
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
 
South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
 
Normal Labour/ Stages of Labour/ Mechanism of Labour
Normal Labour/ Stages of Labour/ Mechanism of LabourNormal Labour/ Stages of Labour/ Mechanism of Labour
Normal Labour/ Stages of Labour/ Mechanism of Labour
 
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBCSTRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
 

Abuse Perl

  • 1. Perl beta use ab *{quot;Abuse Perlquot;} = sub { quot;by Casey Westnquot; }; print quot;Abuse Perlquot;->();
  • 2. Perl beta use ab *{' '} = sub { print quot;Abuse Perl by Casey Westnquot; }; <<_->() _
  • 3. Perl beta use ab *{' '} = sub { print shift }; <<_->(<<_) _ Abuse Perl by Casey West _ # via Abigail
  • 4. Perl beta use ab *{' '} = sub { print quot;Abuse Perl by Casey Westnquot; }; ' '->();
  • 5. Perl beta use ab package Employee; use base 'Class::Accessor::Fast'; Employee->mk_accessors qw[name title]; sub as_string { my $self = shift; sprintf quot;%s: %snquot;, $self->title, $self->name; }
  • 6. Perl beta use ab $casey = Employee->new({ name => quot;Casey Westquot;, title => quot;Member of Technical Staffquot;, }); print $casey->as_string; #Member of Technical Staff: Casey West
  • 7. Perl beta use ab *Employee::as_string = sub { my $self = shift; sprintf quot;%s is a %snquot;, $self->name, $self->title; }; print $casey->as_string; #Casey West is a Member of Technical Staff
  • 8. Perl beta use ab INIT { *Employee::as_string = sub { my $self = shift; sprintf quot;%s is a %snquot;, $self->name, $self->title; }; }
  • 9. Perl beta use ab INIT { *Employee::as_string_orig = *Employee::as_string; *Employee::as_string = sub { uc shift->as_string_orig; }; }
  • 10. Perl beta use ab INIT { *Employee::as_string_orig = &Employee::as_string; *Employee::as_string = sub { uc shift->as_string_orig; }; }
  • 11. Perl beta use ab package FollowVar; use Tie::Scalar; @ISA = ('Tie::StdScalar'); sub FETCH { warn quot;>>> Called at quot; . join(':', caller) . quot;nquot;; return shift->SUPER::FETCH(@_); }
  • 12. Perl beta use ab tie $name, 'FollowVar'; $name = quot;Casey Westquot;; print Email::Address->new( $name, 'casey@geeknest.com', '' ), quot;nquot;; # >>> Called at Email::Address: # /Library/Perl/5.8.6/Email/Address.pm: # 216 # Casey West <casey@geeknest.com>
  • 13. Perl beta package FollowHash; use ab use Tie::Hash; @ISA = ('Tie::StdHash'); for my $sub (qw[FETCH STORE DELETE CLEAR FIRSTKEY NEXTKEY]) { *{$sub} = sub { $self = shift; $call = join':', (caller)[0,2]; $args = join',', map{$_ || 'undef'}@_; warn quot;>>> $sub($args) by [$call]nquot;; $sup = quot;SUPER::$subquot;; $self->$sup(@_); } }
  • 14. Perl beta use ab use Template; tie %vars, 'FollowHash'; %vars = (name => quot;Casey Westquot;); Template->new->process(<<__TT__, %vars); Hello, my name is [% name %]. __TT__
  • 15. Perl beta use CLEAR() by [main:23] ab STORE(name,Casey West) by [main:23] STORE(template, Template::Document=HASH(0x1866920)) by [Template::Service:79] FETCH(import) by [Template::Stash:448] FIRSTKEY() by [Template::Stash:456] NEXTKEY(template) by [Template::Stash:456] NEXTKEY(name) by [Template::Stash:456] FETCH(template) by [Template::Stash:456] FETCH(name) by [Template::Stash:456] DELETE(template) by [Template::Service:128] Hello, my name is Casey West.
  • 16. Perl beta use sub parse_sheet_save { ab my ($rest, $linetype, $coord, $type, $value, $valuetype, $formula, $style, $namename, $namedesc, $fontnum, $layoutnum, $colornum, $check, $maxrow, $maxcol, $row, $col); my ($lines, $sheetdata) = @_; my $errortext; # Initialize sheetdata structure # ...
  • 17. Perl beta use ab # ######## # # $ok = parse_sheet_save(@lines, %sheetdata) # # Sheet input routine. Fills %sheetdata given lines of text @lines. # # Currently always returns nothing. # # Sheet save format: # # linetype:param1:param2:... # # Linetypes are: # # version:versionname - version of this format. Currently 1.3. # # cell:coord:type:value...:type:value... - Types are as follows: # # v:value - straight numeric value # t:value - straight text/wiki-text in cell, encoded to handle , :, newlines # vt:fulltype:value - value with value type/subtype # vtf:fulltype:value:formulatext - formula resulting in value with value type/subtype, value and text encoded # vtc:fulltype:value:valuetext - formatted text constant resulting in value with value type/subtype, value and text encoded # vf:fvalue:formulatext - formula resulting in value, value and text encoded (obsolete: only pre format version 1.1) # fvalue - first char is quot;Nquot; for numeric value, quot;Tquot; for text value, quot;Hquot; for HTML value, rest is the value # e:errortext - Error text. Non-blank means formula parsing/calculation results in error. # b:topborder#:rightborder#:bottomborder#:leftborder# - border# in sheet border list or blank if none # l:layout# - number in cell layout list # f:font# - number in sheet fonts list # c:color# - sheet color list index for text # bg:color# - sheet color list index for background color # cf:format# - sheet cell format number for explicit format (align:left, etc.) # cvf:valueformat# - sheet cell value format number (obsolete: only pre format v1.2) # tvf:valueformat# - sheet cell text value format number # ntvf:valueformat# - sheet cell non-text value format number # colspan:numcols - number of columns spanned in merged cell # rowspan:numrows - number of rows spanned in merged cell # cssc:classname - name of CSS class to be used for cell when published instead of one calculated here # csss:styletext - explicit CSS style information, encoded to handle :, etc. # mod:allow - if quot;yquot; allow modification of cell for live quot;viewquot; recalc # # col: # w:widthval - number, quot;autoquot; (no width in <col> tag), number%, or blank (use default) # hide: - yes/no, no is assumed if missing # row: # hide - yes/no, no is assumed if missing # # sheet: # c:lastcol - number # r:lastrow - number # w:defaultcolwidth - number, quot;autoquot;, number%, or blank (default->80) # h:defaultrowheight - not used # tf:format# - cell format number for sheet default for text values # ntf:format# - cell format number for sheet default for non-text values (i.e., numbers) # layout:layout# - default cell layout number in cell layout list # font:font# - default font number in sheet font list # vf:valueformat# - default number value format number in sheet valueformat list (obsolete: only pre format version 1.2) # ntvf:valueformat# - default non-text (number) value format number in sheet valueformat list # tvf:valueformat# - default text value format number in sheet valueformat list # color:color# - default number for text color in sheet color list # bgcolor:color# - default number for background color in sheet color list # circularreferencecell:coord - cell coord with a circular reference # recalc:value - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc # needsrecalc:value - yes/no (no is default). If quot;yesquot;, formula values are not up to date # # name:name:description:value - name definition, name in uppercase, with value being quot;B5quot;, quot;A1:B7quot;, or quot;=formulaquot; # font:fontnum:value - text of font definition (style weight size family) for font fontnum # quot;*quot; for quot;style weightquot;, size, or family, means use default (first look to sheet, then builtin) # color:colornum:rgbvalue - text of color definition (e.g., rgb(255,255,255)) for color colornum # border:bordernum:value - text of border definition (thickness style color) for border bordernum # layout:layoutnum:value - text of vertical alignment and padding style for cell layout layoutnum: # vertical-alignment:vavalue;padding topval rightval bottomval leftval; # cellformat:cformatnum:value - text of cell alignment (left/center/right) for cellformat cformatnum # valueformat:vformatnum:value - text of number format (see format_value_for_display) for valueformat vformatnum (changed in v1.2) # clipboardrange:upperleftcoord:bottomrightcoord - origin of clipboard data. Not present if clipboard empty. # There must be a clipboardrange before any clipboard lines # clipboard:coord:type:value:... - clipboard data, in same format as cell data # # The resulting $sheetdata data structure is as follows: # # $sheetdata{version} - version of save file read in # $sheetdata{datatypes}->{$coord} - Origin of {datavalues} value: # v - typed in numeric value of some sort, constant, no formula # t - typed in text, constant, no formula # f - result of formula calculation ({formulas} has formula to calculate) # c - constant of some sort with typed in text in {formulas} and value in {datavalues} # $sheetdata{formulas}->{$coord} - Text of formula if {datatypes} is quot;fquot;, no leading quot;=quot;, or text of constant if quot;cquot; # $sheetdata{datavalues}->{$coord} - a text or numeric value ready to be formatted for display or used in calculation # $sheetdata{valuetypes}->{$coord} - the value type of the datavalue as 1 or more characters # First char is quot;nquot; for numeric or quot;tquot; for text # Second chars, if present, are sub-type, like quot;lquot; for logical (0=false, 1=true) # $sheetdata{cellerrors}->{$coord} - If non-blank, error text for error in formula calculation # $sheetdata{cellattribs}->{$coord}-> # {coord} - coord of cell - existence means non-blank cell # {bt}, {br}, {bb}, {bl} - border number or null if no border # {layout} - cell layout number or blank for default # {font} - font number or blank for default # {color} - color number for text or blank for default # {bgcolor} - color number for the cell background or blank for default # {cellformat} - cell format number if not default - controls horizontal alignment # {textvalueformat} - value format number if not default - controls how the cell's text values are formatted into text for display # {nontextvalueformat} - value format number if not default - controls how the cell's non-text values are turned into text for display # {colspan}, {rowspan} - column span and row span for merged cells or blank for 1 # {cssc}, {csss} - explicit CSS class and CSS style for cell # {mod} - if quot;yquot; allow modification in live view # $sheetdata{colattribs}->{$colcoord}-> # {width} - column width if not default # {hide} - hide column if yes # $sheetdata{rowattribs}->{$rowcoord}-> # {height} - ignored # {hide} - hide row if yes # $sheetdata{sheetattribs}->{$attrib}-> # {lastcol} - number of columns in sheet # {lastrow} - number of rows in sheet (more may be displayed when editing) # {defaultcolwidth} - number, quot;autoquot;, number%, or blank (default->80) # {defaultrowheight} - not used # {defaulttextformat} - cell format number for sheet default for text values # {defaultnontextformat} - cell format number for sheet default for non-text values (i.e., numbers) # {defaultlayout} - default cell layout number in sheet cell layout list # {defaultfont} - default font number in sheet font list # {defaulttextvalueformat} - default text value format number in sheet valueformat list # {defaultnontextvalueformat} - default number value format number in sheet valueformat list # {defaultcolor} - default number for text color in sheet color list # {defaultbgcolor} - default number for background color in sheet color list # {circularreferencecell} - cell coord with a circular reference # {recalc} - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc # {needsrecalc} - yes/no (no is default). If quot;yesquot;, formula values are not up to date # $sheetdata{names}->{$name}-> - name is uppercase # {desc} - description (optional) # {definiton} - in the form of B5, A1:B7, or =formula # $sheetdata{fonts}->[$index] - font specifications addressable by array position # $sheetdata{fonthash}->{$value} - hash with font specification as keys and {fonts}->[] index position as values # $sheetdata{colors}->[$index] - color specifications addressable by array position # $sheetdata{colorhash}->{$value} - hash with color specification as keys and {colors}->[] index position as values # $sheetdata{borderstyles}->[$index] - border style specifications addressable by array position # $sheetdata{borderstylehash}->{$value} - hash with border style specification as keys and {borderstyles}->[] index position as values # $sheetdata{layoutstyles}->[$index] - cell layout specifications addressable by array position # $sheetdata{layoutstylehash}->{$value} - hash with cell layout specification as keys and {layoutstyle}->[] index position as values # $sheetdata{cellformats}->[$index] - cell format specifications addressable by array position # $sheetdata{cellformathash}->{$value} - hash with cell format specification as keys and {cellformats}->[] index position as values # $sheetdata{valueformats}->[$index] - value format specifications addressable by array position # $sheetdata{valueformathash}->{$value} - hash with value format specification as keys and {valueformats}->[] index position as values # $sheetdata{clipboard}-> - the sheet's clipboard # {range} - coord:coord range of where the clipboard contents came from or null if empty # {datavalues} - like $sheetdata{datavalues} but for clipboard copy of cells # {datatypes} - like $sheetdata{datatypes} but for clipboard copy of cells # {valuetypes} - like $sheetdata{valuetypes} but for clipboard copy of cells # {formulas} - like $sheetdata{formulas} but for clipboard copy of cells # {cellerrors} - like $sheetdata{cellerrors} but for clipboard copy of cells # {cellattribs} - like $sheetdata{cellattribs} but for clipboard copy of cells # $sheetdata{loaderror} - if non-blank, there was an error loading this sheet and this is the text of that error # # ########
  • 18. Perl beta use ab # $sheetdata{sheetattribs}->{$attrib}-> # {lastcol} - number of columns in sheet # {lastrow} - number of rows in sheet # (more may be displayed when editing) # {defaultcolwidth} - number, quot;autoquot;, # number%, or blank (default->80) # {defaultrowheight} - not used # {defaulttextformat} - cell format # number for sheet default for text # values
  • 19. Perl beta package Lab; use Data::Dumper; use ab $PKG = 'SocialCalc::Sheet'; $FUNC = 'parse_sheet_save'; $SYM = quot;$PKG::$FUNCquot;; $ORIG = quot;$SYM_origquot;; eval quot;require $PKG;quot;; *$ORIG = &{$SYM}; *$SYM = sub{ print(Dumper(quot;INPUTquot;, [@_])); my @res = $ORIG->(@_); print(Dumper(quot;OUTPUTquot;, [@res])); return @res; };
  • 20. Perl beta use ab require App::SocialCalc; use Lab; do shift; # perl -I $HOME -I lib # ~/lab.pl bin/socialcalc.pl
  • 21. Perl beta use $VAR1 = 'INPUT'; ab $VAR2 = [ [ 'version:1.3 ', 'cell:A1:t:= A page to try some of wikiCalc's features =nnYou can use this page to ...' ] ]; $VAR1 = 'OUTPUT'; $VAR2 = [ '14' ];
  • 22. Perl beta use ab # ######## # # $ok = parse_sheet_save(@lines, %sheetdata) # # Sheet input routine. Fills %sheetdata given lines of text @lines. # # Currently always returns nothing. # # Sheet save format: # # linetype:param1:param2:... # # Linetypes are: # # version:versionname - version of this format. Currently 1.3. # # cell:coord:type:value...:type:value... - Types are as follows: # # v:value - straight numeric value # t:value - straight text/wiki-text in cell, encoded to handle , :, newlines # vt:fulltype:value - value with value type/subtype # vtf:fulltype:value:formulatext - formula resulting in value with value type/subtype, value and text encoded # vtc:fulltype:value:valuetext - formatted text constant resulting in value with value type/subtype, value and text encoded # vf:fvalue:formulatext - formula resulting in value, value and text encoded (obsolete: only pre format version 1.1) # fvalue - first char is quot;Nquot; for numeric value, quot;Tquot; for text value, quot;Hquot; for HTML value, rest is the value # e:errortext - Error text. Non-blank means formula parsing/calculation results in error. # b:topborder#:rightborder#:bottomborder#:leftborder# - border# in sheet border list or blank if none # l:layout# - number in cell layout list # f:font# - number in sheet fonts list # c:color# - sheet color list index for text # bg:color# - sheet color list index for background color # cf:format# - sheet cell format number for explicit format (align:left, etc.) # cvf:valueformat# - sheet cell value format number (obsolete: only pre format v1.2) # tvf:valueformat# - sheet cell text value format number # ntvf:valueformat# - sheet cell non-text value format number # colspan:numcols - number of columns spanned in merged cell # rowspan:numrows - number of rows spanned in merged cell # cssc:classname - name of CSS class to be used for cell when published instead of one calculated here # csss:styletext - explicit CSS style information, encoded to handle :, etc. # mod:allow - if quot;yquot; allow modification of cell for live quot;viewquot; recalc # # col: # w:widthval - number, quot;autoquot; (no width in <col> tag), number%, or blank (use default) # hide: - yes/no, no is assumed if missing # row: # hide - yes/no, no is assumed if missing # # sheet: # c:lastcol - number # r:lastrow - number # w:defaultcolwidth - number, quot;autoquot;, number%, or blank (default->80) # h:defaultrowheight - not used # tf:format# - cell format number for sheet default for text values # ntf:format# - cell format number for sheet default for non-text values (i.e., numbers) # layout:layout# - default cell layout number in cell layout list # font:font# - default font number in sheet font list # vf:valueformat# - default number value format number in sheet valueformat list (obsolete: only pre format version 1.2) # ntvf:valueformat# - default non-text (number) value format number in sheet valueformat list # tvf:valueformat# - default text value format number in sheet valueformat list # color:color# - default number for text color in sheet color list # bgcolor:color# - default number for background color in sheet color list # circularreferencecell:coord - cell coord with a circular reference # recalc:value - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc # needsrecalc:value - yes/no (no is default). If quot;yesquot;, formula values are not up to date # # name:name:description:value - name definition, name in uppercase, with value being quot;B5quot;, quot;A1:B7quot;, or quot;=formulaquot; # font:fontnum:value - text of font definition (style weight size family) for font fontnum # quot;*quot; for quot;style weightquot;, size, or family, means use default (first look to sheet, then builtin) # color:colornum:rgbvalue - text of color definition (e.g., rgb(255,255,255)) for color colornum # border:bordernum:value - text of border definition (thickness style color) for border bordernum # layout:layoutnum:value - text of vertical alignment and padding style for cell layout layoutnum: # vertical-alignment:vavalue;padding topval rightval bottomval leftval; # cellformat:cformatnum:value - text of cell alignment (left/center/right) for cellformat cformatnum # valueformat:vformatnum:value - text of number format (see format_value_for_display) for valueformat vformatnum (changed in v1.2) # clipboardrange:upperleftcoord:bottomrightcoord - origin of clipboard data. Not present if clipboard empty. # There must be a clipboardrange before any clipboard lines # clipboard:coord:type:value:... - clipboard data, in same format as cell data # # The resulting $sheetdata data structure is as follows: # # $sheetdata{version} - version of save file read in # $sheetdata{datatypes}->{$coord} - Origin of {datavalues} value: # v - typed in numeric value of some sort, constant, no formula # t - typed in text, constant, no formula # f - result of formula calculation ({formulas} has formula to calculate) # c - constant of some sort with typed in text in {formulas} and value in {datavalues} # $sheetdata{formulas}->{$coord} - Text of formula if {datatypes} is quot;fquot;, no leading quot;=quot;, or text of constant if quot;cquot; # $sheetdata{datavalues}->{$coord} - a text or numeric value ready to be formatted for display or used in calculation # $sheetdata{valuetypes}->{$coord} - the value type of the datavalue as 1 or more characters # First char is quot;nquot; for numeric or quot;tquot; for text # Second chars, if present, are sub-type, like quot;lquot; for logical (0=false, 1=true) # $sheetdata{cellerrors}->{$coord} - If non-blank, error text for error in formula calculation # $sheetdata{cellattribs}->{$coord}-> # {coord} - coord of cell - existence means non-blank cell # {bt}, {br}, {bb}, {bl} - border number or null if no border # {layout} - cell layout number or blank for default # {font} - font number or blank for default # {color} - color number for text or blank for default # {bgcolor} - color number for the cell background or blank for default # {cellformat} - cell format number if not default - controls horizontal alignment # {textvalueformat} - value format number if not default - controls how the cell's text values are formatted into text for display # {nontextvalueformat} - value format number if not default - controls how the cell's non-text values are turned into text for display # {colspan}, {rowspan} - column span and row span for merged cells or blank for 1 # {cssc}, {csss} - explicit CSS class and CSS style for cell # {mod} - if quot;yquot; allow modification in live view # $sheetdata{colattribs}->{$colcoord}-> # {width} - column width if not default # {hide} - hide column if yes # $sheetdata{rowattribs}->{$rowcoord}-> # {height} - ignored # {hide} - hide row if yes # $sheetdata{sheetattribs}->{$attrib}-> # {lastcol} - number of columns in sheet # {lastrow} - number of rows in sheet (more may be displayed when editing) # {defaultcolwidth} - number, quot;autoquot;, number%, or blank (default->80) # {defaultrowheight} - not used # {defaulttextformat} - cell format number for sheet default for text values # {defaultnontextformat} - cell format number for sheet default for non-text values (i.e., numbers) # {defaultlayout} - default cell layout number in sheet cell layout list # {defaultfont} - default font number in sheet font list # {defaulttextvalueformat} - default text value format number in sheet valueformat list # {defaultnontextvalueformat} - default number value format number in sheet valueformat list # {defaultcolor} - default number for text color in sheet color list # {defaultbgcolor} - default number for background color in sheet color list # {circularreferencecell} - cell coord with a circular reference # {recalc} - on/off (on is default). If quot;onquot;, appropriate changes to the sheet cause a recalc # {needsrecalc} - yes/no (no is default). If quot;yesquot;, formula values are not up to date # $sheetdata{names}->{$name}-> - name is uppercase # {desc} - description (optional) # {definiton} - in the form of B5, A1:B7, or =formula # $sheetdata{fonts}->[$index] - font specifications addressable by array position # $sheetdata{fonthash}->{$value} - hash with font specification as keys and {fonts}->[] index position as values # $sheetdata{colors}->[$index] - color specifications addressable by array position # $sheetdata{colorhash}->{$value} - hash with color specification as keys and {colors}->[] index position as values # $sheetdata{borderstyles}->[$index] - border style specifications addressable by array position # $sheetdata{borderstylehash}->{$value} - hash with border style specification as keys and {borderstyles}->[] index position as values # $sheetdata{layoutstyles}->[$index] - cell layout specifications addressable by array position # $sheetdata{layoutstylehash}->{$value} - hash with cell layout specification as keys and {layoutstyle}->[] index position as values # $sheetdata{cellformats}->[$index] - cell format specifications addressable by array position # $sheetdata{cellformathash}->{$value} - hash with cell format specification as keys and {cellformats}->[] index position as values # $sheetdata{valueformats}->[$index] - value format specifications addressable by array position # $sheetdata{valueformathash}->{$value} - hash with value format specification as keys and {valueformats}->[] index position as values # $sheetdata{clipboard}-> - the sheet's clipboard # {range} - coord:coord range of where the clipboard contents came from or null if empty # {datavalues} - like $sheetdata{datavalues} but for clipboard copy of cells # {datatypes} - like $sheetdata{datatypes} but for clipboard copy of cells # {valuetypes} - like $sheetdata{valuetypes} but for clipboard copy of cells # {formulas} - like $sheetdata{formulas} but for clipboard copy of cells # {cellerrors} - like $sheetdata{cellerrors} but for clipboard copy of cells # {cellattribs} - like $sheetdata{cellattribs} but for clipboard copy of cells # $sheetdata{loaderror} - if non-blank, there was an error loading this sheet and this is the text of that error # # ########
  • 23. Perl beta use ab *$SYM = sub{ my @res = $ORIG->(@_); print Dumper $_[1]; # sheetdata return @res; };
  • 24. Perl beta $VAR1 = { use ab 'sheetattribs' => { 'lastcol' => '8', 'lastrow' => '14' }, 'fonthash' => { '* x-small *' => 2, 'normal bold * *' => 1 }, 'cellattribs' => { 'A1' => { 'color' => '3', 'colspan' => '8', 'coord' => 'A1', 'font' => '2'
  • 25. Perl beta use ab use Net::SMTP; $smtp = Net::SMTP->new('iminuremail.com'); # ...
  • 26. Perl beta use ab
  • 27. Perl beta use ab use Net::SMTP; $smtp = Net::SMTP->new( 'iminuremail.com', SSL => 1, Port => 465, ); # ...
  • 28. Perl beta use ab use Net::SMTP::SSL; $smtp = Net::SMTP::SSL->new( 'iminuremail.com' ); # ...
  • 29. Perl beta use ab package Net::SMTP; @ISA = qw[Net::Cmd IO::Socket::INET]; sub new { my $self = shift; # ... return $self->SUPER::new(@_); }
  • 30. Perl beta use ab package Net::SMTP::SSL; use base qw[IO::Socket::SSL Net::SMTP];
  • 31. Perl beta use ab package Net::SMTP::SSL; use base qw[Net::SMTP IO::Socket::SSL];
  • 32. Perl beta use ab package Net::SMTP::SSL; use base 'Net::SMTP'; @Net::SMTP::ISA = map { $_ eq 'IO::Socket::INET' ? 'IO::Socket::SSL' : $_ } @Net::SMTP::ISA;
  • 33. Perl beta use ab package Net::SMTP::SSL; use IO::Socket::SSL; use Net::SMTP; @ISA = ( 'IO::Socket::SSL', grep { $_ ne 'IO::Socket::INET' } @Net::SMTP::ISA ); for ( keys %Net::SMTP:: ) { next unless defined *{$Net::SMTP::{$_}}{CODE}; *{$_} = &{quot;Net::SMTP::$_quot;}; }
  • 34. Perl beta use ab package String; use overload 'quot;quot;' => sub { ${+shift} }; sub new { bless $_[1], $_[0] } sub length { length(${+shift}) } sub exclaim { uc(${+shift}) . '!!1' }
  • 35. Perl beta use ab print quot;Casey Westquot;->()->length; print quot;never touch them togetherquot;->()->exclaim; sub AUTOLOAD { ($m) = ($::AUTOLOAD =~ /.+::(.+)/); String->new($m); } # 10 # NEVER TOUCH THEM TOGETHER!!1
  • 36. Perl beta use ab $me = quot;Casey Westquot;->(); print $me->length; print $me->exclaim; print $me; # 10 # CASEY WEST!!1 # Casey West
  • 37. Perl beta use ab new $me quot;Casey West Srquot;; print quot;$me is quot; . $me->length; # Casey West Sr is 13
  • 38. Perl beta use ab sub new { ref($_[0]) ? ${$_[0]} = $_[1] : bless $_[1], $_[0] ; }
  • 39. Perl beta use ab print &Thanks, &for, &coming, &to, &my, &talk, quot;nquot;; sub AUTOLOAD { ($w) = ($::AUTOLOAD =~ /.*::(.+)/); quot;$w quot;; }