---
name: "Text::Glob"
section: "3pm"
platform: "linux"
package: "perl-text-glob"
version: "0.11-14"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Text::Glob"
---

# Text::Glob(3pm)

match globbing patterns against text

## NAME

Text::Glob - match globbing patterns against text

## SYNOPSIS

```
 use Text::Glob qw( match_glob glob_to_regex );
 print "matched\n" if match_glob( "foo.*", "foo.bar" );
 # prints foo.bar and foo.baz
 my $regex = glob_to_regex( "foo.*" );
 for ( qw( foo.bar foo.baz foo bar ) ) {
     print "matched: $_\n" if /$regex/;
 }
```

## DESCRIPTION

Text::Glob implements [**glob**(3)](/glob/3.md) style matching that can be used to match against text, rather than fetching names from a filesystem.  If you want to do full file globbing use the File::Glob module instead.

### Routines

- match\_glob( $glob, @things\_to\_test )

  Returns the list of things which match the glob from the source list.

- glob\_to\_regex( $glob )

  Returns a compiled regex which is the equivalent of the globbing pattern.

- glob\_to\_regex\_string( $glob )

  Returns a regex string which is the equivalent of the globbing pattern.

## SYNTAX

The following metacharacters and rules are respected.

- "\*" - match zero or more characters

  `"a*"` matches `"a"`, `"aa"`, `"aaaa"` and many many more.

- "?" - match exactly one character

  `"a?"` matches `"aa"`, but not `"a"`, or `"aaa"`

- Character sets/ranges

  `"example.[ch]"` matches `"example.c"` and `"example.h"`

  `"demo.[a-c]"` matches `"demo.a"`, `"demo.b"`, and `"demo.c"`

- alternation

  `"example.{foo,bar,baz}"` matches `"example.foo"`, `"example.bar"`, and `"example.baz"`

- leading . must be explicitly matched

  `"*.foo"` does not match `".bar.foo"`.  For this you must either specify the leading . in the glob pattern (`".*.foo"`), or set `$Text::Glob::strict_leading_dot` to a false value while compiling the regex.

- "\*" and "?" do not match the seperator (i.e. do not match "/")

  `"*.foo"` does not match `"bar/baz.foo"`.  For this you must either explicitly match the / in the glob (`"*/*.foo"`), or set `$Text::Glob::strict_wildcard_slash` to a false value while compiling the regex, or change the seperator that Text::Glob uses by setting `$Text::Glob::seperator` to an alternative value while compiling the the regex.

## BUGS

The code uses qr// to produce compiled regexes, therefore this module requires perl version 5.005\_03 or newer.

## AUTHOR

Richard Clamp \<richardc@unixbeard.net\>

## COPYRIGHT

Copyright (C) 2002, 2003, 2006, 2007 Richard Clamp.  All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

## SEE ALSO

File::Glob, [**glob**(3)](/glob/3.md)
