BATsh
view release on metacpan or search on metacpan
case $var in pattern) ... ;; esac
test / [ ... ] (file tests, string, integer comparisons)
cd, pwd, exit, true, false, :, read, shift
$(( arithmetic )), $( command substitution )
${VAR}, ${VAR:-default}, ${VAR:=default}
source / . file
REQUIREMENTS
Perl 5.005_03 or later. Core modules only. No external shell required.
BUGS AND LIMITATIONS
The built-in CMD interpreter does not support all cmd.exe extensions
(e.g. FOR /F with complex token options, delayed expansion with !VAR!).
The built-in SH interpreter does not support pipelines (|), redirection
(> >> <), background execution (&), or here-documents (<<).
Section boundary detection is token-based (uppercase vs. lowercase first
token). Mixed-case first tokens are treated as SH.
Please report bugs via the issue tracker:
lib/BATsh.pm view on Meta::CPAN
test / [ ... ] (file tests, string, integer comparisons)
cd, pwd, exit, true, false, :, read, shift
$(( arithmetic )), $( command substitution )
${VAR}, ${VAR:-default}, ${VAR:=default}
source / . file
=head1 REQUIREMENTS
Perl 5.005_03 or later. Core modules only. No external shell required.
=head1 BUGS AND LIMITATIONS
The built-in CMD interpreter does not support all cmd.exe extensions
(e.g. FOR /F with complex token options, delayed expansion with !VAR!).
The built-in SH interpreter does not support pipelines (|), redirection
(> >> <), background execution (&), or here-documents (<<).
Section boundary detection is token-based (uppercase vs. lowercase first
token). Mixed-case first tokens are treated as SH.
t/lib/INA_CPAN_Check.pm view on Meta::CPAN
my $pm_ver = _pm_version("$root/$pm_files[0]") if @pm_files;
my $j1 = 1;
if ($meta_yml =~ /^requires:(.*?)(?=^\S)/ms) {
my $block = $1;
while ($block =~ /:\s*([\d._]+)/g) {
if (defined $pm_ver && $1 eq $pm_ver) { $j1 = 0; last }
}
}
ok($j1, 'J - PREREQ_PM: no core dep version equals module VERSION');
# J2: BUGS AND LIMITATIONS has no stale entries
my @stale = exists $opt{j2_stale} ? @{$opt{j2_stale}} : ();
my $bugs_text = '';
if (@pm_files) {
my $pm_text = _slurp("$root/$pm_files[0]");
if ($pm_text =~ /=head1 BUGS AND LIMITATIONS(.*?)^=head1/ms) {
$bugs_text = $1;
}
}
my $j2 = 1;
for my $entry (@stale) {
if (index($bugs_text, $entry) >= 0) { $j2 = 0; last }
}
ok($j2, 'J - BUGS AND LIMITATIONS: no stale removed-feature entries');
# J3+J4: test file plan vs ok-comment count
for my $tf (@t_files) {
my @lines = _slurp_lines("$root/$tf");
my @ok_comments;
my $plan = undef;
for my $line (@lines) {
$line =~ s/\r?\n$//;
push @ok_comments, $1 if $line =~ /^#\s+ok\s+(\d+)\b/;
$plan = $1 if !defined $plan && $line =~ /^1\.\.(\d+)$/;
( run in 1.639 second using v1.01-cache-2.11-cpan-39bf76dae61 )