Perl'de modülleri bağlamak için iki ana operatör kullanılır — use ve require.
use — Modülü derleme aşamasında bağlar. Perl dosyası okunurken hemen çalışır, modülü görünürlük alanına yükler ve import metodunu çağırır (varsa).
require — Modülü çalıştırma zamanı (run-time) sırasında yükler.
require $some_module;).Örnek:
use MyModule; # derleme zamanı; import çağırır require 'MyModule.pm'; # çalıştırma zamanı; import yok
Değişken bir modül adı ile
usekullanabilir miyiz, örneğinuse $module_name;?
Cevap: Hayır. use operatörü, derleme zamanı sırasında statik olarak bilinen bir modül adı gerektirir; require ise değişken adları için uygundur.
Örnek:
my $module = 'Some::Plugin'; require $module; $module->import();
Hikaye
Proje, çok sayıda dinamik olarak yüklenen eklenti ile yazılmıştır. Geliştiricilerden biri yanlışlıkla 'use $plugin' kullandı ve bu derleme hatasına yol açtı. Daha sonra, yüklemenin yalnızca require ile mümkün olduğu ve ardından import'un çağrılması gerektiği anlaşıldı.
Hikaye
Büyük bir Perl hizmetinde, bazı kütüphaneler 'require' ile yüklendi, import çağrılmadı. Üzerinde hesaplanan değişkenler ve fonksiyonlar isim alanına aktarılmadı ve kod undefined subroutine hatalarıyla sonuçlandı.
Hikaye
Geliştirici, bir işlev içinde büyük bir kod bloğu yüklemeye çalıştı 'use' ile, modülün yalnızca gerektiğinde yükleneceğini düşünerek, ancak pratikte modül başlangıçta yüklendi ve gereksiz bellek kullanımına neden oldu.