diff --git a/magic/Magdir/c-lang b/magic/Magdir/c-lang
index 0665627..fdefa8c 100644
--- a/magic/Magdir/c-lang
+++ b/magic/Magdir/c-lang
@@ -6,26 +6,36 @@
# BCPL
0 search/8192 "libhdr" BCPL source text
!:mime text/x-bcpl
+!:strength / 2
0 search/8192 "LIBHDR" BCPL source text
!:mime text/x-bcpl
+!:strength / 2
# C
0 regex \^#include C source text
!:mime text/x-c
+!:strength / 2
0 regex \^char C source text
!:mime text/x-c
+!:strength / 2
0 regex \^double C source text
!:mime text/x-c
+!:strength / 2
0 regex \^extern C source text
!:mime text/x-c
+!:strength / 2
0 regex \^float C source text
!:mime text/x-c
+!:strength / 2
0 regex \^struct C source text
!:mime text/x-c
+!:strength / 2
0 regex \^union C source text
!:mime text/x-c
+!:strength / 2
0 search/8192 main( C source text
!:mime text/x-c
+!:strength / 2
# C++
# The strength of these rules is increased so they beat the C rules above
diff --git a/magic/Magdir/perl b/magic/Magdir/perl
index e11f2ab..b02b2c2 100644
--- a/magic/Magdir/perl
+++ b/magic/Magdir/perl
@@ -28,10 +28,14 @@
# check the first line
0 search/1 package
>0 regex \^package[\ \t]+[0-9A-Za-z_:]+\ *; Perl5 module source text
+# to be tried before C source
+!:strength + 5
# not 'p', check other lines
0 search/1 !p
>0 regex \^package[\ \t]+[0-9A-Za-z_:]+\ *;
>>0 regex \^1\ *;|\^(use|sub|my)\ .*[(;{=] Perl5 module source text
+# to be tried before C source
+!:strength + 40