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.527 second using v1.01-cache-2.11-cpan-299005ec8e3 )