Mastering Perl for Bioinformatics [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Mastering Perl for Bioinformatics [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید










1.4 Packages


Packages are a
different way to protect a program's variables from
interacting unintentionally. In Perl, you can easily assign separate
namespaces to entire sections of your code, which helps prevent
namespace collisions and lets you create modules.

Packages are very easy to use. A one-line
package declaration puts a new namespace in
effect. Here's a simple example:

$dna = 'AAAAAAAAAA';
package Mouse;
$dna = 'CCCCCCCCCC';
package Celegans;
$dna = 'GGGGGGGGGG';

In this snippet, there are three variables, each with the same name,
$dna. However, they are in three different
packages, so they appear in three different symbol tables and are
managed separately by the running Perl program.

The first line of the code is an assignment of a poly-A DNA fragment
to a variable $dna. Because no package is
explicitly named, this $dna variable appears in
the default namespace main.

The second line of code introduces a new namespace for variable and
subroutine definitions by declaring package
Mouse;
. At this point, the main
namespace is no longer active, and the Mouse
namespace is brought into play. Note that the name of the namespace
is capitalized; it's a well-established convention
you should follow. The only
noncapitalized
namespace you should use is the default main.

Now that the Mouse namespace is in effect, the
third line of code, which declares a variable,
$dna, is actually declaring a separate variable
unrelated to the first. It contains a poly-C fragment of DNA.

Finally, the last two lines of code declare a new package called
Celegans and a new variable, also called
$dna, that stores a poly-G DNA fragment.

To use these three $dna variables, you need to
explicitly state which packages you want the variables from, as the
following code fragment demonstrates:

print "The DNA from the main package:\n\n";
print $main::dna, "\n\n";
print "The DNA from the Mouse package:\n\n";
print $Mouse::dna, "\n\n";
print "The DNA from the Celegans package:\n\n";
print $Celegans::dna, "\n\n";

This gives the following output:

The DNA from the main package:
AAAAAAAAAA
The DNA from the Mouse package:
CCCCCCCCCC
The DNA from the Celegans package:
GGGGGGGGGG

As you can see, the variable name can be specified as to a particular
package by putting the package name and two colons before the
variable name (but after the $,
@, or % that specifies the type
of variable). If you don't specify a package in this
way, Perl assumes you want the current package, which may not
necessarily be the main package, as the following
example shows:

#
# Define the variables in the packages
#
$dna = 'AAAAAAAAAA';
package Mouse;
$dna = 'CCCCCCCCCC';
#
# Print the values of the variables
#
print "The DNA from the current package:\n\n";
print $dna, "\n\n";
print "The DNA from the Mouse package:\n\n";
print $Mouse::dna, "\n\n";

This produces the following output:

The DNA from the current package:
CCCCCCCCCC
The DNA from the Mouse package:
CCCCCCCCCC

Both print $dna and print
$Mouse::dna
reference the same variable. This is because
the last package declaration was
package Mouse;, so the
print $dna statement prints the
value of the variable $dna as defined in the
current package, which is Mouse.

The rule is, once a package has been declared, it becomes the current
package until the next package declaration or until the end of the
file. (You can also declare packages within blocks, evals, or
subroutine definitions, in which case the package stays in effect
until the end of the block, eval, or subroutine definition.)

By far the most common use of package is to call
it once near the top of a file and have it stay in effect for all the
code in the file. This is how modules are
defined, as the next section shows.


/ 156