SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Perl Programming
                 Course
                 Scalar data types




Krasimir Berov

I-can.eu
Contents
1. Perl variables/data types
2. Numeric operators
3. String operators
4. Scalar functions (summary)
5. Undefined quantities
6. Type-casting in Perl?
7. References
Perl variable/data types
Perl has three main variable types:
   –   scalars
   –   arrays
   –   hashes
... Plus two additional:
   –   typeglobs
   –   filehandles
See: perlintro, perldata
Variable names
●   Values are usually referred to by name, or through a
    named reference.
●   The first character tells you to what sort/type of data
    structure it refers ($,@,%).
●   The rest is the name of the particular value to which it
    refers.
●   Usually this name is a single identifier – a string
    beginning with a letter or underscore, and containing
    letters, underscores, and digits.
●   It may be also a chain of identifiers, separated by ::
    (see perlmod/Packages, perlref).
Perl Scalars
●   A scalar can contain a single string (of any size, limited
    only by the available memory), number, or a reference
    to something (see perlref).
●   There are also a number of "magic" scalars with
    names that look like punctuation or line noise ($_, $/,
    $] ...).
    my $animal = "camel";
    my $answer = 22;
    print "Me:    Hello $animal! How old are you?n";
    print "$animal: $answer.$/";
    print '-'x 20, $/;
    print 'Named reference: ',${animal},$/;
    $Other::animal = 'llama';
    print "From package 'Other': $Other::animaln";
    print 'Perl version: ',$], $/;
Perl Arrays
●   Arrays are ordered lists of scalars indexed by
    number, starting with 0.




    my @animals = ("camel", "llama", "пиле");
    my @numbers = (23, 42, 69);
    my @mixed   = ("camel", 42, 1.23);
    print @animals .$/;#what the...;) scalar context
    print "@animals" . $/;#interpolated array
    print "@animals @numbers" . $/;#interpolated arrays
    print @animals, @numbers, $/;#list context
Perl Hashes
●   Hashes are unordered collections of scalar
    values indexed by their associated string key.




    my %fruit_colors = (
        apple => "red",
        banana => "yellow",
    );
    print
        map { "$_ => $fruit_colors{$_}n" }
            sort
                keys %fruit_colors;
    print "%fruit_colorsn"; #hashes can NOT be interpolated
Back to Scalars?!..
Scalar values
●   All data in Perl is a scalar, an array of scalars, or a
    hash of scalars.
●   A scalar may contain one single value which is:
    –   String
    –   Number
    –   Reference (more later)
    –   Filehandle (another time (I/O) )
●   Conversion from one form to another is
    transparent
●   Scalar values are by default undefined.
What are scalars (revisited)
●   A scalar is a single string, number, or a reference
    to something.
●   A scalar value is interpreted as TRUE in the
    Boolean sense if it is not the null string or the
    number 0 (or its string equivalent, "0").


    #try this on the commandline
    >perl -e 'print "truen" if "0" '
    >perl -e 'print "falsen" unless "0" '
    >...
Scalar functions or operators?
●   Many of the built-in functions in Perl are referred
    often to as named operators
●   There are several categories depending on the
    usage, type of manipulated or produced data, etc.
●   For example:
    –   Functions for SCALARs or strings
    –   Numeric functions
    –   Regular expressions and pattern matching...
●   One function/operator may fall in one or more categories
    depending on the context.
Assignment operator
●   The most common operation on a scalar (or
    array, or hash) variable is assignment.
●   This way we give a value to a variable.
●   This way we give a name to a literal value.




    my $name = 'Larry Wall';
    print 'My name is ', $name, $/;
Numeric operators
●   Named operators (functions) that act on numbers
    and produce numbers
    –   abs, hex, oct
Numeric operators
●   abs VALUE
    abs
    Returns the absolute value of its argument. If VALUE
    is omitted, uses $_.
●   See perlfunc/abs



    my $answer = -22;
    print abs $answer;
    print abs "$answer";
Numeric operators
●   hex EXPR
    hex
    Interprets EXPR as a hex string and returns the
    decimal value. (To convert strings that might start with
    either 0, 0x, or 0b, see oct.) If EXPR is omitted, uses
    $_.
●   To present something as hex, look into printf, sprintf, or
    unpack.
●   See perlfunc/hex
    print hex '0xBf';
    print hex 'bF';
Numeric operators
●   oct EXPR
    oct
    Interprets EXPR as an octal string and returns the
    corresponding value.
    –   If EXPR starts off with 0x, interprets it as a hex string.
    –   If EXPR starts off with 0b, it is interpreted as a binary
        string.
    –   Leading whitespace is ignored in all three cases.
    –   If EXPR is omitted, uses $_.
    –   To go the other way (produce a number in octal), use
        sprintf() or printf()
    print(   oct   0b10, $/);
    print(   oct   '0xBf', $/);
    print(   oct   '07', $/);
    print(   oct   '0777', $/);
String operators
●   Named operators (functions) for SCALARs or
    strings
    –   length, chop and chomp, uc/lc
String operators
●   length EXPR
    length
    Returns the length in characters of the value of EXPR.
    –   If EXPR is omitted, returns length of $_.
    –   Cannot be used on an array or hash to find out how
        many elements these have.
    –   For that, use scalar @array and scalar keys %hash
        respectively.
    –   if the EXPR is in Unicode, you will get the number of
        characters, not the number of bytes
    use utf8;
    print( length   'kniga' , $/);
    use bytes;
    print( length   'книга', $/);
    no bytes;
    print( length   'книга', $/);
String operators
●   chop VARIABLE
    chop( LIST )
    chop
    Chops off the last character of a string and returns the character
    chopped.
    –   If VARIABLE is omitted, chops $_.
    –   If VARIABLE is a hash, it chops the hash's values, but
        not its keys.
    –   If you chop a list, each element is chopped. Only the
        value of the last chop is returned.
    #!/usr/bin/perl -C
    #binmode(STDOUT, ':encoding(cp866)');#on win32
    use utf8;
    binmode(STDOUT, ':utf8');
    my ($bob_latin, $bob_cyr) = ('bob', 'боб');
    print( chop($bob_latin) , $/, chop($bob_cyr) , $/);
String operators
●   chomp VARIABLE
    chomp( LIST )
    chomp
    Safer version of chop.
    –   Removes any trailing string that corresponds to the
        current value of $/.
    –   Returns the total number of characters removed
        from all its arguments.
    #binmode(STDOUT, ':encoding(cp866)');#on win32
    use utf8;
    binmode(STDOUT, ':utf8');
    my ($bob_latin, $bob_cyr) = ("bobn", "боб$/");
    print( $bob_latin, $bob_cyr, $/ );
    print( chomp($bob_latin,$bob_cyr) , $/ );
    print( $bob_latin, $bob_cyr, $/ );
String operators
●   lc EXPR
    lc
    Returns a lowercased version of EXPR. If EXPR is
    omitted, uses $_.
●   uc EXPR
    uc
    Returns an uppercased version of EXPR. If EXPR is
    omitted, uses $_.
    #binmode(STDOUT, ':encoding(cp866)');#on win32
    use utf8;
    binmode(STDOUT, ':utf8');
    my ($lcstr, $ucstr) = ("BOBn", "боб$/");
    print( lc $lcstr, uc($ucstr), $/ );
Un/defined quantities
●   undef   => nothing, empty, void
●   defined => something not undef :)
Un/defined quantities
●   undef EXPR
    undef
    Undefines the value of EXPR, which must be an lvalue.
    –   Use only on a scalar value, an array (using @), a hash (using
        %), a subroutine (using &), or a typeglob (using *)...
    –   Always returns the undefined value.



    #use strict; use warnings; use diagnostics;
    my $name;
    print $name ,$/;
    $name ="Larry";
    print $name ,$/;
    undef $name ;
    print $name ,$/;
Un/defined quantities
●   defined EXPR
    defined
    Returns a Boolean value telling whether EXPR has a value other
    than the undefined value undef.

    –   If EXPR is not present, $_ will be checked.
    –   Allows you to distinguish undef from other values.
    –  A simple Boolean test will not distinguish among undef,
       zero, the empty string, and "0", which are all equally
    my false.
       $data;
    print $data if defined($data);
    $data = 0;
    print defined($data);
    print $data if defined($data);
    undef $data;
    print defined($data);
    $_ = 2;
    print defined;
Scalar functions (summary)
●   Functions for SCALARs or strings
    –   chomp, chop, chr, crypt, hex, index, lc, lcfirst,
        length, oct, ord, pack, q//, qq//, reverse, rindex,
        sprintf, substr, tr///, uc, ucfirst, y///
●   Numeric functions
    –   abs, atan2, cos, exp, hex, int, log, oct, rand, sin,
        sqrt, srand
●   Miscellaneous functions
●   defined, dump, eval, formline, local, my, our, reset,
    scalar, undef, wantarray
●   See perlfunc
Type casting operations :X :(
●   C Operators Missing From Perl:
    –   Type-casting operator
    –   ...
●   From perlglossary:
    –   type casting: Converting data from one type to
        another. C permits this. Perl does not need it. Nor
        want it.
●   I hope you have in mind references :)...
References
●   A scallar can also contain a reference.
●   A reference is just a piece of data pointing to another piece of data
    (anonimous or named).
●   In Perl, a reference is always a scalar, although the data it refers to
    may not be
●   Languages like C and C++ have a feature that's similar to references,
    called pointers.
●   Pointers leave interpretation of what's there for the programmer
●   References only store memory locations for specific, clearly defined
    data structures – maybe not predefined, but defined nevertheless.
●   References allow you to leave the arrangement of computer memory to
    the computer itself.
References
●   ref EXPR
    ref
    Returns a non-empty string if EXPR is a reference, the
    empty string otherwise.
    –   If EXPR is not specified, $_ will be used.
    –   The value returned depends on the type of thing the
        reference is a reference to.
    –   Builtin types include:
        SCALAR, ARRAY, HASH, CODE, REF, GLOB, LVALUE,
        FORMAT, IO, Regexp
    –   If the referenced object has been blessed into a
        package, then that package name is returned instead.
    –   You can think of ref as a typeof operator.
References
●   Example
    use Data::Dumper;
    my %hash   = (me =>'you' );
    my @array = ('we',%hash,['them']);
    my $scalar = @array;
    print ref $scalar, $/;
    print $scalar,$/;
    print Dumper($scalar);

●   References will be discussed another time
Scalar data types




Questions?
Exercises
1. Write a program that converts a given hex digit to decimal
   and displays it on the screen.
2. Write a program which displays the absolute of a negative
   number.
3. Write a program which removes the last letter from a string
   (no matter what the string is) and displays the letter on the
   screen.
4. Write a program which converts a number to its
   corresponding character and displays the letter on the
   screen.
5. Write a program which prints the string 'Здрасти' 3 times on
   3 separate lines using only one print statement.

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Unit 1-introduction to perl
Unit 1-introduction to perlUnit 1-introduction to perl
Unit 1-introduction to perl
 
Intro to Perl and Bioperl
Intro to Perl and BioperlIntro to Perl and Bioperl
Intro to Perl and Bioperl
 
String.ppt
String.pptString.ppt
String.ppt
 
Subroutines in perl
Subroutines in perlSubroutines in perl
Subroutines in perl
 
File handling in c
File handling in cFile handling in c
File handling in c
 
Ab Initio Protein Structure Prediction
Ab Initio Protein Structure PredictionAb Initio Protein Structure Prediction
Ab Initio Protein Structure Prediction
 
artificial neural network-gene prediction
artificial neural network-gene predictionartificial neural network-gene prediction
artificial neural network-gene prediction
 
Multi threading
Multi threadingMulti threading
Multi threading
 
Namespaces
NamespacesNamespaces
Namespaces
 
Perl Programming - 01 Basic Perl
Perl Programming - 01 Basic PerlPerl Programming - 01 Basic Perl
Perl Programming - 01 Basic Perl
 
Pearl
PearlPearl
Pearl
 
Character Array and String
Character Array and StringCharacter Array and String
Character Array and String
 
FASTA
FASTAFASTA
FASTA
 
Polyadenylation
PolyadenylationPolyadenylation
Polyadenylation
 
Introduction to Perl and BioPerl
Introduction to Perl and BioPerlIntroduction to Perl and BioPerl
Introduction to Perl and BioPerl
 
Gene expression concept and analysis
Gene expression concept and analysisGene expression concept and analysis
Gene expression concept and analysis
 
String functions in C
String functions in CString functions in C
String functions in C
 
Oop concepts in python
Oop concepts in pythonOop concepts in python
Oop concepts in python
 
Sequence Alignment
Sequence AlignmentSequence Alignment
Sequence Alignment
 
Scoring matrices
Scoring matricesScoring matrices
Scoring matrices
 

Ähnlich wie Scalar data types (20)

Introduction to perl_lists
Introduction to perl_listsIntroduction to perl_lists
Introduction to perl_lists
 
Lists and arrays
Lists and arraysLists and arrays
Lists and arrays
 
Barcelona.pm Curs1211 sess01
Barcelona.pm Curs1211 sess01Barcelona.pm Curs1211 sess01
Barcelona.pm Curs1211 sess01
 
Our Friends the Utils: A highway traveled by wheels we didn't re-invent.
Our Friends the Utils: A highway traveled by wheels we didn't re-invent. Our Friends the Utils: A highway traveled by wheels we didn't re-invent.
Our Friends the Utils: A highway traveled by wheels we didn't re-invent.
 
Introduction to perl_control structures
Introduction to perl_control structuresIntroduction to perl_control structures
Introduction to perl_control structures
 
newperl5
newperl5newperl5
newperl5
 
newperl5
newperl5newperl5
newperl5
 
Scripting3
Scripting3Scripting3
Scripting3
 
Intoduction to php strings
Intoduction to php  stringsIntoduction to php  strings
Intoduction to php strings
 
Unit 1-array,lists and hashes
Unit 1-array,lists and hashesUnit 1-array,lists and hashes
Unit 1-array,lists and hashes
 
Cs3430 lecture 16
Cs3430 lecture 16Cs3430 lecture 16
Cs3430 lecture 16
 
Php basics
Php basicsPhp basics
Php basics
 
Perl names values and variables
Perl names values and variablesPerl names values and variables
Perl names values and variables
 
Unit 1-perl names values and variables
Unit 1-perl names values and variablesUnit 1-perl names values and variables
Unit 1-perl names values and variables
 
PERL.ppt
PERL.pptPERL.ppt
PERL.ppt
 
perl_lessons
perl_lessonsperl_lessons
perl_lessons
 
perl_lessons
perl_lessonsperl_lessons
perl_lessons
 
Marc’s (bio)perl course
Marc’s (bio)perl courseMarc’s (bio)perl course
Marc’s (bio)perl course
 
Perl slid
Perl slidPerl slid
Perl slid
 
Subroutines
SubroutinesSubroutines
Subroutines
 

Mehr von Krasimir Berov (Красимир Беров) (13)

Хешове
ХешовеХешове
Хешове
 
Списъци и масиви
Списъци и масивиСписъци и масиви
Списъци и масиви
 
Скаларни типове данни
Скаларни типове данниСкаларни типове данни
Скаларни типове данни
 
Въведение в Perl
Въведение в PerlВъведение в Perl
Въведение в Perl
 
System Programming and Administration
System Programming and AdministrationSystem Programming and Administration
System Programming and Administration
 
Network programming
Network programmingNetwork programming
Network programming
 
Processes and threads
Processes and threadsProcesses and threads
Processes and threads
 
Working with databases
Working with databasesWorking with databases
Working with databases
 
Working with text, Regular expressions
Working with text, Regular expressionsWorking with text, Regular expressions
Working with text, Regular expressions
 
IO Streams, Files and Directories
IO Streams, Files and DirectoriesIO Streams, Files and Directories
IO Streams, Files and Directories
 
Syntax
SyntaxSyntax
Syntax
 
Hashes
HashesHashes
Hashes
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 

Kürzlich hochgeladen

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Scalar data types

  • 1. Perl Programming Course Scalar data types Krasimir Berov I-can.eu
  • 2. Contents 1. Perl variables/data types 2. Numeric operators 3. String operators 4. Scalar functions (summary) 5. Undefined quantities 6. Type-casting in Perl? 7. References
  • 3. Perl variable/data types Perl has three main variable types: – scalars – arrays – hashes ... Plus two additional: – typeglobs – filehandles See: perlintro, perldata
  • 4. Variable names ● Values are usually referred to by name, or through a named reference. ● The first character tells you to what sort/type of data structure it refers ($,@,%). ● The rest is the name of the particular value to which it refers. ● Usually this name is a single identifier – a string beginning with a letter or underscore, and containing letters, underscores, and digits. ● It may be also a chain of identifiers, separated by :: (see perlmod/Packages, perlref).
  • 5. Perl Scalars ● A scalar can contain a single string (of any size, limited only by the available memory), number, or a reference to something (see perlref). ● There are also a number of "magic" scalars with names that look like punctuation or line noise ($_, $/, $] ...). my $animal = "camel"; my $answer = 22; print "Me: Hello $animal! How old are you?n"; print "$animal: $answer.$/"; print '-'x 20, $/; print 'Named reference: ',${animal},$/; $Other::animal = 'llama'; print "From package 'Other': $Other::animaln"; print 'Perl version: ',$], $/;
  • 6. Perl Arrays ● Arrays are ordered lists of scalars indexed by number, starting with 0. my @animals = ("camel", "llama", "пиле"); my @numbers = (23, 42, 69); my @mixed = ("camel", 42, 1.23); print @animals .$/;#what the...;) scalar context print "@animals" . $/;#interpolated array print "@animals @numbers" . $/;#interpolated arrays print @animals, @numbers, $/;#list context
  • 7. Perl Hashes ● Hashes are unordered collections of scalar values indexed by their associated string key. my %fruit_colors = ( apple => "red", banana => "yellow", ); print map { "$_ => $fruit_colors{$_}n" } sort keys %fruit_colors; print "%fruit_colorsn"; #hashes can NOT be interpolated
  • 9. Scalar values ● All data in Perl is a scalar, an array of scalars, or a hash of scalars. ● A scalar may contain one single value which is: – String – Number – Reference (more later) – Filehandle (another time (I/O) ) ● Conversion from one form to another is transparent ● Scalar values are by default undefined.
  • 10. What are scalars (revisited) ● A scalar is a single string, number, or a reference to something. ● A scalar value is interpreted as TRUE in the Boolean sense if it is not the null string or the number 0 (or its string equivalent, "0"). #try this on the commandline >perl -e 'print "truen" if "0" ' >perl -e 'print "falsen" unless "0" ' >...
  • 11. Scalar functions or operators? ● Many of the built-in functions in Perl are referred often to as named operators ● There are several categories depending on the usage, type of manipulated or produced data, etc. ● For example: – Functions for SCALARs or strings – Numeric functions – Regular expressions and pattern matching... ● One function/operator may fall in one or more categories depending on the context.
  • 12. Assignment operator ● The most common operation on a scalar (or array, or hash) variable is assignment. ● This way we give a value to a variable. ● This way we give a name to a literal value. my $name = 'Larry Wall'; print 'My name is ', $name, $/;
  • 13. Numeric operators ● Named operators (functions) that act on numbers and produce numbers – abs, hex, oct
  • 14. Numeric operators ● abs VALUE abs Returns the absolute value of its argument. If VALUE is omitted, uses $_. ● See perlfunc/abs my $answer = -22; print abs $answer; print abs "$answer";
  • 15. Numeric operators ● hex EXPR hex Interprets EXPR as a hex string and returns the decimal value. (To convert strings that might start with either 0, 0x, or 0b, see oct.) If EXPR is omitted, uses $_. ● To present something as hex, look into printf, sprintf, or unpack. ● See perlfunc/hex print hex '0xBf'; print hex 'bF';
  • 16. Numeric operators ● oct EXPR oct Interprets EXPR as an octal string and returns the corresponding value. – If EXPR starts off with 0x, interprets it as a hex string. – If EXPR starts off with 0b, it is interpreted as a binary string. – Leading whitespace is ignored in all three cases. – If EXPR is omitted, uses $_. – To go the other way (produce a number in octal), use sprintf() or printf() print( oct 0b10, $/); print( oct '0xBf', $/); print( oct '07', $/); print( oct '0777', $/);
  • 17. String operators ● Named operators (functions) for SCALARs or strings – length, chop and chomp, uc/lc
  • 18. String operators ● length EXPR length Returns the length in characters of the value of EXPR. – If EXPR is omitted, returns length of $_. – Cannot be used on an array or hash to find out how many elements these have. – For that, use scalar @array and scalar keys %hash respectively. – if the EXPR is in Unicode, you will get the number of characters, not the number of bytes use utf8; print( length 'kniga' , $/); use bytes; print( length 'книга', $/); no bytes; print( length 'книга', $/);
  • 19. String operators ● chop VARIABLE chop( LIST ) chop Chops off the last character of a string and returns the character chopped. – If VARIABLE is omitted, chops $_. – If VARIABLE is a hash, it chops the hash's values, but not its keys. – If you chop a list, each element is chopped. Only the value of the last chop is returned. #!/usr/bin/perl -C #binmode(STDOUT, ':encoding(cp866)');#on win32 use utf8; binmode(STDOUT, ':utf8'); my ($bob_latin, $bob_cyr) = ('bob', 'боб'); print( chop($bob_latin) , $/, chop($bob_cyr) , $/);
  • 20. String operators ● chomp VARIABLE chomp( LIST ) chomp Safer version of chop. – Removes any trailing string that corresponds to the current value of $/. – Returns the total number of characters removed from all its arguments. #binmode(STDOUT, ':encoding(cp866)');#on win32 use utf8; binmode(STDOUT, ':utf8'); my ($bob_latin, $bob_cyr) = ("bobn", "боб$/"); print( $bob_latin, $bob_cyr, $/ ); print( chomp($bob_latin,$bob_cyr) , $/ ); print( $bob_latin, $bob_cyr, $/ );
  • 21. String operators ● lc EXPR lc Returns a lowercased version of EXPR. If EXPR is omitted, uses $_. ● uc EXPR uc Returns an uppercased version of EXPR. If EXPR is omitted, uses $_. #binmode(STDOUT, ':encoding(cp866)');#on win32 use utf8; binmode(STDOUT, ':utf8'); my ($lcstr, $ucstr) = ("BOBn", "боб$/"); print( lc $lcstr, uc($ucstr), $/ );
  • 22. Un/defined quantities ● undef => nothing, empty, void ● defined => something not undef :)
  • 23. Un/defined quantities ● undef EXPR undef Undefines the value of EXPR, which must be an lvalue. – Use only on a scalar value, an array (using @), a hash (using %), a subroutine (using &), or a typeglob (using *)... – Always returns the undefined value. #use strict; use warnings; use diagnostics; my $name; print $name ,$/; $name ="Larry"; print $name ,$/; undef $name ; print $name ,$/;
  • 24. Un/defined quantities ● defined EXPR defined Returns a Boolean value telling whether EXPR has a value other than the undefined value undef. – If EXPR is not present, $_ will be checked. – Allows you to distinguish undef from other values. – A simple Boolean test will not distinguish among undef, zero, the empty string, and "0", which are all equally my false. $data; print $data if defined($data); $data = 0; print defined($data); print $data if defined($data); undef $data; print defined($data); $_ = 2; print defined;
  • 25. Scalar functions (summary) ● Functions for SCALARs or strings – chomp, chop, chr, crypt, hex, index, lc, lcfirst, length, oct, ord, pack, q//, qq//, reverse, rindex, sprintf, substr, tr///, uc, ucfirst, y/// ● Numeric functions – abs, atan2, cos, exp, hex, int, log, oct, rand, sin, sqrt, srand ● Miscellaneous functions ● defined, dump, eval, formline, local, my, our, reset, scalar, undef, wantarray ● See perlfunc
  • 26. Type casting operations :X :( ● C Operators Missing From Perl: – Type-casting operator – ... ● From perlglossary: – type casting: Converting data from one type to another. C permits this. Perl does not need it. Nor want it. ● I hope you have in mind references :)...
  • 27. References ● A scallar can also contain a reference. ● A reference is just a piece of data pointing to another piece of data (anonimous or named). ● In Perl, a reference is always a scalar, although the data it refers to may not be ● Languages like C and C++ have a feature that's similar to references, called pointers. ● Pointers leave interpretation of what's there for the programmer ● References only store memory locations for specific, clearly defined data structures – maybe not predefined, but defined nevertheless. ● References allow you to leave the arrangement of computer memory to the computer itself.
  • 28. References ● ref EXPR ref Returns a non-empty string if EXPR is a reference, the empty string otherwise. – If EXPR is not specified, $_ will be used. – The value returned depends on the type of thing the reference is a reference to. – Builtin types include: SCALAR, ARRAY, HASH, CODE, REF, GLOB, LVALUE, FORMAT, IO, Regexp – If the referenced object has been blessed into a package, then that package name is returned instead. – You can think of ref as a typeof operator.
  • 29. References ● Example use Data::Dumper; my %hash = (me =>'you' ); my @array = ('we',%hash,['them']); my $scalar = @array; print ref $scalar, $/; print $scalar,$/; print Dumper($scalar); ● References will be discussed another time
  • 31. Exercises 1. Write a program that converts a given hex digit to decimal and displays it on the screen. 2. Write a program which displays the absolute of a negative number. 3. Write a program which removes the last letter from a string (no matter what the string is) and displays the letter on the screen. 4. Write a program which converts a number to its corresponding character and displays the letter on the screen. 5. Write a program which prints the string 'Здрасти' 3 times on 3 separate lines using only one print statement.