NAME

Sidef::Module::Require

DESCRIPTION

This module can load a perl module at run-time, via the keyword require.

SYNOPSIS

var req = (require "My::Perl::Module");

if (nil != req) {   # module successfully loaded
    var result = (req.some_method);
}

METHODS

frequire

Require.frequire() -> Obj

Return the

require

require(String) -> Sidef::Module::Caller

  • Loading Object-Oriented modules:

    var req = (require "Some::Perl::Module");

    When the Perl module is successfully loaded, it returns a Sidef::Module::Caller object, which can call any method from the required module.

    var oo_mod = (req.new);
    var result = (oo_mod.some_method);
    var solved = (oo_mod.solve(1, 4));
  • Loading Functional-oriented modules:

    To initialize a functional-oriented module, apply an empty method ('->()') on the object returned by the require keyword.

    var func_mod = (require "Some::Perl::Module"->());     # notice the '->()'
    
    var result = (func_mod->some_function(x,y));
    var solved = (func_mod->solve(1, 4));
  • Real object-oriented module loading example:

    var req = (require 'LWP::UserAgent');
    
    if (nil != req) {   # if the module is successfully loaded
    
        var lwp = (req.new(
                'show_progress' => 1,
                'timeout'       => 10,
                'agent'         => 'Mozilla/5.0',
        ));
    
        var resp = (lwp->get("http://google.com"));
    
        if (Bool.new(resp->is_success)) {
            var content = (Str.new(resp->content));
            # ... do something with the content variable ...
        }
        else {
            "[ERROR] Response: %s\n".sprintf(Str.new(resp->status_line)).warn;
        }
    }
  • Real functional-oriented module loading example:

    var spec = ( require 'File::Spec::Functions'->() );
    
    # Calling the curdir() function
    var curdir = (Dir.new(spec.curdir));
    
    # Call the catfile() function
    var file   = (File.new(spec.catfile("my", "dir", "file.ext")));
    
    ## On Unix, file is 'my/dir/file.ext'