summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pygments/lexers/agile.py4
-rw-r--r--tests/examplefiles/perl_misc62
2 files changed, 65 insertions, 1 deletions
diff --git a/pygments/lexers/agile.py b/pygments/lexers/agile.py
index 264983f8..4b2a3792 100644
--- a/pygments/lexers/agile.py
+++ b/pygments/lexers/agile.py
@@ -893,7 +893,9 @@ class PerlLexer(RegexLexer):
(r'0_?[0-7]+(_[0-7]+)*', Number.Oct),
(r'0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*', Number.Hex),
(r'0b[01]+(_[01]+)*', Number.Bin),
- (r'\d+', Number.Integer),
+ (r'(?i)(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?', Number.Float),
+ (r'(?i)\d+(_\d*)*e[+-]?\d+(_\d*)*', Number.Float),
+ (r'\d+(_\d+)*', Number.Integer),
(r"'(\\\\|\\'|[^'])*'", String),
(r'"(\\\\|\\"|[^"])*"', String),
(r'`(\\\\|\\`|[^`])*`', String.Backtick),
diff --git a/tests/examplefiles/perl_misc b/tests/examplefiles/perl_misc
new file mode 100644
index 00000000..e6dbfb28
--- /dev/null
+++ b/tests/examplefiles/perl_misc
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+
+# from http://gist.github.com/485595
+use strict;
+use warnings;
+use Time::HiRes 'usleep';
+
+for (1..5) {
+ open my $in, '<', '/proc/sys/kernel/random/entropy_avail' or die;
+ print <$in>;
+ close $in;
+ usleep 100_000;
+}
+
+# other miscellaneous tests of numbers separated by _
+#usleep 100_000;
+100_000_000;
+my $nichts = 0.005_006;
+print "$nichts\n";
+my $nichts2 = 0.005_006_007;
+print 900_800_700.005_006_007, $/;
+
+# numbers from `man 1 perlnumber`
+my $n;
+$n = 1234; # decimal integer
+$n = 0b1110011; # binary integer
+$n = 01234; # octal integer
+$n = 0x1234; # hexadecimal integer
+$n = 12.34e-56; # exponential notation
+$n = "-12.34e56"; # number specified as a string
+$n = "1234"; # number specified as a string
+
+# other numbers
+for (
+ -9876,
+ +8765,
+ -9876.02,
+ -9876.02e+10,
+ +765_432e30,
+ 2002.,
+ .2002,
+) {
+ print $_, "\n";
+}
+
+# operators on numbers
+for (
+ $n + 300,
+ $n - 300,
+ $n / 300 + 10,
+ $n * 250 / 2.0,
+ $n == 100,
+ $n != 100,
+ $n > 100,
+ $n >= 100,
+ $n < 100,
+ $n <= 100,
+ $n % 2,
+ abs $n,
+) {
+ print $_, "\n";
+}