EnglishFrenchSpanyol

Favicon OnWorks

perlpragma - Dalam Talian di Awan

Jalankan perlpragma dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan perlpragma yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


perlpragma - cara menulis pragma pengguna

DESCRIPTION


Pragma ialah modul yang mempengaruhi beberapa aspek masa penyusunan atau masa larian
tingkah laku Perl, seperti "ketat" atau "amaran". Dengan Perl 5.10 anda tidak lagi
terhad kepada pragmata terbina dalam; anda kini boleh mencipta pragmata pengguna yang mengubah suai
tingkah laku fungsi pengguna dalam skop leksikal.

A asas contoh


Sebagai contoh, katakan anda perlu mencipta kelas yang melaksanakan matematik terlampau beban
operator, dan ingin menyediakan pragma anda sendiri yang berfungsi seperti "use
integer;" Anda mahukan kod ini

gunakan MyMaths;

my $l = MyMaths->new(1.2);
my $r = MyMaths->new(3.4);

cetak "A: ", $l + $r, "\n";

gunakan myint;
cetak "B: ", $l + $r, "\n";

{
tiada myint;
cetak "C: ", $l + $r, "\n";
}

cetak "D: ", $l + $r, "\n";

tiada myint;
cetak "E: ", $l + $r, "\n";

untuk memberikan output

A: 4.6
B: 4
C: 4.6
D:4
E: 4.6

iaitu, di mana "gunakan myint;" sedang berkuat kuasa, operasi tambah dipaksa kepada integer, sedangkan
secara lalai mereka tidak, dengan tingkah laku lalai dipulihkan melalui "no myint;"

Pelaksanaan minimum pakej "MyMaths" adalah seperti ini:

pakej MyMaths;
gunakan amaran;
gunakan ketat;
gunakan myint();
gunakan lebihan '+' => sub {
saya ($l, $r) = @_;
# Lulus 1 untuk menyemak satu tahap panggilan dari sini
jika (myint::dalam kesan(1)) {
int($$l) + int($$r);
} Lain {
$$l + $$r;
}
};

sub baru {
my ($class, $value) = @_;
memberkati \$nilai, $kelas;
}

1;

Perhatikan bagaimana kami memuatkan pengguna pragma "myint" dengan senarai kosong "()" untuk mengelakkan "import"nya
sedang dipanggil.

Interaksi dengan kompilasi Perl berlaku di dalam pakej "myint":

pakej myint;

gunakan ketat;
gunakan amaran;

sub import {
$^H{"myint/in_effect"} = 1;
}

sub nyahimport {
$^H{"myint/in_effect"} = 0;
}

sub in_effect {
my $level = shift // 0;
$hinthash saya = (pemanggil($level))[10];
kembalikan $hinthash->{"myint/in_effect"};
}

1;

Memandangkan pragmata dilaksanakan sebagai modul, seperti mana-mana modul lain, "gunakan myint;" menjadi

BERMULA {
memerlukan myint;
myint->import();
}

dan "tiada myint;" ialah

BERMULA {
memerlukan myint;
myint->unimport();
}

Oleh itu rutin "import" dan "nyahimport" dipanggil di menyusun masa untuk kod pengguna.

Pragmata pengguna menyimpan keadaan mereka dengan menulis kepada cincang ajaib "%^H", oleh itu kedua-duanya
rutin memanipulasinya. Maklumat keadaan dalam "%^H" disimpan dalam optree, dan boleh
diambil baca sahaja pada masa jalan dengan "pemanggil()", pada indeks 10 senarai yang dikembalikan
keputusan. Dalam contoh pragma, pengambilan semula dimasukkan ke dalam rutin "in_effect()",
yang mengambil sebagai parameter bilangan bingkai panggilan untuk naik untuk mencari nilai
pragma dalam skrip pengguna. Ini menggunakan "pemanggil()" untuk menentukan nilai
$^H{"myint/in_effect"} apabila setiap baris skrip pengguna dipanggil, dan oleh itu
berikan semantik yang betul dalam subrutin yang melaksanakan penambahan terlampau beban.

Utama menamakan


Terdapat hanya satu "%^H", tetapi sewenang-wenangnya banyak modul yang ingin menggunakan skopnya
semantik. Untuk mengelak daripada memijak jari kaki masing-masing, mereka perlu memastikan menggunakan yang berbeza
kunci dalam cincang. Oleh itu, adalah konvensional untuk modul hanya menggunakan kekunci yang bermula
dengan nama modul (nama pakej utamanya) dan aksara "/". Selepas ini
awalan mengenal pasti modul, selebihnya kunci terserah sepenuhnya kepada modul: ia mungkin
sertakan mana-mana aksara sekalipun. Sebagai contoh, modul "Foo::Bar" harus menggunakan kekunci sedemikian
sebagai "Foo::Bar/baz" dan "Foo::Bar/$%/_!". Modul yang mengikuti konvensyen ini semuanya berfungsi dengan baik
antara satu sama lain.

Teras Perl menggunakan segelintir kunci dalam "%^H" yang tidak mengikut konvensyen ini, kerana
mereka mendahuluinya. Kunci yang mengikuti konvensyen tidak akan bercanggah dengan kunci teras
kunci sejarah.

Pelaksanaan butir-butir


Optree dikongsi antara urutan. Ini bermakna terdapat kemungkinan bahawa optree
akan hidup lebih lama daripada urutan tertentu (dan oleh itu contoh penterjemah) yang dibuat
ia, maka skalar Perl benar tidak boleh disimpan dalam optree. Sebaliknya bentuk padat digunakan,
yang hanya boleh menyimpan nilai integer (ditandatangani dan tidak ditandatangani), rentetan atau "undef" -
rujukan dan nilai titik terapung adalah bertali. Jika anda perlu menyimpan berbilang
nilai atau struktur kompleks, anda harus mensirikannya, contohnya dengan "pek". The
pemadaman kunci cincang daripada "%^H" direkodkan, dan seperti biasa boleh dibezakan daripada
kewujudan kunci dengan nilai "undef" dengan "wujud".

jangan cuba untuk menyimpan rujukan kepada struktur data sebagai integer yang diambil melalui
"pemanggil" dan ditukar kembali, kerana ini tidak akan selamat untuk benang. Akses adalah kepada
struktur tanpa mengunci (yang tidak selamat untuk skalar Perl), dan sama ada struktur
perlu bocor, atau ia perlu dibebaskan apabila benang penciptaannya ditamatkan, yang mungkin
sebelum rujukan optree ia dipadamkan, jika urutan lain hidup lebih lama.

Gunakan perlpragma dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

  • 1
    AstroOrzPlayer
    AstroOrzPlayer
    AstroOrz Player ialah pemain media percuma
    perisian, bahagian berdasarkan WMP dan VLC. The
    pemain adalah dalam gaya minimalis, dengan
    lebih daripada sepuluh warna tema, dan boleh juga
    b ...
    Muat turun AstroOrzPlayer
  • 2
    movistartv
    movistartv
    Kodi Movistar+ TV ialah ADDON untuk XBMC/
    Kodi que permite disponer de un
    penyahkodan perkhidmatan IPTV de
    Movistar integrado en uno de los
    pusat media ma...
    Muat turun movistartv
  • 3
    Kod :: Blok
    Kod :: Blok
    Kod::Blocks ialah sumber terbuka percuma,
    merentas platform C, C++ dan Fortran IDE
    dibina untuk memenuhi keperluan yang paling mendesak
    daripada penggunanya. Ia direka untuk menjadi sangat
    memanjang ...
    Muat Turun Kod::Blok
  • 4
    Di tengah-tengah
    Di tengah-tengah
    Di tengah-tengah atau Antara Muka Minecraft Lanjutan
    dan Penjejakan Data/Struktur ialah alat untuk
    memaparkan gambaran keseluruhan Minecraft
    dunia, tanpa benar-benar menciptanya. Ia
    boleh ...
    Muat turun Ditengah
  • 5
    MSYS2
    MSYS2
    MSYS2 ialah koleksi alatan dan
    perpustakaan menyediakan anda dengan
    persekitaran yang mudah digunakan untuk membina,
    memasang dan menjalankan Windows asli
    perisian. Ia con...
    Muat turun MSYS2
  • 6
    libjpeg-turbo
    libjpeg-turbo
    libjpeg-turbo ialah codec imej JPEG
    yang menggunakan arahan SIMD (MMX, SSE2,
    NEON, AltiVec) untuk mempercepatkan garis dasar
    Mampatan dan penyahmampatan JPEG dihidupkan
    x86, x8...
    Muat turun libjpeg-turbo
  • Lebih »

Arahan Linux

Ad