Sidef

 view release on metacpan or  search on metacpan

scripts/RosettaCode/extract_file_extension.sf  view on Meta::CPAN

## https://rosettacode.org/wiki/Extract_file_extension
#

func extension(filename) {
    filename.match(/(\.[a-z0-9]+)\z/i).to_s
}

var files = [
    'http://example.com/download.tar.gz',
    'CharacterModel.3DS',
    '.desktop',
    'document',
    'document.txt_backup',
    '/etc/pam.d/login',
]

var exts = []

files.each {|f|
    exts << (var e = extension(f))
    printf("%-36s -> %-11s\n", f.dump, e.dump)
}

assert_eq(exts, ['.gz', '.3DS', '.desktop', '', '', ''])

scripts/Tests/sysopen_and_sysread.sf  view on Meta::CPAN

#!/usr/bin/ruby

var apps = [];
var desktopFilesPaths = [%d'/usr/share/applications'];

desktopFilesPaths.each { |path|

    path.is_a(Dir)        || next;
    path.open(\var dir_h) || next;

    var counter = 0;
    dir_h.entries.shuffle.each { |fullpath|

        fullpath.is_a(File) || next;

        fullpath.to_s ~~ /\.desktop\z/           || next;
        fullpath.sysopen(\var fh, File.O_RDONLY) || next;
        fh.sysread(\var content, fullpath.size);

        content.decode_utf8!;

        var fields = Hash();
        var regex = /^(\w.*?)=(.*\S)/m;

        while (var match = content.gmatch(regex)) {
            var (key, value) = match...



( run in 0.355 second using v1.01-cache-2.11-cpan-299005ec8e3 )